|
@@ -79,8 +79,8 @@ X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc)
|
|
|
return sk_X509_ATTRIBUTE_delete(x, loc);
|
|
|
}
|
|
|
|
|
|
-STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
|
|
|
- X509_ATTRIBUTE *attr)
|
|
|
+STACK_OF(X509_ATTRIBUTE) *ossl_x509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
|
|
|
+ X509_ATTRIBUTE *attr)
|
|
|
{
|
|
|
X509_ATTRIBUTE *new_attr = NULL;
|
|
|
STACK_OF(X509_ATTRIBUTE) *sk = NULL;
|
|
@@ -89,10 +89,6 @@ STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
|
|
|
ERR_raise(ERR_LIB_X509, ERR_R_PASSED_NULL_PARAMETER);
|
|
|
return NULL;
|
|
|
}
|
|
|
- if (*x != NULL && X509at_get_attr_by_OBJ(*x, attr->object, -1) != -1) {
|
|
|
- ERR_raise(ERR_LIB_X509, X509_R_DUPLICATE_ATTRIBUTE);
|
|
|
- return NULL;
|
|
|
- }
|
|
|
|
|
|
if (*x == NULL) {
|
|
|
if ((sk = sk_X509_ATTRIBUTE_new_null()) == NULL) {
|
|
@@ -119,19 +115,68 @@ STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
+STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
|
|
|
+ X509_ATTRIBUTE *attr)
|
|
|
+{
|
|
|
+ if (x == NULL || attr == NULL) {
|
|
|
+ ERR_raise(ERR_LIB_X509, ERR_R_PASSED_NULL_PARAMETER);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ if (*x != NULL && X509at_get_attr_by_OBJ(*x, attr->object, -1) != -1) {
|
|
|
+ ERR_raise(ERR_LIB_X509, X509_R_DUPLICATE_ATTRIBUTE);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ return ossl_x509at_add1_attr(x, attr);
|
|
|
+}
|
|
|
+
|
|
|
+STACK_OF(X509_ATTRIBUTE) *ossl_x509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) **x,
|
|
|
+ const ASN1_OBJECT *obj,
|
|
|
+ int type,
|
|
|
+ const unsigned char *bytes,
|
|
|
+ int len)
|
|
|
+{
|
|
|
+ X509_ATTRIBUTE *attr;
|
|
|
+ STACK_OF(X509_ATTRIBUTE) *ret;
|
|
|
+
|
|
|
+ attr = X509_ATTRIBUTE_create_by_OBJ(NULL, obj, type, bytes, len);
|
|
|
+ if (attr == NULL)
|
|
|
+ return 0;
|
|
|
+ ret = ossl_x509at_add1_attr(x, attr);
|
|
|
+ X509_ATTRIBUTE_free(attr);
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE)
|
|
|
**x, const ASN1_OBJECT *obj,
|
|
|
int type,
|
|
|
const unsigned char *bytes,
|
|
|
int len)
|
|
|
+{
|
|
|
+ if (x == NULL || obj == NULL) {
|
|
|
+ ERR_raise(ERR_LIB_X509, ERR_R_PASSED_NULL_PARAMETER);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ if (*x != NULL && X509at_get_attr_by_OBJ(*x, obj, -1) != -1) {
|
|
|
+ ERR_raise(ERR_LIB_X509, X509_R_DUPLICATE_ATTRIBUTE);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ return ossl_x509at_add1_attr_by_OBJ(x, obj, type, bytes, len);
|
|
|
+}
|
|
|
+
|
|
|
+STACK_OF(X509_ATTRIBUTE) *ossl_x509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) **x,
|
|
|
+ int nid, int type,
|
|
|
+ const unsigned char *bytes,
|
|
|
+ int len)
|
|
|
{
|
|
|
X509_ATTRIBUTE *attr;
|
|
|
STACK_OF(X509_ATTRIBUTE) *ret;
|
|
|
|
|
|
- attr = X509_ATTRIBUTE_create_by_OBJ(NULL, obj, type, bytes, len);
|
|
|
+ attr = X509_ATTRIBUTE_create_by_NID(NULL, nid, type, bytes, len);
|
|
|
if (attr == NULL)
|
|
|
return 0;
|
|
|
- ret = X509at_add1_attr(x, attr);
|
|
|
+ ret = ossl_x509at_add1_attr(x, attr);
|
|
|
X509_ATTRIBUTE_free(attr);
|
|
|
return ret;
|
|
|
}
|
|
@@ -140,14 +185,32 @@ STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE)
|
|
|
**x, int nid, int type,
|
|
|
const unsigned char *bytes,
|
|
|
int len)
|
|
|
+{
|
|
|
+ if (x == NULL) {
|
|
|
+ ERR_raise(ERR_LIB_X509, ERR_R_PASSED_NULL_PARAMETER);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ if (*x != NULL && X509at_get_attr_by_NID(*x, nid, -1) != -1) {
|
|
|
+ ERR_raise(ERR_LIB_X509, X509_R_DUPLICATE_ATTRIBUTE);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ return ossl_x509at_add1_attr_by_NID(x, nid, type, bytes, len);
|
|
|
+}
|
|
|
+
|
|
|
+STACK_OF(X509_ATTRIBUTE) *ossl_x509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) **x,
|
|
|
+ const char *attrname,
|
|
|
+ int type,
|
|
|
+ const unsigned char *bytes,
|
|
|
+ int len)
|
|
|
{
|
|
|
X509_ATTRIBUTE *attr;
|
|
|
STACK_OF(X509_ATTRIBUTE) *ret;
|
|
|
|
|
|
- attr = X509_ATTRIBUTE_create_by_NID(NULL, nid, type, bytes, len);
|
|
|
+ attr = X509_ATTRIBUTE_create_by_txt(NULL, attrname, type, bytes, len);
|
|
|
if (attr == NULL)
|
|
|
return 0;
|
|
|
- ret = X509at_add1_attr(x, attr);
|
|
|
+ ret = ossl_x509at_add1_attr(x, attr);
|
|
|
X509_ATTRIBUTE_free(attr);
|
|
|
return ret;
|
|
|
}
|