Browse Source

remove oid_st

Steffen Jaeckel 7 years ago
parent
commit
4cf2e80346

+ 0 - 6
src/headers/tomcrypt_private.h

@@ -30,12 +30,6 @@ enum public_key_algorithms {
  * Internal Types
  */
 
-typedef struct Oid {
-    unsigned long OID[16];
-    /** Number of OID digits in use */
-    unsigned long OIDlen;
-} oid_st;
-
 typedef struct {
   int size;
   const char *name, *base, *prime;

+ 4 - 6
src/pk/asn1/x509/x509_decode_subject_public_key_info.c

@@ -43,7 +43,7 @@ int x509_decode_subject_public_key_info(const unsigned char *in, unsigned long i
 {
    int err;
    unsigned long len, alg_id_num;
-   oid_st oid;
+   const char* oid;
    unsigned char *tmpbuf;
    unsigned long  tmpoid[16];
    ltc_asn1_list alg_id[2];
@@ -92,11 +92,9 @@ int x509_decode_subject_public_key_info(const unsigned char *in, unsigned long i
       *parameters_len = alg_id[1].size;
    }
 
-   if ((alg_id[0].size != oid.OIDlen) ||
-        XMEMCMP(oid.OID, alg_id[0].data, oid.OIDlen * sizeof(oid.OID[0])) != 0) {
-        /* OID mismatch */
-        err = CRYPT_PK_INVALID_TYPE;
-        goto LBL_ERR;
+   if ((err = pk_oid_cmp_with_asn1(oid, &alg_id[0])) != CRYPT_OK) {
+      /* OID mismatch */
+      goto LBL_ERR;
    }
 
    len = subject_pubkey[1].size/8;

+ 9 - 4
src/pk/asn1/x509/x509_encode_subject_public_key_info.c

@@ -43,17 +43,22 @@ int x509_encode_subject_public_key_info(unsigned char *out, unsigned long *outle
 {
    int           err;
    ltc_asn1_list alg_id[2];
-   oid_st oid;
+   const char *OID;
+   unsigned long oid[16], oidlen;
 
    LTC_ARGCHK(out    != NULL);
    LTC_ARGCHK(outlen != NULL);
 
-   err = pk_get_oid(algorithm, &oid);
-   if (err != CRYPT_OK) {
+   if ((err = pk_get_oid(algorithm, &OID)) != CRYPT_OK) {
         return err;
    }
 
-   LTC_SET_ASN1(alg_id, 0, LTC_ASN1_OBJECT_IDENTIFIER, oid.OID,    oid.OIDlen);
+   oidlen = sizeof(oid)/sizeof(oid[0]);
+   if ((err = pk_oid_str_to_num(OID, oid, &oidlen)) != CRYPT_OK) {
+      return err;
+   }
+
+   LTC_SET_ASN1(alg_id, 0, LTC_ASN1_OBJECT_IDENTIFIER, oid,        oidlen);
    LTC_SET_ASN1(alg_id, 1, parameters_type,            parameters, parameters_len);
 
    return der_encode_sequence_multi(out, outlen,

+ 9 - 3
src/pk/ecc/ecc_export_openssl.c

@@ -27,7 +27,8 @@ int ecc_export_openssl(unsigned char *out, unsigned long *outlen, int type, cons
    unsigned char bin_a[256], bin_b[256], bin_k[256], bin_g[512], bin_xy[512];
    unsigned long len_a, len_b, len_k, len_g, len_xy;
    unsigned long cofactor, one = 1;
-   oid_st oid;
+   const char *OID;
+   unsigned long oid[16], oidlen;
    ltc_asn1_list seq_fieldid[2], seq_curve[2], seq_ecparams[6], seq_priv[4], pub_xy, ecparams;
    int flag_oid = type & PK_CURVEOID ? 1 : 0;
    int flag_com = type & PK_COMPRESSED ? 1 : 0;
@@ -72,7 +73,7 @@ int ecc_export_openssl(unsigned char *out, unsigned long *outlen, int type, cons
    cofactor = key->dp.cofactor;
 
    /* we support only prime-field EC */
-   if ((err = pk_get_oid(PKA_EC_PRIMEF, &oid)) != CRYPT_OK)     { goto error; }
+   if ((err = pk_get_oid(PKA_EC_PRIMEF, &OID)) != CRYPT_OK)     { goto error; }
 
    if (flag_oid) {
       /* http://tools.ietf.org/html/rfc5912
@@ -102,8 +103,13 @@ int ecc_export_openssl(unsigned char *out, unsigned long *outlen, int type, cons
          }
       */
 
+      oidlen = sizeof(oid)/sizeof(oid[0]);
+      if ((err = pk_oid_str_to_num(OID, oid, &oidlen)) != CRYPT_OK) {
+         goto error;
+      }
+
       /* FieldID SEQUENCE */
-      LTC_SET_ASN1(seq_fieldid,  0, LTC_ASN1_OBJECT_IDENTIFIER, oid.OID,     oid.OIDlen);
+      LTC_SET_ASN1(seq_fieldid,  0, LTC_ASN1_OBJECT_IDENTIFIER, oid,         oidlen);
       LTC_SET_ASN1(seq_fieldid,  1, LTC_ASN1_INTEGER,           prime,       1UL);
 
       /* Curve SEQUENCE */

+ 2 - 4
src/pk/rsa/rsa_import_pkcs8.c

@@ -56,7 +56,7 @@ int rsa_import_pkcs8(const unsigned char *in, unsigned long inlen,
    unsigned char *buf1 = NULL, *buf2 = NULL;
    unsigned long buf1len, buf2len;
    unsigned long oid[16];
-   oid_st        rsaoid;
+   const char    *rsaoid;
    ltc_asn1_list alg_seq[2], top_seq[3];
    ltc_asn1_list alg_seq_e[2], key_seq_e[2], top_seq_e[2];
    unsigned char *decrypted = NULL;
@@ -113,9 +113,7 @@ int rsa_import_pkcs8(const unsigned char *in, unsigned long inlen,
    if (err != CRYPT_OK) { goto LBL_ERR; }
 
    /* check alg oid */
-   if ((alg_seq[0].size != rsaoid.OIDlen) ||
-      XMEMCMP(rsaoid.OID, alg_seq[0].data, rsaoid.OIDlen * sizeof(rsaoid.OID[0])) != 0) {
-      err = CRYPT_PK_INVALID_TYPE;
+   if ((err = pk_oid_cmp_with_asn1(rsaoid, &alg_seq[0]))) {
       goto LBL_ERR;
    }