File tree Expand file tree Collapse file tree 2 files changed +30
-0
lines changed Expand file tree Collapse file tree 2 files changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -423,6 +423,11 @@ void Sign::SignFinal(const FunctionCallbackInfo<Value>& args) {
423423 if (!key)
424424 return ;
425425
426+ if (IsOneShot (key)) {
427+ THROW_ERR_CRYPTO_UNSUPPORTED_OPERATION (env);
428+ return ;
429+ }
430+
426431 int padding = GetDefaultSignPadding (key);
427432 if (!args[offset]->IsUndefined ()) {
428433 CHECK (args[offset]->IsInt32 ());
@@ -548,6 +553,11 @@ void Verify::VerifyFinal(const FunctionCallbackInfo<Value>& args) {
548553 if (!pkey)
549554 return ;
550555
556+ if (IsOneShot (pkey)) {
557+ THROW_ERR_CRYPTO_UNSUPPORTED_OPERATION (env);
558+ return ;
559+ }
560+
551561 ArrayBufferOrViewContents<char > hbuf (args[offset]);
552562 if (UNLIKELY (!hbuf.CheckSizeInt32 ()))
553563 return THROW_ERR_OUT_OF_RANGE (env, " buffer is too big" );
Original file line number Diff line number Diff line change @@ -773,3 +773,23 @@ assert.throws(
773773 } , { code : 'ERR_INVALID_ARG_TYPE' , message : / T h e " k e y \. k e y " p r o p e r t y m u s t b e o f t y p e o b j e c t / } ) ;
774774 }
775775}
776+
777+ {
778+ // Ed25519 and Ed448 must use the one-shot methods
779+ const keys = [ { privateKey : fixtures . readKey ( 'ed25519_private.pem' , 'ascii' ) ,
780+ publicKey : fixtures . readKey ( 'ed25519_public.pem' , 'ascii' ) } ,
781+ { privateKey : fixtures . readKey ( 'ed448_private.pem' , 'ascii' ) ,
782+ publicKey : fixtures . readKey ( 'ed448_public.pem' , 'ascii' ) } ] ;
783+
784+ for ( const { publicKey, privateKey } of keys ) {
785+ assert . throws ( ( ) => {
786+ crypto . createSign ( 'SHA256' ) . update ( 'Test123' ) . sign ( privateKey ) ;
787+ } , { code : 'ERR_CRYPTO_UNSUPPORTED_OPERATION' , message : 'Unsupported crypto operation' } ) ;
788+ assert . throws ( ( ) => {
789+ crypto . createVerify ( 'SHA256' ) . update ( 'Test123' ) . verify ( privateKey , 'sig' ) ;
790+ } , { code : 'ERR_CRYPTO_UNSUPPORTED_OPERATION' , message : 'Unsupported crypto operation' } ) ;
791+ assert . throws ( ( ) => {
792+ crypto . createVerify ( 'SHA256' ) . update ( 'Test123' ) . verify ( publicKey , 'sig' ) ;
793+ } , { code : 'ERR_CRYPTO_UNSUPPORTED_OPERATION' , message : 'Unsupported crypto operation' } ) ;
794+ }
795+ }
You can’t perform that action at this time.
0 commit comments