3
3
4
4
#include "tomcrypt_private.h"
5
5
6
- #if defined(LTC_MECC ) && defined(LTC_DER )
7
-
8
- #ifdef LTC_ECC_SHAMIR
6
+ #if defined(LTC_MECC ) && defined(LTC_ECC_SHAMIR )
9
7
10
8
/**
11
9
@file ecc_recover_key.c
@@ -67,14 +65,7 @@ int ecc_recover_key(const unsigned char *sig, unsigned long siglen,
67
65
goto error ;
68
66
}
69
67
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 ) {
78
69
/* RFC7518 format - raw (r,s) */
79
70
i = ltc_mp_unsigned_bin_size (key -> dp .order );
80
71
if (siglen != (2 * i )) {
@@ -105,6 +96,15 @@ int ecc_recover_key(const unsigned char *sig, unsigned long siglen,
105
96
if ((err = ltc_mp_read_unsigned_bin (r , sig , 32 )) != CRYPT_OK ) { goto error ; }
106
97
if ((err = ltc_mp_read_unsigned_bin (s , sig + 32 , 32 )) != CRYPT_OK ) { goto error ; }
107
98
}
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
108
108
#ifdef LTC_SSH
109
109
else if (sigformat == LTC_ECCSIG_RFC5656 ) {
110
110
char name [64 ], name2 [64 ];
@@ -116,7 +116,7 @@ int ecc_recover_key(const unsigned char *sig, unsigned long siglen,
116
116
LTC_SSHDATA_STRING , name , & namelen ,
117
117
LTC_SSHDATA_MPINT , r ,
118
118
LTC_SSHDATA_MPINT , s ,
119
- LTC_SSHDATA_EOL , NULL )) != CRYPT_OK ) { goto error ; }
119
+ LTC_SSHDATA_EOL , LTC_NULL )) != CRYPT_OK ) { goto error ; }
120
120
121
121
122
122
/* Check curve matches identifier string */
@@ -257,4 +257,3 @@ int ecc_recover_key(const unsigned char *sig, unsigned long siglen,
257
257
}
258
258
259
259
#endif
260
- #endif
0 commit comments