aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/asn1/asn1.h
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2009-07-03 11:06:51 +0200
committerMartin Willi <martin@strongswan.org>2009-07-06 13:15:28 +0200
commit596e0540a579fce6e4e2ab722ae82cb29c60f788 (patch)
treec4def8308e5bba9bc5030221f4cf35077736a6fa /src/libstrongswan/asn1/asn1.h
parenteebecebead5cdf1d4fc38ed47a7d3be1574ed54a (diff)
downloadstrongswan-596e0540a579fce6e4e2ab722ae82cb29c60f788.tar.bz2
strongswan-596e0540a579fce6e4e2ab722ae82cb29c60f788.tar.xz
asn1_unwrap() function to parse ASN.1 objects with length/type
Diffstat (limited to 'src/libstrongswan/asn1/asn1.h')
-rw-r--r--src/libstrongswan/asn1/asn1.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/libstrongswan/asn1/asn1.h b/src/libstrongswan/asn1/asn1.h
index 6a2b594c0..8072d62d6 100644
--- a/src/libstrongswan/asn1/asn1.h
+++ b/src/libstrongswan/asn1/asn1.h
@@ -74,7 +74,9 @@ typedef enum {
ASN1_CONTEXT_C_2 = 0xA2,
ASN1_CONTEXT_C_3 = 0xA3,
ASN1_CONTEXT_C_4 = 0xA4,
- ASN1_CONTEXT_C_5 = 0xA5
+ ASN1_CONTEXT_C_5 = 0xA5,
+
+ ASN1_INVALID = 0x100,
} asn1_t;
#define ASN1_INVALID_LENGTH 0xffffffff
@@ -123,6 +125,15 @@ chunk_t asn1_build_known_oid(int n);
size_t asn1_length(chunk_t *blob);
/**
+ * Unwrap the inner content of an ASN.1 type/length wrapped object.
+ *
+ * @param blob blob to parse header from, moved behind parsed content
+ * @param content inner content
+ * @return parsed type, ASN1_INVALID if length parsing failed
+ */
+int asn1_unwrap(chunk_t *blob, chunk_t *content);
+
+/**
* Parses an ASN.1 algorithmIdentifier object
*
* @param blob ASN.1 coded blob