test_mod_mul is useful, let's run it more often.
[openssl.git] / crypto / x509 / x509_req.c
index b52a59c263173a6067d3d0d14349060b26718915..7eca1bd57a3df0ab162d632d0c9d8b8bc88b9933 100644 (file)
@@ -66,7 +66,7 @@
 #include <openssl/buffer.h>
 #include <openssl/pem.h>
 
-X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, EVP_MD *md)
+X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md)
        {
        X509_REQ *ret;
        X509_REQ_INFO *ri;
@@ -83,7 +83,7 @@ X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, EVP_MD *md)
        ri=ret->req_info;
 
        ri->version->length=1;
-       ri->version->data=(unsigned char *)Malloc(1);
+       ri->version->data=(unsigned char *)OPENSSL_malloc(1);
        if (ri->version->data == NULL) goto err;
        ri->version->data[0]=0; /* version == 0 */
 
@@ -132,7 +132,7 @@ int X509_REQ_extension_nid(int req_nid)
        }
 }
 
-int *X509_REQ_get_extesion_nids(void)
+int *X509_REQ_get_extension_nids(void)
 {
        return ext_nids;
 }
@@ -188,7 +188,7 @@ int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts,
        /* Generate encoding of extensions */
        len = i2d_ASN1_SET_OF_X509_EXTENSION(exts, NULL, i2d_X509_EXTENSION,
                        V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL, IS_SEQUENCE);
-       if(!(p = Malloc(len))) goto err;
+       if(!(p = OPENSSL_malloc(len))) goto err;
        q = p;
        i2d_ASN1_SET_OF_X509_EXTENSION(exts, &q, i2d_X509_EXTENSION,
                        V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL, IS_SEQUENCE);
@@ -204,7 +204,7 @@ int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts,
        if(!sk_X509_ATTRIBUTE_push(req->req_info->attributes, attr)) goto err;
        return 1;
        err:
-       if(p) Free(p);
+       if(p) OPENSSL_free(p);
        X509_ATTRIBUTE_free(attr);
        ASN1_TYPE_free(at);
        return 0;
@@ -214,3 +214,65 @@ int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts)
 {
        return X509_REQ_add_extensions_nid(req, exts, NID_ext_req);
 }
+
+/* Request attribute functions */
+
+int X509_REQ_get_attr_count(const X509_REQ *req)
+{
+       return X509at_get_attr_count(req->req_info->attributes);
+}
+
+int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid,
+                         int lastpos)
+{
+       return X509at_get_attr_by_NID(req->req_info->attributes, nid, lastpos);
+}
+
+int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj,
+                         int lastpos)
+{
+       return X509at_get_attr_by_OBJ(req->req_info->attributes, obj, lastpos);
+}
+
+X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc)
+{
+       return X509at_get_attr(req->req_info->attributes, loc);
+}
+
+X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc)
+{
+       return X509at_delete_attr(req->req_info->attributes, loc);
+}
+
+int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr)
+{
+       if(X509at_add1_attr(&req->req_info->attributes, attr)) return 1;
+       return 0;
+}
+
+int X509_REQ_add1_attr_by_OBJ(X509_REQ *req,
+                       ASN1_OBJECT *obj, int type,
+                       unsigned char *bytes, int len)
+{
+       if(X509at_add1_attr_by_OBJ(&req->req_info->attributes, obj,
+                               type, bytes, len)) return 1;
+       return 0;
+}
+
+int X509_REQ_add1_attr_by_NID(X509_REQ *req,
+                       int nid, int type,
+                       unsigned char *bytes, int len)
+{
+       if(X509at_add1_attr_by_NID(&req->req_info->attributes, nid,
+                               type, bytes, len)) return 1;
+       return 0;
+}
+
+int X509_REQ_add1_attr_by_txt(X509_REQ *req,
+                       char *attrname, int type,
+                       unsigned char *bytes, int len)
+{
+       if(X509at_add1_attr_by_txt(&req->req_info->attributes, attrname,
+                               type, bytes, len)) return 1;
+       return 0;
+}