@@ -92,12 +92,15 @@ std::unique_ptr<BackingStore> Node_SignFinal(Environment* env,
92
92
sig = ArrayBuffer::NewBackingStore (env->isolate (), sig_len);
93
93
}
94
94
EVPKeyCtxPointer pkctx (EVP_PKEY_CTX_new (pkey.get (), nullptr ));
95
- if (pkctx &&
96
- EVP_PKEY_sign_init (pkctx.get ()) &&
95
+ if (pkctx && EVP_PKEY_sign_init (pkctx.get ()) > 0 &&
97
96
ApplyRSAOptions (pkey, pkctx.get (), padding, pss_salt_len) &&
98
- EVP_PKEY_CTX_set_signature_md (pkctx.get (), EVP_MD_CTX_md (mdctx.get ())) &&
99
- EVP_PKEY_sign (pkctx.get (), static_cast <unsigned char *>(sig->Data ()),
100
- &sig_len, m, m_len)) {
97
+ EVP_PKEY_CTX_set_signature_md (pkctx.get (), EVP_MD_CTX_md (mdctx.get ())) >
98
+ 0 &&
99
+ EVP_PKEY_sign (pkctx.get (),
100
+ static_cast <unsigned char *>(sig->Data ()),
101
+ &sig_len,
102
+ m,
103
+ m_len) > 0 ) {
101
104
CHECK_LE (sig_len, sig->ByteLength ());
102
105
if (sig_len == 0 )
103
106
sig = ArrayBuffer::NewBackingStore (env->isolate (), 0 );
@@ -526,14 +529,18 @@ SignBase::Error Verify::VerifyFinal(const ManagedEVPPKey& pkey,
526
529
return kSignPublicKey ;
527
530
528
531
EVPKeyCtxPointer pkctx (EVP_PKEY_CTX_new (pkey.get (), nullptr ));
529
- if (pkctx &&
530
- EVP_PKEY_verify_init (pkctx.get ()) > 0 &&
531
- ApplyRSAOptions (pkey, pkctx.get (), padding, saltlen) &&
532
- EVP_PKEY_CTX_set_signature_md (pkctx.get (),
533
- EVP_MD_CTX_md (mdctx.get ())) > 0 ) {
534
- const unsigned char * s = sig.data <unsigned char >();
535
- const int r = EVP_PKEY_verify (pkctx.get (), s, sig.size (), m, m_len);
536
- *verify_result = r == 1 ;
532
+ if (pkctx) {
533
+ const int init_ret = EVP_PKEY_verify_init (pkctx.get ());
534
+ if (init_ret == -2 ) {
535
+ return kSignPublicKey ;
536
+ }
537
+ if (init_ret > 0 && ApplyRSAOptions (pkey, pkctx.get (), padding, saltlen) &&
538
+ EVP_PKEY_CTX_set_signature_md (pkctx.get (), EVP_MD_CTX_md (mdctx.get ())) >
539
+ 0 ) {
540
+ const unsigned char * s = sig.data <unsigned char >();
541
+ const int r = EVP_PKEY_verify (pkctx.get (), s, sig.size (), m, m_len);
542
+ *verify_result = r == 1 ;
543
+ }
537
544
}
538
545
539
546
return kSignOk ;
0 commit comments