diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2007-09-19 04:57:45 +0000 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2007-09-19 04:57:45 +0000 |
commit | e5f1ead26f4b03167e9fe6dff96b3b270298c653 (patch) | |
tree | b1e2b3f5c87cba253882ae8909d256f2fd3d37c1 /src | |
parent | e0b3a60578e8fdbbf41affe61afbb317065043c6 (diff) | |
download | strongswan-e5f1ead26f4b03167e9fe6dff96b3b270298c653.tar.bz2 strongswan-e5f1ead26f4b03167e9fe6dff96b3b270298c653.tar.xz |
correct build of the ac signature
Diffstat (limited to 'src')
-rw-r--r-- | src/openac/build.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/openac/build.c b/src/openac/build.c index f26ccaf66..5c61a1aea 100644 --- a/src/openac/build.c +++ b/src/openac/build.c @@ -18,6 +18,7 @@ #include <stdlib.h> #include <string.h> +#include <stdio.h> #include <asn1/oid.h> #include <asn1/asn1.h> @@ -173,16 +174,24 @@ static chunk_t build_attr_cert_info(void) build_extensions()); } + /** * build an X.509 attribute certificate */ chunk_t build_attr_cert(void) { - chunk_t signatureValue; + u_char *pos; + chunk_t rawSignature, signatureValue; chunk_t attributeCertificateInfo = build_attr_cert_info(); + /* build the signature */ signerkey->build_emsa_pkcs1_signature(signerkey, HASH_SHA1, - attributeCertificateInfo, &signatureValue); + attributeCertificateInfo, &rawSignature); + pos = build_asn1_object(&signatureValue, ASN1_BIT_STRING, + 1 + rawSignature.len); + *pos++ = 0x00; + memcpy(pos, rawSignature.ptr, rawSignature.len); + free(rawSignature.ptr); return asn1_wrap(ASN1_SEQUENCE, "mcm", attributeCertificateInfo, |