@@ -136,6 +136,25 @@ struct x509_certificate *x509_cert_parse(const void *data, size_t datalen)
if (ret < 0)
goto error_decode;
+ if (cert->self_signed) {
+ if (!cert->sig->auth_ids[0]) {
+ /* Duplicate cert->id */
+ kid = asymmetric_key_generate_id(cert->raw_serial,
+ cert->raw_serial_size,
+ cert->raw_issuer,
+ cert->raw_issuer_size);
+ cert->sig->auth_ids[0] = kid;
+ }
+
+ if (!cert->sig->auth_ids[1] && cert->skid) {
+ /* Duplicate cert->skid */
+ kid = asymmetric_key_generate_id(cert->raw_skid,
+ cert->raw_skid_size,
+ "", 0);
+ cert->sig->auth_ids[1] = kid;
+ }
+ }
+
kfree(ctx);
return cert;