@@ -11,26 +11,64 @@ typedef struct {
1111} oid_table_entry ;
1212
1313static const oid_table_entry pka_oids [] = {
14+ { LTC_OID_UNDEF , LTC_PKA_UNDEF , NULL },
1415 { LTC_OID_RSA , LTC_PKA_RSA , "1.2.840.113549.1.1.1" },
1516 { LTC_OID_DSA , LTC_PKA_DSA , "1.2.840.10040.4.1" },
1617 { LTC_OID_EC , LTC_PKA_EC , "1.2.840.10045.2.1" },
1718 { LTC_OID_EC_PRIMEF , LTC_PKA_EC , "1.2.840.10045.1.1" },
18- { LTC_OID_X25519 , LTC_PKA_CURVE25519 , "1.3.101.110" },
19- { LTC_OID_ED25519 , LTC_PKA_CURVE25519 , "1.3.101.112" },
19+ { LTC_OID_X25519 , LTC_PKA_X25519 , "1.3.101.110" },
20+ { LTC_OID_ED25519 , LTC_PKA_ED25519 , "1.3.101.112" },
2021 { LTC_OID_DH , LTC_PKA_DH , "1.2.840.113549.1.3.1" },
2122};
2223
24+ static LTC_INLINE const oid_table_entry * s_get_entry (enum ltc_oid_id id )
25+ {
26+ if (id < LTC_OID_NUM )
27+ return & pka_oids [id ];
28+ return NULL ;
29+ }
30+
2331/*
2432 Returns the OID requested.
2533 @return CRYPT_OK if valid
2634*/
2735int pk_get_oid (enum ltc_oid_id id , const char * * st )
2836{
29- unsigned int i ;
37+ const oid_table_entry * e = s_get_entry ( id ) ;
3038 LTC_ARGCHK (st != NULL );
31- for (i = 0 ; i < sizeof (pka_oids )/sizeof (pka_oids [0 ]); ++ i ) {
32- if (pka_oids [i ].id == id ) {
33- * st = pka_oids [i ].oid ;
39+ if (e != NULL ) {
40+ * st = e -> oid ;
41+ return CRYPT_OK ;
42+ }
43+ return CRYPT_INVALID_ARG ;
44+ }
45+
46+ /*
47+ Returns the PKA ID requested.
48+ @return CRYPT_OK if valid
49+ */
50+ int pk_get_pka_id (enum ltc_oid_id id , enum ltc_pka_id * pka )
51+ {
52+ const oid_table_entry * e = s_get_entry (id );
53+ LTC_ARGCHK (pka != NULL );
54+ if (e != NULL ) {
55+ * pka = e -> pka ;
56+ return CRYPT_OK ;
57+ }
58+ return CRYPT_INVALID_ARG ;
59+ }
60+
61+ /*
62+ Returns the OID ID requested.
63+ @return CRYPT_OK if valid
64+ */
65+ int pk_get_oid_id (enum ltc_pka_id pka , enum ltc_oid_id * oid )
66+ {
67+ unsigned int i ;
68+ LTC_ARGCHK (oid != NULL );
69+ for (i = 1 ; i < sizeof (pka_oids )/sizeof (pka_oids [0 ]); ++ i ) {
70+ if (pka_oids [i ].pka == pka ) {
71+ * oid = pka_oids [i ].id ;
3472 return CRYPT_OK ;
3573 }
3674 }
@@ -57,7 +95,7 @@ int pk_get_oid_from_asn1(const ltc_asn1_list *oid, enum ltc_oid_id *id)
5795 return err ;
5896 }
5997
60- for (i = 0 ; i < sizeof (pka_oids )/sizeof (pka_oids [0 ]); ++ i ) {
98+ for (i = 1 ; i < sizeof (pka_oids )/sizeof (pka_oids [0 ]); ++ i ) {
6199 if (XSTRCMP (pka_oids [i ].oid , tmp ) == 0 ) {
62100 * id = pka_oids [i ].id ;
63101 return CRYPT_OK ;
0 commit comments