Browse Source

Fix removed oid_st

Steffen Jaeckel 7 years ago
parent
commit
fe00be4abc

+ 8 - 3
src/pk/ed25519/ed25519_export.c

@@ -28,7 +28,8 @@ int ed25519_export(       unsigned char *out, unsigned long *outlen,
                    const curve25519_key *key)
 {
    int err, std;
-   oid_st oid;
+   const char* OID;
+   unsigned long oid[16], oidlen;
    ltc_asn1_list alg_id[1];
    unsigned char private_key[34];
    unsigned long version, private_key_len = sizeof(private_key);
@@ -45,11 +46,15 @@ int ed25519_export(       unsigned char *out, unsigned long *outlen,
    if (which == PK_PRIVATE) {
       if(key->type != PK_PRIVATE) return CRYPT_PK_INVALID_TYPE;
 
-      if ((err = pk_get_oid(PKA_ED25519, &oid)) != CRYPT_OK) {
+      if ((err = pk_get_oid(PKA_ED25519, &OID)) != CRYPT_OK) {
+         return err;
+      }
+      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.OID,   oid.OIDlen);
+      LTC_SET_ASN1(alg_id, 0, LTC_ASN1_OBJECT_IDENTIFIER, oid, oidlen);
 
       /* encode private key as PKCS#8 */
       if ((err = der_encode_octet_string(key->priv, 32uL, private_key, &private_key_len)) != CRYPT_OK) {

+ 2 - 5
src/pk/ed25519/ed25519_import.c

@@ -25,7 +25,7 @@
 int ed25519_import(const unsigned char *in, unsigned long inlen, curve25519_key *key)
 {
    int err;
-   oid_st oid;
+   const char* oid;
    ltc_asn1_list alg_id[1];
    unsigned char private_key[34];
    unsigned long version, key_len;
@@ -70,10 +70,7 @@ int ed25519_import(const unsigned char *in, unsigned long inlen, curve25519_key
    if ((err = pk_get_oid(PKA_ED25519, &oid)) != CRYPT_OK) {
       goto out;
    }
-   if ((alg_id[0].size != oid.OIDlen) ||
-         XMEMCMP(oid.OID, alg_id[0].data, oid.OIDlen * sizeof(oid.OID[0]))) {
-      /* OID mismatch */
-      err = CRYPT_PK_INVALID_TYPE;
+   if ((err = pk_oid_cmp_with_asn1(oid, &alg_id[0])) != CRYPT_OK) {
       goto out;
    }
 

+ 8 - 3
src/pk/x25519/x25519_export.c

@@ -28,7 +28,8 @@ int x25519_export(      unsigned char *out, unsigned long *outlen,
                   const    curve25519_key *key)
 {
    int err, std;
-   oid_st oid;
+   const char* OID;
+   unsigned long oid[16], oidlen;
    ltc_asn1_list alg_id[1];
    unsigned char private_key[34];
    unsigned long version, private_key_len = sizeof(private_key);
@@ -45,11 +46,15 @@ int x25519_export(      unsigned char *out, unsigned long *outlen,
    if (which == PK_PRIVATE) {
       if(key->type != PK_PRIVATE) return CRYPT_PK_INVALID_TYPE;
 
-      if ((err = pk_get_oid(PKA_X25519, &oid)) != CRYPT_OK) {
+      if ((err = pk_get_oid(PKA_X25519, &OID)) != CRYPT_OK) {
+         return err;
+      }
+      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.OID,   oid.OIDlen);
+      LTC_SET_ASN1(alg_id, 0, LTC_ASN1_OBJECT_IDENTIFIER, oid, oidlen);
 
       /* encode private key as PKCS#8 */
       if ((err = der_encode_octet_string(key->priv, 32uL, private_key, &private_key_len)) != CRYPT_OK) {

+ 2 - 5
src/pk/x25519/x25519_import.c

@@ -25,7 +25,7 @@
 int x25519_import(const unsigned char *in, unsigned long inlen, curve25519_key *key)
 {
    int err;
-   oid_st oid;
+   const char *oid;
    ltc_asn1_list alg_id[1];
    unsigned char private_key[34];
    unsigned long version, key_len;
@@ -65,10 +65,7 @@ int x25519_import(const unsigned char *in, unsigned long inlen, curve25519_key *
    if ((err = pk_get_oid(PKA_X25519, &oid)) != CRYPT_OK) {
       goto out;
    }
-   if ((alg_id[0].size != oid.OIDlen) ||
-         XMEMCMP(oid.OID, alg_id[0].data, oid.OIDlen * sizeof(oid.OID[0]))) {
-      /* OID mismatch */
-      err = CRYPT_PK_INVALID_TYPE;
+   if ((err = pk_oid_cmp_with_asn1(oid, &alg_id[0])) != CRYPT_OK) {
       goto out;
    }