From 6649179a06daae4bb410fd8999a6627e42eb1bc7 Mon Sep 17 00:00:00 2001 From: tamaina Date: Wed, 6 Mar 2024 06:33:13 +0000 Subject: [PATCH] 0.0.5 build --- dist/index.cjs | 10 +++++----- dist/index.mjs | 10 +++++----- dist/pem/pkcs8.d.ts | 2 +- dist/pem/spki.d.ts | 2 +- package.json | 2 +- test/performance/draft.js | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/dist/index.cjs b/dist/index.cjs index 4dbfc61..cd1af16 100644 --- a/dist/index.cjs +++ b/dist/index.cjs @@ -363,9 +363,9 @@ function parsePublicKey(input) { } } } -async function importPublicKey(key, keyUsages = ["verify"], defaults = defaultSignInfoDefaults) { +async function importPublicKey(key, keyUsages = ["verify"], defaults = defaultSignInfoDefaults, extractable = false) { const parsedPublicKey = parsePublicKey(key); - return await (await getWebcrypto()).subtle.importKey("spki", parsedPublicKey.der, genSignInfo(parsedPublicKey, defaults), false, keyUsages); + return await (await getWebcrypto()).subtle.importKey("spki", parsedPublicKey.der, genSignInfo(parsedPublicKey, defaults), extractable, keyUsages); } async function parseAndImportPublicKey(source, keyUsages = ["verify"], providedAlgorithm, errorLogger) { if (typeof source === "string" || typeof source === "object" && !("type" in source) && (source instanceof Uint8Array || source instanceof ArrayBuffer || Array.isArray(source) || "enc" in source)) { @@ -514,10 +514,10 @@ function parsePkcs8(input) { attributesRaw: attributes ? asn1ToArrayBuffer(attributes) : null }; } -async function importPrivateKey(key, keyUsages = ["sign"], defaults = defaultSignInfoDefaults) { +async function importPrivateKey(key, keyUsages = ["sign"], defaults = defaultSignInfoDefaults, extractable = false) { const parsedPrivateKey = parsePkcs8(key); const importParams = genSignInfo(parsedPrivateKey, defaults); - return await (await getWebcrypto()).subtle.importKey("pkcs8", parsedPrivateKey.der, importParams, true, keyUsages); + return await (await getWebcrypto()).subtle.importKey("pkcs8", parsedPrivateKey.der, importParams, extractable, keyUsages); } // src/draft/sign.ts @@ -575,7 +575,7 @@ function genDraftSigningString(request, includeHeaders, additional) { return results.join("\n"); } async function genDraftSignature(privateKey, signingString, defaults = defaultSignInfoDefaults) { - const signatureAB = await (await getWebcrypto()).subtle.sign(genAlgorithmForSignAndVerify(privateKey.algorithm, defaults), privateKey, new TextEncoder().encode(signingString)); + const signatureAB = await (await getWebcrypto()).subtle.sign(genAlgorithmForSignAndVerify(privateKey.algorithm, defaults.hash), privateKey, new TextEncoder().encode(signingString)); return encodeArrayBufferToBase64(signatureAB); } function genDraftSignatureHeader(includeHeaders, keyId, signature, algorithm) { diff --git a/dist/index.mjs b/dist/index.mjs index f8f362a..3a81e19 100644 --- a/dist/index.mjs +++ b/dist/index.mjs @@ -261,9 +261,9 @@ function parsePublicKey(input) { } } } -async function importPublicKey(key, keyUsages = ["verify"], defaults = defaultSignInfoDefaults) { +async function importPublicKey(key, keyUsages = ["verify"], defaults = defaultSignInfoDefaults, extractable = false) { const parsedPublicKey = parsePublicKey(key); - return await (await getWebcrypto()).subtle.importKey("spki", parsedPublicKey.der, genSignInfo(parsedPublicKey, defaults), false, keyUsages); + return await (await getWebcrypto()).subtle.importKey("spki", parsedPublicKey.der, genSignInfo(parsedPublicKey, defaults), extractable, keyUsages); } async function parseAndImportPublicKey(source, keyUsages = ["verify"], providedAlgorithm, errorLogger) { if (typeof source === "string" || typeof source === "object" && !("type" in source) && (source instanceof Uint8Array || source instanceof ArrayBuffer || Array.isArray(source) || "enc" in source)) { @@ -412,10 +412,10 @@ function parsePkcs8(input) { attributesRaw: attributes ? asn1ToArrayBuffer(attributes) : null }; } -async function importPrivateKey(key, keyUsages = ["sign"], defaults = defaultSignInfoDefaults) { +async function importPrivateKey(key, keyUsages = ["sign"], defaults = defaultSignInfoDefaults, extractable = false) { const parsedPrivateKey = parsePkcs8(key); const importParams = genSignInfo(parsedPrivateKey, defaults); - return await (await getWebcrypto()).subtle.importKey("pkcs8", parsedPrivateKey.der, importParams, true, keyUsages); + return await (await getWebcrypto()).subtle.importKey("pkcs8", parsedPrivateKey.der, importParams, extractable, keyUsages); } // src/draft/sign.ts @@ -473,7 +473,7 @@ function genDraftSigningString(request, includeHeaders, additional) { return results.join("\n"); } async function genDraftSignature(privateKey, signingString, defaults = defaultSignInfoDefaults) { - const signatureAB = await (await getWebcrypto()).subtle.sign(genAlgorithmForSignAndVerify(privateKey.algorithm, defaults), privateKey, new TextEncoder().encode(signingString)); + const signatureAB = await (await getWebcrypto()).subtle.sign(genAlgorithmForSignAndVerify(privateKey.algorithm, defaults.hash), privateKey, new TextEncoder().encode(signingString)); return encodeArrayBufferToBase64(signatureAB); } function genDraftSignatureHeader(includeHeaders, keyId, signature, algorithm) { diff --git a/dist/pem/pkcs8.d.ts b/dist/pem/pkcs8.d.ts index 2229454..f1d8393 100644 --- a/dist/pem/pkcs8.d.ts +++ b/dist/pem/pkcs8.d.ts @@ -37,4 +37,4 @@ export declare function parsePkcs8(input: ASN1.StreamOrBinary): ParsedPkcs8; * @param defaults * @returns CryptoKey */ -export declare function importPrivateKey(key: ASN1.StreamOrBinary, keyUsages?: webcrypto.KeyUsage[], defaults?: SignInfoDefaults): Promise; +export declare function importPrivateKey(key: ASN1.StreamOrBinary, keyUsages?: webcrypto.KeyUsage[], defaults?: SignInfoDefaults, extractable?: boolean): Promise; diff --git a/dist/pem/spki.d.ts b/dist/pem/spki.d.ts index 0e9ebbc..3ff3422 100644 --- a/dist/pem/spki.d.ts +++ b/dist/pem/spki.d.ts @@ -101,7 +101,7 @@ export declare function parsePublicKey(input: ASN1.StreamOrBinary): SpkiParsedAl * @param defaults * @returns CryptoKey */ -export declare function importPublicKey(key: ASN1.StreamOrBinary, keyUsages?: webcrypto.KeyUsage[], defaults?: SignInfoDefaults): Promise; +export declare function importPublicKey(key: ASN1.StreamOrBinary, keyUsages?: webcrypto.KeyUsage[], defaults?: SignInfoDefaults, extractable?: boolean): Promise; /** * Prepare public key for verification * @param source PEM, DER or CryptoKey diff --git a/package.json b/package.json index 10c6379..2605047 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@misskey-dev/node-http-message-signatures", - "version": "0.0.4", + "version": "0.0.5", "description": "", "type": "module", "engines": { diff --git a/test/performance/draft.js b/test/performance/draft.js index be2c754..413f76e 100644 --- a/test/performance/draft.js +++ b/test/performance/draft.js @@ -2,7 +2,7 @@ import { signAsDraftToRequest, parseRequestSignature, genRFC3230DigestHeader, ve import { rsa4096, prime256v1, ed25519, ed448 } from '../keys.js'; import httpSignature from '@peertube/http-signature'; -const TRYES = 1; +const TRYES = 1600; const getBasicOutgoingRequest = () => ({ headers: {