|
@@ -11,26 +11,64 @@ typedef struct {
|
|
} oid_table_entry;
|
|
} oid_table_entry;
|
|
|
|
|
|
static const oid_table_entry pka_oids[] = {
|
|
static const oid_table_entry pka_oids[] = {
|
|
|
|
+ { LTC_OID_UNDEF, LTC_PKA_UNDEF, NULL },
|
|
{ LTC_OID_RSA, LTC_PKA_RSA, "1.2.840.113549.1.1.1" },
|
|
{ LTC_OID_RSA, LTC_PKA_RSA, "1.2.840.113549.1.1.1" },
|
|
{ LTC_OID_DSA, LTC_PKA_DSA, "1.2.840.10040.4.1" },
|
|
{ LTC_OID_DSA, LTC_PKA_DSA, "1.2.840.10040.4.1" },
|
|
{ LTC_OID_EC, LTC_PKA_EC, "1.2.840.10045.2.1" },
|
|
{ LTC_OID_EC, LTC_PKA_EC, "1.2.840.10045.2.1" },
|
|
{ LTC_OID_EC_PRIMEF, LTC_PKA_EC, "1.2.840.10045.1.1" },
|
|
{ LTC_OID_EC_PRIMEF, LTC_PKA_EC, "1.2.840.10045.1.1" },
|
|
- { LTC_OID_X25519, LTC_PKA_CURVE25519, "1.3.101.110" },
|
|
|
|
- { LTC_OID_ED25519, LTC_PKA_CURVE25519, "1.3.101.112" },
|
|
|
|
|
|
+ { LTC_OID_X25519, LTC_PKA_X25519, "1.3.101.110" },
|
|
|
|
+ { LTC_OID_ED25519, LTC_PKA_ED25519, "1.3.101.112" },
|
|
{ LTC_OID_DH, LTC_PKA_DH, "1.2.840.113549.1.3.1" },
|
|
{ LTC_OID_DH, LTC_PKA_DH, "1.2.840.113549.1.3.1" },
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static LTC_INLINE const oid_table_entry* s_get_entry(enum ltc_oid_id id)
|
|
|
|
+{
|
|
|
|
+ if (id < LTC_OID_NUM)
|
|
|
|
+ return &pka_oids[id];
|
|
|
|
+ return NULL;
|
|
|
|
+}
|
|
|
|
+
|
|
/*
|
|
/*
|
|
Returns the OID requested.
|
|
Returns the OID requested.
|
|
@return CRYPT_OK if valid
|
|
@return CRYPT_OK if valid
|
|
*/
|
|
*/
|
|
int pk_get_oid(enum ltc_oid_id id, const char **st)
|
|
int pk_get_oid(enum ltc_oid_id id, const char **st)
|
|
{
|
|
{
|
|
- unsigned int i;
|
|
|
|
|
|
+ const oid_table_entry* e = s_get_entry(id);
|
|
LTC_ARGCHK(st != NULL);
|
|
LTC_ARGCHK(st != NULL);
|
|
- for (i = 0; i < sizeof(pka_oids)/sizeof(pka_oids[0]); ++i) {
|
|
|
|
- if (pka_oids[i].id == id) {
|
|
|
|
- *st = pka_oids[i].oid;
|
|
|
|
|
|
+ if (e != NULL) {
|
|
|
|
+ *st = e->oid;
|
|
|
|
+ return CRYPT_OK;
|
|
|
|
+ }
|
|
|
|
+ return CRYPT_INVALID_ARG;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ Returns the PKA ID requested.
|
|
|
|
+ @return CRYPT_OK if valid
|
|
|
|
+*/
|
|
|
|
+int pk_get_pka_id(enum ltc_oid_id id, enum ltc_pka_id *pka)
|
|
|
|
+{
|
|
|
|
+ const oid_table_entry* e = s_get_entry(id);
|
|
|
|
+ LTC_ARGCHK(pka != NULL);
|
|
|
|
+ if (e != NULL) {
|
|
|
|
+ *pka = e->pka;
|
|
|
|
+ return CRYPT_OK;
|
|
|
|
+ }
|
|
|
|
+ return CRYPT_INVALID_ARG;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ Returns the OID ID requested.
|
|
|
|
+ @return CRYPT_OK if valid
|
|
|
|
+*/
|
|
|
|
+int pk_get_oid_id(enum ltc_pka_id pka, enum ltc_oid_id *oid)
|
|
|
|
+{
|
|
|
|
+ unsigned int i;
|
|
|
|
+ LTC_ARGCHK(oid != NULL);
|
|
|
|
+ for (i = 1; i < sizeof(pka_oids)/sizeof(pka_oids[0]); ++i) {
|
|
|
|
+ if (pka_oids[i].pka == pka) {
|
|
|
|
+ *oid = pka_oids[i].id;
|
|
return CRYPT_OK;
|
|
return CRYPT_OK;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -57,7 +95,7 @@ int pk_get_oid_from_asn1(const ltc_asn1_list *oid, enum ltc_oid_id *id)
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
|
|
|
|
- for (i = 0; i < sizeof(pka_oids)/sizeof(pka_oids[0]); ++i) {
|
|
|
|
|
|
+ for (i = 1; i < sizeof(pka_oids)/sizeof(pka_oids[0]); ++i) {
|
|
if (XSTRCMP(pka_oids[i].oid, tmp) == 0) {
|
|
if (XSTRCMP(pka_oids[i].oid, tmp) == 0) {
|
|
*id = pka_oids[i].id;
|
|
*id = pka_oids[i].id;
|
|
return CRYPT_OK;
|
|
return CRYPT_OK;
|