change the ASN1 type to be a typedef

replace all 'default' cases in the switch statements
This commit is contained in:
Steffen Jaeckel 2014-08-24 15:00:32 +02:00
parent 00c111b1c8
commit 6bba3a2a70
6 changed files with 41 additions and 24 deletions

View File

@ -435,7 +435,7 @@ int dsa_shared_secret(void *private_key, void *base,
#ifdef LTC_DER #ifdef LTC_DER
/* DER handling */ /* DER handling */
enum { typedef enum ltc_asn1_type_ {
LTC_ASN1_EOL, LTC_ASN1_EOL,
LTC_ASN1_BOOLEAN, LTC_ASN1_BOOLEAN,
LTC_ASN1_INTEGER, LTC_ASN1_INTEGER,
@ -455,12 +455,12 @@ enum {
LTC_ASN1_RAW_BIT_STRING, LTC_ASN1_RAW_BIT_STRING,
LTC_ASN1_TELETEX_STRING, LTC_ASN1_TELETEX_STRING,
LTC_ASN1_CONSTRUCTED, LTC_ASN1_CONSTRUCTED,
}; } ltc_asn1_type;
/** A LTC ASN.1 list type */ /** A LTC ASN.1 list type */
typedef struct ltc_asn1_list_ { typedef struct ltc_asn1_list_ {
/** The LTC ASN.1 enumerated type identifier */ /** The LTC ASN.1 enumerated type identifier */
int type; ltc_asn1_type type;
/** The data to encode or place for decoding */ /** The data to encode or place for decoding */
void *data; void *data;
/** The size of the input or resulting output */ /** The size of the input or resulting output */

View File

@ -198,7 +198,9 @@ int der_decode_choice(const unsigned char *in, unsigned long *inlen,
} }
break; break;
default: case LTC_ASN1_CHOICE:
case LTC_ASN1_CONSTRUCTED:
case LTC_ASN1_EOL:
return CRYPT_INVALID_ARG; return CRYPT_INVALID_ARG;
} }
} }

View File

@ -31,7 +31,8 @@
int der_decode_sequence_ex(const unsigned char *in, unsigned long inlen, int der_decode_sequence_ex(const unsigned char *in, unsigned long inlen,
ltc_asn1_list *list, unsigned long outlen, int ordered) ltc_asn1_list *list, unsigned long outlen, int ordered)
{ {
int err, type, i; int err, i;
ltc_asn1_type type;
unsigned long size, x, y, z, blksize; unsigned long size, x, y, z, blksize;
void *data; void *data;
@ -282,7 +283,8 @@ int der_decode_sequence_ex(const unsigned char *in, unsigned long inlen,
} }
break; break;
default: case LTC_ASN1_CONSTRUCTED:
case LTC_ASN1_EOL:
err = CRYPT_INVALID_ARG; err = CRYPT_INVALID_ARG;
goto LBL_ERR; goto LBL_ERR;
} }

View File

@ -28,7 +28,8 @@
*/ */
int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...) int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...)
{ {
int err, type; int err;
ltc_asn1_type type;
unsigned long size, x; unsigned long size, x;
void *data; void *data;
va_list args; va_list args;
@ -40,7 +41,7 @@ int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...)
va_start(args, inlen); va_start(args, inlen);
x = 0; x = 0;
for (;;) { for (;;) {
type = va_arg(args, int); type = va_arg(args, ltc_asn1_type);
size = va_arg(args, unsigned long); size = va_arg(args, unsigned long);
data = va_arg(args, void*); data = va_arg(args, void*);
@ -69,7 +70,8 @@ int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...)
++x; ++x;
break; break;
default: case LTC_ASN1_EOL:
case LTC_ASN1_CONSTRUCTED:
va_end(args); va_end(args);
return CRYPT_INVALID_ARG; return CRYPT_INVALID_ARG;
} }
@ -90,7 +92,7 @@ int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...)
va_start(args, inlen); va_start(args, inlen);
x = 0; x = 0;
for (;;) { for (;;) {
type = va_arg(args, int); type = va_arg(args, ltc_asn1_type);
size = va_arg(args, unsigned long); size = va_arg(args, unsigned long);
data = va_arg(args, void*); data = va_arg(args, void*);
@ -118,17 +120,14 @@ int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...)
case LTC_ASN1_TELETEX_STRING: case LTC_ASN1_TELETEX_STRING:
LTC_SET_ASN1(list, x++, type, data, size); LTC_SET_ASN1(list, x++, type, data, size);
break; break;
case LTC_ASN1_EOL:
default: case LTC_ASN1_CONSTRUCTED:
va_end(args); break;
err = CRYPT_INVALID_ARG;
goto LBL_ERR;
} }
} }
va_end(args); va_end(args);
err = der_decode_sequence(in, inlen, list, x); err = der_decode_sequence(in, inlen, list, x);
LBL_ERR:
XFREE(list); XFREE(list);
return err; return err;
} }

