Skip to content

Commit d944a87

Browse files
panvatargos
authored andcommitted
crypto: refactor subtle methods to use synchronous import
Refs: #59699 PR-URL: #59771 Refs: #59699 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Antoine du Hamel <[email protected]>
1 parent 8eb0d9d commit d944a87

File tree

1 file changed

+50
-39
lines changed

1 file changed

+50
-39
lines changed

‎lib/internal/crypto/webcrypto.js‎

Lines changed: 50 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ async function deriveKey(
378378
}
379379

380380
returnReflectApply(
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-
asyncfunctionimportKey(
738-
format,
739-
keyData,
740-
algorithm,
741-
extractable,
742-
keyUsages){
743-
if(this!==subtle)thrownewERR_INVALID_THIS('SubtleCrypto');
744-
745-
webidl??=require('internal/crypto/webidl');
746-
constprefix="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-
consttype=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+
functionimportKeySync(format,keyData,algorithm,extractable,keyUsages){
771738
letresult;
772739
switch(algorithm.name){
773740
case'RSASSA-PKCS1-v1_5':
@@ -879,6 +846,48 @@ async function importKey(
879846
returnresult;
880847
}
881848

849+
asyncfunctionimportKey(
850+
format,
851+
keyData,
852+
algorithm,
853+
extractable,
854+
keyUsages){
855+
if(this!==subtle)thrownewERR_INVALID_THIS('SubtleCrypto');
856+
857+
webidl??=require('internal/crypto/webidl');
858+
constprefix="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+
consttype=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+
returnReflectApply(
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().
884893
asyncfunctionwrapKey(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
letkeyData=awaitcipherOrWrap(
9891000
kWebCryptoCipherDecrypt,
9901001
unwrapAlgo,
@@ -1005,7 +1016,7 @@ async function unwrapKey(
10051016
}
10061017

10071018
returnReflectApply(
1008-
importKey,
1019+
importKeySync,
10091020
this,
10101021
[format,keyData,unwrappedKeyAlgo,extractable,keyUsages],
10111022
);
@@ -1318,8 +1329,8 @@ async function encapsulateKey(encapsulationAlgorithm, encapsulationKey, sharedKe
13181329
throwlazyDOMException('Unrecognized algorithm name','NotSupportedError');
13191330
}
13201331

1321-
constsharedKey=awaitReflectApply(
1322-
importKey,
1332+
constsharedKey=ReflectApply(
1333+
importKeySync,
13231334
this,
13241335
['raw-secret',encapsulateBits.sharedKey,normalizedSharedKeyAlgorithm,extractable,usages],
13251336
);
@@ -1439,7 +1450,7 @@ async function decapsulateKey(
14391450
}
14401451

14411452
returnReflectApply(
1442-
importKey,
1453+
importKeySync,
14431454
this,
14441455
['raw-secret',decapsulatedBits,normalizedSharedKeyAlgorithm,extractable,usages],
14451456
);

0 commit comments

Comments
(0)