aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libstrongswan/asn1/asn1.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/libstrongswan/asn1/asn1.c b/src/libstrongswan/asn1/asn1.c
index c565e14ff..df922c54d 100644
--- a/src/libstrongswan/asn1/asn1.c
+++ b/src/libstrongswan/asn1/asn1.c
@@ -43,9 +43,23 @@ const chunk_t ASN1_INTEGER_2 = chunk_from_buf(ASN1_INTEGER_2_str);
*/
chunk_t asn1_algorithmIdentifier(int oid)
{
- return asn1_wrap(ASN1_SEQUENCE, "mm",
- asn1_build_known_oid(oid),
- asn1_wrap(ASN1_NULL, ""));
+ chunk_t null;
+
+ /* some algorithmIdentifiers have an appended NULL */
+ switch (oid)
+ {
+ case OID_ECDSA_WITH_SHA1:
+ case OID_ECDSA_WITH_SHA224:
+ case OID_ECDSA_WITH_SHA256:
+ case OID_ECDSA_WITH_SHA384:
+ case OID_ECDSA_WITH_SHA512:
+ null = chunk_empty;
+ break;
+ default:
+ null = asn1_wrap(ASN1_NULL, "");;
+ break;
+ }
+ return asn1_wrap(ASN1_SEQUENCE, "mm", asn1_build_known_oid(oid), null);
}
/*