23 size_t octets = (**ptr) & 0x7f;
26 len = (len << 8) + (**ptr);
38asn1_tag_c(
const uint8_t **ptr,
int *constructed,
int *cls) {
43 *constructed = (
byte & 0x20) ? 1 : 0;
53 tag = (tag << 7) + (
byte & 0x7F);
58 tag = (tag << 7) + (
byte & 0x7F);
69 const uint8_t *acp = ptr;
70 uint8_t tag =
asn1_tag_c(&acp, &constructed, &
class);
74 while (tlen > 0 && len <= tlen) {
75 if (
class == 2 && constructed == 1) {
81 if (!validate || validate(acp, len)) {
86 memcpy(tag_data->
s, acp, len);
90 if (tag == 0x10 && constructed == 1) {
109 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01,
114 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07,
127 if (pub_key && prime) {
134 memcpy(&spki->
s[header_size], pub_key->
s, pub_key->
length);
static const unsigned char cert_asn1_header2[]
static const unsigned char cert_asn1_header1[]
Library specific build wrapper for coap_internal.h.
coap_binary_t * get_asn1_tag(coap_asn1_tag_t ltag, const uint8_t *ptr, size_t tlen, asn1_validate validate)
Get the asn1 tag and data from the current ptr.
coap_asn1_tag_t asn1_tag_c(const uint8_t **ptr, int *constructed, int *cls)
Get the asn1 tag from the current ptr.
size_t asn1_len(const uint8_t **ptr)
Get the asn1 length from the current ptr.
coap_binary_t * get_asn1_spki(const uint8_t *data, size_t size)
Abstract SPKI public key from the ASN1.
int(* asn1_validate)(const uint8_t *data, size_t size)
Callback to validate the asn1 tag and data.
coap_binary_t * coap_new_binary(size_t size)
Returns a new binary object with at least size bytes storage allocated.
void coap_delete_binary(coap_binary_t *s)
Deletes the given coap_binary_t object and releases any memory allocated.
CoAP binary data definition.
size_t length
length of binary data