@@ -738,19 +738,25 @@ bool SignTraits::DeriveBits(
738
738
size_t len;
739
739
unsigned char * data = nullptr ;
740
740
if (IsOneShot (params.key )) {
741
- EVP_DigestSign (
741
+ if (! EVP_DigestSign (
742
742
context.get (),
743
743
nullptr ,
744
744
&len,
745
745
params.data .data <unsigned char >(),
746
- params.data .size ());
746
+ params.data .size ())) {
747
+ crypto::CheckThrow (env, SignBase::Error::kSignPrivateKey );
748
+ return false ;
749
+ }
747
750
data = MallocOpenSSL<unsigned char >(len);
748
- EVP_DigestSign (
751
+ if (! EVP_DigestSign (
749
752
context.get (),
750
753
data,
751
754
&len,
752
755
params.data .data <unsigned char >(),
753
- params.data .size ());
756
+ params.data .size ())) {
757
+ crypto::CheckThrow (env, SignBase::Error::kSignPrivateKey );
758
+ return false ;
759
+ }
754
760
ByteSource buf =
755
761
ByteSource::Allocated (reinterpret_cast <char *>(data), len);
756
762
*out = std::move (buf);
@@ -760,13 +766,16 @@ bool SignTraits::DeriveBits(
760
766
params.data .data <unsigned char >(),
761
767
params.data .size ()) ||
762
768
!EVP_DigestSignFinal (context.get (), nullptr , &len)) {
769
+ crypto::CheckThrow (env, SignBase::Error::kSignPrivateKey );
763
770
return false ;
764
771
}
765
772
data = MallocOpenSSL<unsigned char >(len);
766
773
ByteSource buf =
767
774
ByteSource::Allocated (reinterpret_cast <char *>(data), len);
768
- if (!EVP_DigestSignFinal (context.get (), data, &len))
775
+ if (!EVP_DigestSignFinal (context.get (), data, &len)) {
776
+ crypto::CheckThrow (env, SignBase::Error::kSignPrivateKey );
769
777
return false ;
778
+ }
770
779
771
780
if (UseP1363Encoding (params.key , params.dsa_encoding )) {
772
781
*out = ConvertSignatureToP1363 (env, params.key , buf);
0 commit comments