@@ -363,9 +363,9 @@ function parsePublicKey(input) {
363
363
}
364
364
}
365
365
}
366
- async function importPublicKey ( key , keyUsages = [ "verify" ] , defaults = defaultSignInfoDefaults ) {
366
+ async function importPublicKey ( key , keyUsages = [ "verify" ] , defaults = defaultSignInfoDefaults , extractable = false ) {
367
367
const parsedPublicKey = parsePublicKey ( key ) ;
368
- return await ( await getWebcrypto ( ) ) . subtle . importKey ( "spki" , parsedPublicKey . der , genSignInfo ( parsedPublicKey , defaults ) , false , keyUsages ) ;
368
+ return await ( await getWebcrypto ( ) ) . subtle . importKey ( "spki" , parsedPublicKey . der , genSignInfo ( parsedPublicKey , defaults ) , extractable , keyUsages ) ;
369
369
}
370
370
async function parseAndImportPublicKey ( source , keyUsages = [ "verify" ] , providedAlgorithm , errorLogger ) {
371
371
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) {
514
514
attributesRaw : attributes ? asn1ToArrayBuffer ( attributes ) : null
515
515
} ;
516
516
}
517
- async function importPrivateKey ( key , keyUsages = [ "sign" ] , defaults = defaultSignInfoDefaults ) {
517
+ async function importPrivateKey ( key , keyUsages = [ "sign" ] , defaults = defaultSignInfoDefaults , extractable = false ) {
518
518
const parsedPrivateKey = parsePkcs8 ( key ) ;
519
519
const importParams = genSignInfo ( parsedPrivateKey , defaults ) ;
520
- return await ( await getWebcrypto ( ) ) . subtle . importKey ( "pkcs8" , parsedPrivateKey . der , importParams , true , keyUsages ) ;
520
+ return await ( await getWebcrypto ( ) ) . subtle . importKey ( "pkcs8" , parsedPrivateKey . der , importParams , extractable , keyUsages ) ;
521
521
}
522
522
523
523
// src/draft/sign.ts
@@ -575,7 +575,7 @@ function genDraftSigningString(request, includeHeaders, additional) {
575
575
return results . join ( "\n" ) ;
576
576
}
577
577
async function genDraftSignature ( privateKey , signingString , defaults = defaultSignInfoDefaults ) {
578
- const signatureAB = await ( await getWebcrypto ( ) ) . subtle . sign ( genAlgorithmForSignAndVerify ( privateKey . algorithm , defaults ) , privateKey , new TextEncoder ( ) . encode ( signingString ) ) ;
578
+ const signatureAB = await ( await getWebcrypto ( ) ) . subtle . sign ( genAlgorithmForSignAndVerify ( privateKey . algorithm , defaults . hash ) , privateKey , new TextEncoder ( ) . encode ( signingString ) ) ;
579
579
return encodeArrayBufferToBase64 ( signatureAB ) ;
580
580
}
581
581
function genDraftSignatureHeader ( includeHeaders , keyId , signature , algorithm ) {
0 commit comments