@@ -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 );
@@ -527,14 +530,18 @@ SignBase::Error Verify::VerifyFinal(const ManagedEVPPKey& pkey,
527
530
return kSignPublicKey ;
528
531
529
532
EVPKeyCtxPointer pkctx (EVP_PKEY_CTX_new (pkey.get (), nullptr ));
530
- if (pkctx &&
531
- EVP_PKEY_verify_init (pkctx.get ()) > 0 &&
532
- ApplyRSAOptions (pkey, pkctx.get (), padding, saltlen) &&
533
- EVP_PKEY_CTX_set_signature_md (pkctx.get (),
534
- EVP_MD_CTX_md (mdctx.get ())) > 0 ) {
535
- const unsigned char * s = sig.data <unsigned char >();
536
- const int r = EVP_PKEY_verify (pkctx.get (), s, sig.size (), m, m_len);
537
- *verify_result = r == 1 ;
533
+ if (pkctx) {
534
+ const int init_ret = EVP_PKEY_verify_init (pkctx.get ());
535
+ if (init_ret == -2 ) {
536
+ return kSignPublicKey ;
537
+ }
538
+ if (init_ret > 0 && ApplyRSAOptions (pkey, pkctx.get (), padding, saltlen) &&
539
+ EVP_PKEY_CTX_set_signature_md (pkctx.get (), EVP_MD_CTX_md (mdctx.get ())) >
540
+ 0 ) {
541
+ const unsigned char * s = sig.data <unsigned char >();
542
+ const int r = EVP_PKEY_verify (pkctx.get (), s, sig.size (), m, m_len);
543
+ *verify_result = r == 1 ;
544
+ }
538
545
}
539
546
540
547
return kSignOk ;
0 commit comments