aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2009-08-27 15:28:21 +0200
committerMartin Willi <martin@strongswan.org>2009-08-27 15:28:21 +0200
commit7ef310f5b41d13a20ee218fb783fa7c6846a7dac (patch)
tree797d4fbd8ee835e676e8ec14153c6bd8fba505fe /src
parent9436b31c94b9d14aabf5341485feaf730a05e81b (diff)
downloadstrongswan-7ef310f5b41d13a20ee218fb783fa7c6846a7dac.tar.bz2
strongswan-7ef310f5b41d13a20ee218fb783fa7c6846a7dac.tar.xz
do not append a NULL paramter to ECDSA algorithmIdentifiers
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);
}
/*