@@ -41,45 +41,6 @@ static int s_decrypt_pem(unsigned char *asn1_cert, unsigned long *asn1_len, cons
4141 return err ;
4242}
4343
44- typedef int (* import_fn )(const unsigned char * , unsigned long , void * );
45-
46- static const import_fn s_import_x509_fns [LTC_PKA_NUM ] = {
47- #ifdef LTC_MRSA
48- [LTC_PKA_RSA ] = (import_fn )rsa_import_x509 ,
49- #endif
50- #ifdef LTC_MECC
51- [LTC_PKA_EC ] = (import_fn )ecc_import_x509 ,
52- #endif
53- #ifdef LTC_CURVE25519
54- [LTC_PKA_X25519 ] = (import_fn )x25519_import_x509 ,
55- [LTC_PKA_ED25519 ] = (import_fn )ed25519_import_x509 ,
56- #endif
57- };
58-
59- static int s_import_x509 (unsigned char * asn1_cert , unsigned long asn1_len , ltc_pka_key * k )
60- {
61- enum ltc_pka_id pka = LTC_PKA_UNDEF ;
62- ltc_asn1_list * d , * spki ;
63- int err ;
64- if ((err = x509_decode_spki (asn1_cert , asn1_len , & d , & spki )) != CRYPT_OK ) {
65- return err ;
66- }
67- err = x509_get_pka (spki , & pka );
68- der_free_sequence_flexi (d );
69- if (err != CRYPT_OK ) {
70- return err ;
71- }
72- if (pka < 0
73- || pka > LTC_ARRAY_SIZE (s_import_x509_fns )
74- || s_import_x509_fns [pka ] == NULL ) {
75- return CRYPT_PK_INVALID_TYPE ;
76- }
77- if ((err = s_import_x509_fns [pka ](asn1_cert , asn1_len , & k -> u )) == CRYPT_OK ) {
78- k -> id = pka ;
79- }
80- return err ;
81- }
82-
8344static int s_import_pkcs8 (unsigned char * asn1_cert , unsigned long asn1_len , ltc_pka_key * k , const password_ctx * pw_ctx )
8445{
8546 int err ;
@@ -198,7 +159,7 @@ static int s_decode(struct get_char *g, ltc_pka_key *k, const password_ctx *pw_c
198159 err = s_import_pkcs8 (asn1_cert , asn1_len , k , pw_ctx );
199160 goto cleanup ;
200161 } else if (hdr .id -> flags == pf_x509 ) {
201- err = s_import_x509 (asn1_cert , asn1_len , k );
162+ err = x509_import_spki (asn1_cert , asn1_len , k , NULL );
202163 goto cleanup ;
203164 } else if ((hdr .id -> flags & pf_public ) && hdr .id -> pka == LTC_PKA_UNDEF ) {
204165 if ((err = s_extract_pka (asn1_cert , asn1_len , & pka )) != CRYPT_OK ) {
0 commit comments