mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-02-06 12:40:02 +00:00
Refactor out some common code
Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
This commit is contained in:
parent
3bbedf6ba0
commit
cf5f746a8c
@ -72,6 +72,19 @@ int mbedtls_asn1_write_tag(unsigned char **p, const unsigned char *start, unsign
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int mbedtls_write_len_and_tag(unsigned char **p,
|
||||||
|
const unsigned char *start,
|
||||||
|
int len,
|
||||||
|
unsigned char tag)
|
||||||
|
{
|
||||||
|
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||||
|
|
||||||
|
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len));
|
||||||
|
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, tag));
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
int mbedtls_asn1_write_raw_buffer(unsigned char **p, const unsigned char *start,
|
int mbedtls_asn1_write_raw_buffer(unsigned char **p, const unsigned char *start,
|
||||||
const unsigned char *buf, size_t size)
|
const unsigned char *buf, size_t size)
|
||||||
{
|
{
|
||||||
@ -123,10 +136,7 @@ int mbedtls_asn1_write_mpi(unsigned char **p, const unsigned char *start, const
|
|||||||
len += 1;
|
len += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len));
|
ret = mbedtls_write_len_and_tag(p, start, len, MBEDTLS_ASN1_INTEGER);
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, MBEDTLS_ASN1_INTEGER));
|
|
||||||
|
|
||||||
ret = (int) len;
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
return ret;
|
return ret;
|
||||||
@ -135,15 +145,9 @@ cleanup:
|
|||||||
|
|
||||||
int mbedtls_asn1_write_null(unsigned char **p, const unsigned char *start)
|
int mbedtls_asn1_write_null(unsigned char **p, const unsigned char *start)
|
||||||
{
|
{
|
||||||
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
|
||||||
size_t len = 0;
|
|
||||||
|
|
||||||
// Write NULL
|
// Write NULL
|
||||||
//
|
//
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, 0));
|
return mbedtls_write_len_and_tag(p, start, 0, MBEDTLS_ASN1_NULL);
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, MBEDTLS_ASN1_NULL));
|
|
||||||
|
|
||||||
return (int) len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int mbedtls_asn1_write_oid(unsigned char **p, const unsigned char *start,
|
int mbedtls_asn1_write_oid(unsigned char **p, const unsigned char *start,
|
||||||
@ -154,10 +158,7 @@ int mbedtls_asn1_write_oid(unsigned char **p, const unsigned char *start,
|
|||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_raw_buffer(p, start,
|
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_raw_buffer(p, start,
|
||||||
(const unsigned char *) oid, oid_len));
|
(const unsigned char *) oid, oid_len));
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len));
|
return mbedtls_write_len_and_tag(p, start, len, MBEDTLS_ASN1_OID);
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, MBEDTLS_ASN1_OID));
|
|
||||||
|
|
||||||
return (int) len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int mbedtls_asn1_write_algorithm_identifier(unsigned char **p, const unsigned char *start,
|
int mbedtls_asn1_write_algorithm_identifier(unsigned char **p, const unsigned char *start,
|
||||||
@ -184,17 +185,12 @@ int mbedtls_asn1_write_algorithm_identifier_ext(unsigned char **p, const unsigne
|
|||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_oid(p, start, oid, oid_len));
|
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_oid(p, start, oid, oid_len));
|
||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len));
|
return mbedtls_write_len_and_tag(p, start, len,
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start,
|
MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE);
|
||||||
MBEDTLS_ASN1_CONSTRUCTED |
|
|
||||||
MBEDTLS_ASN1_SEQUENCE));
|
|
||||||
|
|
||||||
return (int) len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int mbedtls_asn1_write_bool(unsigned char **p, const unsigned char *start, int boolean)
|
int mbedtls_asn1_write_bool(unsigned char **p, const unsigned char *start, int boolean)
|
||||||
{
|
{
|
||||||
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
if (*p - start < 1) {
|
if (*p - start < 1) {
|
||||||
@ -204,15 +200,11 @@ int mbedtls_asn1_write_bool(unsigned char **p, const unsigned char *start, int b
|
|||||||
*--(*p) = (boolean) ? 255 : 0;
|
*--(*p) = (boolean) ? 255 : 0;
|
||||||
len++;
|
len++;
|
||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len));
|
return mbedtls_write_len_and_tag(p, start, len, MBEDTLS_ASN1_BOOLEAN);
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, MBEDTLS_ASN1_BOOLEAN));
|
|
||||||
|
|
||||||
return (int) len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int asn1_write_tagged_int(unsigned char **p, const unsigned char *start, int val, int tag)
|
static int asn1_write_tagged_int(unsigned char **p, const unsigned char *start, int val, int tag)
|
||||||
{
|
{
|
||||||
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
@ -232,10 +224,7 @@ static int asn1_write_tagged_int(unsigned char **p, const unsigned char *start,
|
|||||||
len += 1;
|
len += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len));
|
return mbedtls_write_len_and_tag(p, start, len, tag);
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, tag));
|
|
||||||
|
|
||||||
return (int) len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int mbedtls_asn1_write_int(unsigned char **p, const unsigned char *start, int val)
|
int mbedtls_asn1_write_int(unsigned char **p, const unsigned char *start, int val)
|
||||||
@ -258,10 +247,7 @@ int mbedtls_asn1_write_tagged_string(unsigned char **p, const unsigned char *sta
|
|||||||
(const unsigned char *) text,
|
(const unsigned char *) text,
|
||||||
text_len));
|
text_len));
|
||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len));
|
return mbedtls_write_len_and_tag(p, start, len, tag);
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, tag));
|
|
||||||
|
|
||||||
return (int) len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int mbedtls_asn1_write_utf8_string(unsigned char **p, const unsigned char *start,
|
int mbedtls_asn1_write_utf8_string(unsigned char **p, const unsigned char *start,
|
||||||
@ -330,7 +316,6 @@ int mbedtls_asn1_write_named_bitstring(unsigned char **p,
|
|||||||
int mbedtls_asn1_write_bitstring(unsigned char **p, const unsigned char *start,
|
int mbedtls_asn1_write_bitstring(unsigned char **p, const unsigned char *start,
|
||||||
const unsigned char *buf, size_t bits)
|
const unsigned char *buf, size_t bits)
|
||||||
{
|
{
|
||||||
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
size_t unused_bits, byte_len;
|
size_t unused_bits, byte_len;
|
||||||
|
|
||||||
@ -354,10 +339,7 @@ int mbedtls_asn1_write_bitstring(unsigned char **p, const unsigned char *start,
|
|||||||
/* Write unused bits */
|
/* Write unused bits */
|
||||||
*--(*p) = (unsigned char) unused_bits;
|
*--(*p) = (unsigned char) unused_bits;
|
||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len));
|
return mbedtls_write_len_and_tag(p, start, len, MBEDTLS_ASN1_BIT_STRING);
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, MBEDTLS_ASN1_BIT_STRING));
|
|
||||||
|
|
||||||
return (int) len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int mbedtls_asn1_write_octet_string(unsigned char **p, const unsigned char *start,
|
int mbedtls_asn1_write_octet_string(unsigned char **p, const unsigned char *start,
|
||||||
@ -368,10 +350,7 @@ int mbedtls_asn1_write_octet_string(unsigned char **p, const unsigned char *star
|
|||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_raw_buffer(p, start, buf, size));
|
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_raw_buffer(p, start, buf, size));
|
||||||
|
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_len(p, start, len));
|
return mbedtls_write_len_and_tag(p, start, len, MBEDTLS_ASN1_OCTET_STRING);
|
||||||
MBEDTLS_ASN1_CHK_ADD(len, mbedtls_asn1_write_tag(p, start, MBEDTLS_ASN1_OCTET_STRING));
|
|
||||||
|
|
||||||
return (int) len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user