Browse Source

der: add new enum element for context-specific encodings

Steffen Jaeckel 11 years ago
parent
commit
2d8933e4f1

+ 1 - 0
src/headers/tomcrypt_pk.h

@@ -462,6 +462,7 @@ typedef enum ltc_asn1_type_ {
  LTC_ASN1_RAW_BIT_STRING,
  LTC_ASN1_TELETEX_STRING,
  LTC_ASN1_CONSTRUCTED,
+ LTC_ASN1_CONTEXT_SPECIFIC,
 } ltc_asn1_type;
 
 /** A LTC ASN.1 list type */

+ 1 - 0
src/pk/asn1/der/choice/der_decode_choice.c

@@ -200,6 +200,7 @@ int der_decode_choice(const unsigned char *in,   unsigned long *inlen,
 
            case LTC_ASN1_CHOICE:
            case LTC_ASN1_CONSTRUCTED:
+           case LTC_ASN1_CONTEXT_SPECIFIC:
            case LTC_ASN1_EOL:
                return CRYPT_INVALID_ARG;
        }

+ 1 - 0
src/pk/asn1/der/sequence/der_decode_sequence_ex.c

@@ -284,6 +284,7 @@ int der_decode_sequence_ex(const unsigned char *in, unsigned long  inlen,
                break;
 
            case LTC_ASN1_CONSTRUCTED:
+           case LTC_ASN1_CONTEXT_SPECIFIC:
            case LTC_ASN1_EOL:
                err = CRYPT_INVALID_ARG;
                goto LBL_ERR;

+ 2 - 0
src/pk/asn1/der/sequence/der_decode_sequence_multi.c

@@ -72,6 +72,7 @@ int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...)
 
            case LTC_ASN1_EOL:
            case LTC_ASN1_CONSTRUCTED:
+           case LTC_ASN1_CONTEXT_SPECIFIC:
                va_end(args);
                return CRYPT_INVALID_ARG;
        }
@@ -122,6 +123,7 @@ int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...)
                 break;
            case LTC_ASN1_EOL:
            case LTC_ASN1_CONSTRUCTED:
+           case LTC_ASN1_CONTEXT_SPECIFIC:
                 break;
        }
    }

+ 2 - 0
src/pk/asn1/der/sequence/der_encode_sequence_ex.c

@@ -138,6 +138,7 @@ int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen,
 
            case LTC_ASN1_CHOICE:
            case LTC_ASN1_CONSTRUCTED:
+           case LTC_ASN1_CONTEXT_SPECIFIC:
            case LTC_ASN1_EOL:
            case LTC_ASN1_TELETEX_STRING:
                err = CRYPT_INVALID_ARG;
@@ -336,6 +337,7 @@ int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen,
 
            case LTC_ASN1_CHOICE:
            case LTC_ASN1_CONSTRUCTED:
+           case LTC_ASN1_CONTEXT_SPECIFIC:
            case LTC_ASN1_EOL:
            case LTC_ASN1_TELETEX_STRING:
                err = CRYPT_INVALID_ARG;

+ 2 - 0
src/pk/asn1/der/sequence/der_encode_sequence_multi.c

@@ -71,6 +71,7 @@ int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...)
 
            case LTC_ASN1_CHOICE:
            case LTC_ASN1_CONSTRUCTED:
+           case LTC_ASN1_CONTEXT_SPECIFIC:
            case LTC_ASN1_EOL:
            case LTC_ASN1_TELETEX_STRING:
                va_end(args);
@@ -122,6 +123,7 @@ int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...)
 
            case LTC_ASN1_CHOICE:
            case LTC_ASN1_CONSTRUCTED:
+           case LTC_ASN1_CONTEXT_SPECIFIC:
            case LTC_ASN1_EOL:
            case LTC_ASN1_TELETEX_STRING:
                va_end(args);

+ 1 - 0
src/pk/asn1/der/sequence/der_length_sequence.c

@@ -141,6 +141,7 @@ int der_length_sequence(ltc_asn1_list *list, unsigned long inlen,
 
            case LTC_ASN1_CHOICE:
            case LTC_ASN1_CONSTRUCTED:
+           case LTC_ASN1_CONTEXT_SPECIFIC:
            case LTC_ASN1_EOL:
                err = CRYPT_INVALID_ARG;
                goto LBL_ERR;

+ 1 - 0
src/pk/asn1/der/set/der_encode_set.c

@@ -39,6 +39,7 @@ static int ltc_to_asn1(ltc_asn1_type v)
       case LTC_ASN1_SETOF:                   return 0x31;
       case LTC_ASN1_CHOICE:
       case LTC_ASN1_CONSTRUCTED:
+      case LTC_ASN1_CONTEXT_SPECIFIC:
       case LTC_ASN1_EOL:                     return -1;
    }
    return -1;