aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2007-09-19 04:57:45 +0000
committerAndreas Steffen <andreas.steffen@strongswan.org>2007-09-19 04:57:45 +0000
commite5f1ead26f4b03167e9fe6dff96b3b270298c653 (patch)
treeb1e2b3f5c87cba253882ae8909d256f2fd3d37c1 /src
parente0b3a60578e8fdbbf41affe61afbb317065043c6 (diff)
downloadstrongswan-e5f1ead26f4b03167e9fe6dff96b3b270298c653.tar.bz2
strongswan-e5f1ead26f4b03167e9fe6dff96b3b270298c653.tar.xz
correct build of the ac signature
Diffstat (limited to 'src')
-rw-r--r--src/openac/build.c13
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,