33
44#include "tomcrypt_private.h"
55
6- #if defined(LTC_MECC ) && defined(LTC_DER )
7-
8- #ifdef LTC_ECC_SHAMIR
6+ #if defined(LTC_MECC ) && defined(LTC_ECC_SHAMIR )
97
108/**
119 @file ecc_recover_key.c
@@ -67,14 +65,7 @@ int ecc_recover_key(const unsigned char *sig, unsigned long siglen,
6765 goto error ;
6866 }
6967
70- if (sigformat == LTC_ECCSIG_ANSIX962 ) {
71- /* ANSI X9.62 format - ASN.1 encoded SEQUENCE{ INTEGER(r), INTEGER(s) } */
72- if ((err = der_decode_sequence_multi_ex (sig , siglen , LTC_DER_SEQ_SEQUENCE | LTC_DER_SEQ_STRICT ,
73- LTC_ASN1_INTEGER , 1UL , r ,
74- LTC_ASN1_INTEGER , 1UL , s ,
75- LTC_ASN1_EOL , 0UL , LTC_NULL )) != CRYPT_OK ) { goto error ; }
76- }
77- else if (sigformat == LTC_ECCSIG_RFC7518 ) {
68+ if (sigformat == LTC_ECCSIG_RFC7518 ) {
7869 /* RFC7518 format - raw (r,s) */
7970 i = ltc_mp_unsigned_bin_size (key -> dp .order );
8071 if (siglen != (2 * i )) {
@@ -105,6 +96,15 @@ int ecc_recover_key(const unsigned char *sig, unsigned long siglen,
10596 if ((err = ltc_mp_read_unsigned_bin (r , sig , 32 )) != CRYPT_OK ) { goto error ; }
10697 if ((err = ltc_mp_read_unsigned_bin (s , sig + 32 , 32 )) != CRYPT_OK ) { goto error ; }
10798 }
99+ #ifdef LTC_DER
100+ else if (sigformat == LTC_ECCSIG_ANSIX962 ) {
101+ /* ANSI X9.62 format - ASN.1 encoded SEQUENCE{ INTEGER(r), INTEGER(s) } */
102+ if ((err = der_decode_sequence_multi_ex (sig , siglen , LTC_DER_SEQ_SEQUENCE | LTC_DER_SEQ_STRICT ,
103+ LTC_ASN1_INTEGER , 1UL , r ,
104+ LTC_ASN1_INTEGER , 1UL , s ,
105+ LTC_ASN1_EOL , 0UL , LTC_NULL )) != CRYPT_OK ) { goto error ; }
106+ }
107+ #endif
108108#ifdef LTC_SSH
109109 else if (sigformat == LTC_ECCSIG_RFC5656 ) {
110110 char name [64 ], name2 [64 ];
@@ -116,7 +116,7 @@ int ecc_recover_key(const unsigned char *sig, unsigned long siglen,
116116 LTC_SSHDATA_STRING , name , & namelen ,
117117 LTC_SSHDATA_MPINT , r ,
118118 LTC_SSHDATA_MPINT , s ,
119- LTC_SSHDATA_EOL , NULL )) != CRYPT_OK ) { goto error ; }
119+ LTC_SSHDATA_EOL , LTC_NULL )) != CRYPT_OK ) { goto error ; }
120120
121121
122122 /* Check curve matches identifier string */
@@ -257,4 +257,3 @@ int ecc_recover_key(const unsigned char *sig, unsigned long siglen,
257257}
258258
259259#endif
260- #endif
0 commit comments