summaryrefslogtreecommitdiff
path: root/test/helpers
diff options
context:
space:
mode:
authorGraham Woodward <graham.woodward@ibm.com>2022-08-19 08:46:47 +0100
committerMatt Caswell <matt@openssl.org>2022-09-23 17:40:02 +0100
commite869c867c1c405de3b6538586f17b67937556a4b (patch)
tree21feab85e639e54c1e2a8a6d1a68a807f2e7dae4 /test/helpers
parentecc920b3277311e859282b6d400ba8566d7ea8c1 (diff)
downloadopenssl-new-e869c867c1c405de3b6538586f17b67937556a4b.tar.gz
Allow PKCS12 export to set arbitrary bag attributes
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/19025)
Diffstat (limited to 'test/helpers')
-rw-r--r--test/helpers/pkcs12.c14
-rw-r--r--test/helpers/pkcs12.h1
2 files changed, 12 insertions, 3 deletions
diff --git a/test/helpers/pkcs12.c b/test/helpers/pkcs12.c
index d5269e6d20..c2969c21d0 100644
--- a/test/helpers/pkcs12.c
+++ b/test/helpers/pkcs12.c
@@ -338,13 +338,15 @@ err:
* PKCS12 safeBag/attribute builder
*/
-static int add_attributes(PKCS12_SAFEBAG *bag, const PKCS12_ATTR *attrs)
+static int add_attributes(PKCS12_SAFEBAG *bag, const PKCS12_ATTR *attr)
{
int ret = 0;
int attr_nid;
- const PKCS12_ATTR *p_attr = attrs;
+ const PKCS12_ATTR *p_attr = attr;
+ STACK_OF(X509_ATTRIBUTE)* attrs = NULL;
+ X509_ATTRIBUTE *x509_attr = NULL;
- if (attrs == NULL)
+ if (attr == NULL)
return 1;
while (p_attr->oid != NULL) {
@@ -358,6 +360,12 @@ static int add_attributes(PKCS12_SAFEBAG *bag, const PKCS12_ATTR *attrs)
if (!TEST_true(PKCS12_add_localkeyid(bag, (unsigned char *)p_attr->value,
strlen(p_attr->value))))
goto err;
+ } else if (attr_nid == NID_oracle_jdk_trustedkeyusage) {
+ attrs = (STACK_OF(X509_ATTRIBUTE)*)PKCS12_SAFEBAG_get0_attrs(bag);
+ x509_attr = X509_ATTRIBUTE_create(attr_nid, V_ASN1_OBJECT, OBJ_txt2obj(p_attr->value, 0));
+ X509at_add1_attr(&attrs, x509_attr);
+ PKCS12_SAFEBAG_set0_attrs(bag, attrs);
+ X509_ATTRIBUTE_free(x509_attr);
} else {
/* Custom attribute values limited to ASCII in these tests */
if (!TEST_true(PKCS12_add1_attr_by_txt(bag, p_attr->oid, MBSTRING_ASC,
diff --git a/test/helpers/pkcs12.h b/test/helpers/pkcs12.h
index d1a3b93d32..f09013222e 100644
--- a/test/helpers/pkcs12.h
+++ b/test/helpers/pkcs12.h
@@ -82,6 +82,7 @@ void add_keybag(PKCS12_BUILDER *pb, const unsigned char *bytes, int len,
const PKCS12_ATTR *attrs, const PKCS12_ENC *enc);
void add_secretbag(PKCS12_BUILDER *pb, int secret_nid, const char *secret,
const PKCS12_ATTR *attrs);
+void add_extra_attr(PKCS12_BUILDER *pb);
/* Decode/check functions */
void start_check_pkcs12(PKCS12_BUILDER *pb);