diff options
Diffstat (limited to 'lib/util')
-rw-r--r-- | lib/util/asn1.c | 16 | ||||
-rw-r--r-- | lib/util/asn1.h | 1 |
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/util/asn1.c b/lib/util/asn1.c index aadaf8643a..08c4060fd1 100644 --- a/lib/util/asn1.c +++ b/lib/util/asn1.c @@ -764,6 +764,22 @@ bool asn1_write_enumerated(struct asn1_data *data, uint8_t v) } /* + Get us the data just written without copying +*/ +bool asn1_blob(const struct asn1_data *asn1, DATA_BLOB *blob) +{ + if (asn1->has_error) { + return false; + } + if (asn1->nesting != NULL) { + return false; + } + blob->data = asn1->data; + blob->length = asn1->length; + return true; +} + +/* check if a ASN.1 blob is a full tag */ NTSTATUS asn1_full_tag(DATA_BLOB blob, uint8_t tag, size_t *packet_size) diff --git a/lib/util/asn1.h b/lib/util/asn1.h index 0f41ae33e5..b46494b2ea 100644 --- a/lib/util/asn1.h +++ b/lib/util/asn1.h @@ -93,6 +93,7 @@ bool asn1_read_Integer(struct asn1_data *data, int *i); bool asn1_read_enumerated(struct asn1_data *data, int *v); bool asn1_check_enumerated(struct asn1_data *data, int v); bool asn1_write_enumerated(struct asn1_data *data, uint8_t v); +bool asn1_blob(const struct asn1_data *asn1, DATA_BLOB *blob); NTSTATUS asn1_full_tag(DATA_BLOB blob, uint8_t tag, size_t *packet_size); #endif /* _ASN_1_H */ |