@@ -378,7 +378,7 @@ async function deriveKey(
378378 }
379379
380380 return ReflectApply (
381- importKey ,
381+ importKeySync ,
382382 this ,
383383 [ 'raw-secret' , bits , derivedKeyAlgorithm , extractable , keyUsages ] ,
384384 ) ;
@@ -734,40 +734,7 @@ function aliasKeyFormat(format) {
734734 }
735735}
736736
737- async function importKey (
738- format ,
739- keyData ,
740- algorithm ,
741- extractable ,
742- keyUsages ) {
743- if ( this !== subtle ) throw new ERR_INVALID_THIS ( 'SubtleCrypto' ) ;
744-
745- webidl ??= require ( 'internal/crypto/webidl' ) ;
746- const prefix = "Failed to execute 'importKey' on 'SubtleCrypto'" ;
747- webidl . requiredArguments ( arguments . length , 4 , { prefix } ) ;
748- format = webidl . converters . KeyFormat ( format , {
749- prefix,
750- context : '1st argument' ,
751- } ) ;
752- const type = format === 'jwk' ? 'JsonWebKey' : 'BufferSource' ;
753- keyData = webidl . converters [ type ] ( keyData , {
754- prefix,
755- context : '2nd argument' ,
756- } ) ;
757- algorithm = webidl . converters . AlgorithmIdentifier ( algorithm , {
758- prefix,
759- context : '3rd argument' ,
760- } ) ;
761- extractable = webidl . converters . boolean ( extractable , {
762- prefix,
763- context : '4th argument' ,
764- } ) ;
765- keyUsages = webidl . converters [ 'sequence<KeyUsage>' ] ( keyUsages , {
766- prefix,
767- context : '5th argument' ,
768- } ) ;
769-
770- algorithm = normalizeAlgorithm ( algorithm , 'importKey' ) ;
737+ function importKeySync ( format , keyData , algorithm , extractable , keyUsages ) {
771738 let result ;
772739 switch ( algorithm . name ) {
773740 case 'RSASSA-PKCS1-v1_5' :
@@ -879,6 +846,48 @@ async function importKey(
879846 return result ;
880847}
881848
849+ async function importKey (
850+ format ,
851+ keyData ,
852+ algorithm ,
853+ extractable ,
854+ keyUsages ) {
855+ if ( this !== subtle ) throw new ERR_INVALID_THIS ( 'SubtleCrypto' ) ;
856+
857+ webidl ??= require ( 'internal/crypto/webidl' ) ;
858+ const prefix = "Failed to execute 'importKey' on 'SubtleCrypto'" ;
859+ webidl . requiredArguments ( arguments . length , 4 , { prefix } ) ;
860+ format = webidl . converters . KeyFormat ( format , {
861+ prefix,
862+ context : '1st argument' ,
863+ } ) ;
864+ const type = format === 'jwk' ? 'JsonWebKey' : 'BufferSource' ;
865+ keyData = webidl . converters [ type ] ( keyData , {
866+ prefix,
867+ context : '2nd argument' ,
868+ } ) ;
869+ algorithm = webidl . converters . AlgorithmIdentifier ( algorithm , {
870+ prefix,
871+ context : '3rd argument' ,
872+ } ) ;
873+ extractable = webidl . converters . boolean ( extractable , {
874+ prefix,
875+ context : '4th argument' ,
876+ } ) ;
877+ keyUsages = webidl . converters [ 'sequence<KeyUsage>' ] ( keyUsages , {
878+ prefix,
879+ context : '5th argument' ,
880+ } ) ;
881+
882+ algorithm = normalizeAlgorithm ( algorithm , 'importKey' ) ;
883+
884+ return ReflectApply (
885+ importKeySync ,
886+ this ,
887+ [ format , keyData , algorithm , extractable , keyUsages ] ,
888+ ) ;
889+ }
890+
882891// subtle.wrapKey() is essentially a subtle.exportKey() followed
883892// by a subtle.encrypt().
884893async function wrapKey ( format , key , wrappingKey , algorithm ) {
@@ -985,6 +994,8 @@ async function unwrapKey(
985994 unwrapAlgo = normalizeAlgorithm ( unwrapAlgo , 'decrypt' ) ;
986995 }
987996
997+ unwrappedKeyAlgo = normalizeAlgorithm ( unwrappedKeyAlgo , 'importKey' ) ;
998+
988999 let keyData = await cipherOrWrap (
9891000 kWebCryptoCipherDecrypt ,
9901001 unwrapAlgo ,
@@ -1005,7 +1016,7 @@ async function unwrapKey(
10051016 }
10061017
10071018 return ReflectApply (
1008- importKey ,
1019+ importKeySync ,
10091020 this ,
10101021 [ format , keyData , unwrappedKeyAlgo , extractable , keyUsages ] ,
10111022 ) ;
@@ -1318,8 +1329,8 @@ async function encapsulateKey(encapsulationAlgorithm, encapsulationKey, sharedKe
13181329 throw lazyDOMException ( 'Unrecognized algorithm name' , 'NotSupportedError' ) ;
13191330 }
13201331
1321- const sharedKey = await ReflectApply (
1322- importKey ,
1332+ const sharedKey = ReflectApply (
1333+ importKeySync ,
13231334 this ,
13241335 [ 'raw-secret' , encapsulateBits . sharedKey , normalizedSharedKeyAlgorithm , extractable , usages ] ,
13251336 ) ;
@@ -1439,7 +1450,7 @@ async function decapsulateKey(
14391450 }
14401451
14411452 return ReflectApply (
1442- importKey ,
1453+ importKeySync ,
14431454 this ,
14441455 [ 'raw-secret' , decapsulatedBits , normalizedSharedKeyAlgorithm , extractable , usages ] ,
14451456 ) ;
0 commit comments