change the ASN1 type to be a typedef
replace all 'default' cases in the switch statements
This commit is contained in:
parent
00c111b1c8
commit
6bba3a2a70
@ -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 */
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user