aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/plugins/x509/x509_cert.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstrongswan/plugins/x509/x509_cert.c')
-rw-r--r--src/libstrongswan/plugins/x509/x509_cert.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/src/libstrongswan/plugins/x509/x509_cert.c b/src/libstrongswan/plugins/x509/x509_cert.c
index 79c1678b3..ff176b710 100644
--- a/src/libstrongswan/plugins/x509/x509_cert.c
+++ b/src/libstrongswan/plugins/x509/x509_cert.c
@@ -731,22 +731,19 @@ static bool parse_certificate(private_x509_cert_t *this)
if (object.len > 0 && *object.ptr == 0x00)
{
/* skip initial bit string octet defining 0 unused bits */
- object.ptr++;
- object.len--;
-
- switch (key_alg)
- {
- case OID_RSA_ENCRYPTION:
- this->public_key = lib->creds->create(lib->creds,
- CRED_PUBLIC_KEY, KEY_RSA,
- BUILD_BLOB_ASN1_DER,
- chunk_clone(object),
- BUILD_END);
- break;
- default:
- DBG1("parsing key type %d failed", key_alg);
- goto end;
- }
+ object = chunk_skip(object, 1);
+ }
+ switch (key_alg)
+ {
+ case OID_RSA_ENCRYPTION:
+ this->public_key = lib->creds->create(lib->creds,
+ CRED_PUBLIC_KEY, KEY_RSA,
+ BUILD_BLOB_ASN1_DER, chunk_clone(object),
+ BUILD_END);
+ break;
+ default:
+ DBG1("parsing key type %d failed", key_alg);
+ goto end;
}
break;
case X509_OBJ_EXTN_ID: