Add functions for SEQUENCE OF

SEQUENCE SIZE (1..n) OF <type>
Always check that SEQUENCE OF is not empty.
This commit is contained in:
Zhi Guan
2023-01-11 14:19:37 +08:00
parent 4ac1abb2a6
commit adfa3aaf60
2 changed files with 15 additions and 0 deletions

View File

@@ -250,6 +250,8 @@ int asn1_types_get_count(const uint8_t *d, size_t dlen, int tag, size_t *cnt);
int asn1_types_get_item_by_index(const uint8_t *d, size_t *dlen, int tag,
int index, const uint8_t **item_d, size_t *item_dlen);
int asn1_sequence_of_from_der(const uint8_t **d, size_t *dlen, const uint8_t **in, size_t *inlen);
int asn1_sequence_of_int_to_der(const int *nums, size_t nums_cnt, uint8_t **out, size_t *outlen);
int asn1_sequence_of_int_from_der(int *nums, size_t *nums_cnt, const uint8_t **in, size_t *inlen);
int asn1_sequence_of_int_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t *d, size_t dlen);

View File

@@ -1437,6 +1437,19 @@ int asn1_object_identifier_equ(const uint32_t *a, size_t a_cnt, const uint32_t *
return 0;
}
int asn1_sequence_of_from_der(const uint8_t **d, size_t *dlen, const uint8_t **in, size_t *inlen)
{
int ret;
if ((ret = asn1_sequence_from_der(d, dlen, in, inlen)) != 1) {
if (ret < 0) error_print();
return ret;
}
if (!(*d) || !(*dlen)) {
error_print();
return -1;
}
return 1;
}
int asn1_sequence_of_int_to_der(const int *nums, size_t nums_cnt, uint8_t **out, size_t *outlen)
{