View File

@ -31,7 +31,8 @@
int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen, int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen,
unsigned char *out, unsigned long *outlen, int type_of) unsigned char *out, unsigned long *outlen, int type_of)
{ {
int err, type; int err;
ltc_asn1_type type;
unsigned long size, x, y, z, i; unsigned long size, x, y, z, i;
void *data; void *data;
@ -135,7 +136,10 @@ int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen,
y += x; y += x;
break; break;
default: case LTC_ASN1_CHOICE:
case LTC_ASN1_CONSTRUCTED:
case LTC_ASN1_EOL:
case LTC_ASN1_TELETEX_STRING:
err = CRYPT_INVALID_ARG; err = CRYPT_INVALID_ARG;
goto LBL_ERR; goto LBL_ERR;
} }
@ -330,7 +334,10 @@ int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen,
*outlen -= z; *outlen -= z;
break; break;
default: case LTC_ASN1_CHOICE:
case LTC_ASN1_CONSTRUCTED:
case LTC_ASN1_EOL:
case LTC_ASN1_TELETEX_STRING:
err = CRYPT_INVALID_ARG; err = CRYPT_INVALID_ARG;
goto LBL_ERR; goto LBL_ERR;
} }

View File

@ -28,7 +28,8 @@
*/ */
int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...) int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...)
{ {
int err, type; int err;
ltc_asn1_type type;
unsigned long size, x; unsigned long size, x;
void *data; void *data;
va_list args; va_list args;
@ -41,7 +42,7 @@ int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...)
va_start(args, outlen); va_start(args, outlen);
x = 0; x = 0;
for (;;) { for (;;) {
type = va_arg(args, int); type = va_arg(args, ltc_asn1_type);
size = va_arg(args, unsigned long); size = va_arg(args, unsigned long);
data = va_arg(args, void*); data = va_arg(args, void*);
@ -68,7 +69,10 @@ int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...)
++x; ++x;
break; break;
default: case LTC_ASN1_CHOICE:
case LTC_ASN1_CONSTRUCTED:
case LTC_ASN1_EOL:
case LTC_ASN1_TELETEX_STRING:
va_end(args); va_end(args);
return CRYPT_INVALID_ARG; return CRYPT_INVALID_ARG;
} }
@ -89,7 +93,7 @@ int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...)
va_start(args, outlen); va_start(args, outlen);
x = 0; x = 0;
for (;;) { for (;;) {
type = va_arg(args, int); type = va_arg(args, ltc_asn1_type);
size = va_arg(args, unsigned long); size = va_arg(args, unsigned long);
data = va_arg(args, void*); data = va_arg(args, void*);
@ -116,7 +120,10 @@ int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...)
LTC_SET_ASN1(list, x++, type, data, size); LTC_SET_ASN1(list, x++, type, data, size);
break; break;
default: case LTC_ASN1_CHOICE:
case LTC_ASN1_CONSTRUCTED:
case LTC_ASN1_EOL:
case LTC_ASN1_TELETEX_STRING:
va_end(args); va_end(args);
err = CRYPT_INVALID_ARG; err = CRYPT_INVALID_ARG;
goto LBL_ERR; goto LBL_ERR;