summaryrefslogtreecommitdiffstats
path: root/lib/util
diff options
context:
space:
mode:
Diffstat (limited to 'lib/util')
-rw-r--r--lib/util/asn1.c10
-rw-r--r--lib/util/asn1.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/util/asn1.c b/lib/util/asn1.c
index 08c4060fd10..184aeec9091 100644
--- a/lib/util/asn1.c
+++ b/lib/util/asn1.c
@@ -780,6 +780,16 @@ bool asn1_blob(const struct asn1_data *asn1, DATA_BLOB *blob)
}
/*
+ Fill in an asn1 struct without making a copy
+*/
+void asn1_load_nocopy(struct asn1_data *data, uint8_t *buf, size_t len)
+{
+ ZERO_STRUCTP(data);
+ data->data = buf;
+ data->length = len;
+}
+
+/*
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 b46494b2ea6..b147cccdee0 100644
--- a/lib/util/asn1.h
+++ b/lib/util/asn1.h
@@ -94,6 +94,7 @@ 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);
+void asn1_load_nocopy(struct asn1_data *data, uint8_t *buf, size_t len);
NTSTATUS asn1_full_tag(DATA_BLOB blob, uint8_t tag, size_t *packet_size);
#endif /* _ASN_1_H */