提交 95ed0e7c 编写于 作者: D Dr. Stephen Henson

Embed X509_REQ_INFO

Reviewed-by: NRich Salz <rsalz@openssl.org>
上级 5cf6abd8
...@@ -108,7 +108,7 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags, ...@@ -108,7 +108,7 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags,
if (nmflags == X509_FLAG_COMPAT) if (nmflags == X509_FLAG_COMPAT)
nmindent = 16; nmindent = 16;
ri = x->req_info; ri = &x->req_info;
if (!(cflag & X509_FLAG_NO_HEADER)) { if (!(cflag & X509_FLAG_NO_HEADER)) {
if (BIO_write(bp, "Certificate Request:\n", 21) <= 0) if (BIO_write(bp, "Certificate Request:\n", 21) <= 0)
goto err; goto err;
...@@ -153,7 +153,7 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags, ...@@ -153,7 +153,7 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags,
if (BIO_printf(bp, "%8sAttributes:\n", "") <= 0) if (BIO_printf(bp, "%8sAttributes:\n", "") <= 0)
goto err; goto err;
sk = x->req_info->attributes; sk = x->req_info.attributes;
if (sk_X509_ATTRIBUTE_num(sk) == 0) { if (sk_X509_ATTRIBUTE_num(sk) == 0) {
if (BIO_printf(bp, "%12sa0:00\n", "") <= 0) if (BIO_printf(bp, "%12sa0:00\n", "") <= 0)
goto err; goto err;
......
...@@ -107,7 +107,7 @@ ASN1_SEQUENCE_enc(X509_REQ_INFO, enc, rinf_cb) = { ...@@ -107,7 +107,7 @@ ASN1_SEQUENCE_enc(X509_REQ_INFO, enc, rinf_cb) = {
IMPLEMENT_ASN1_FUNCTIONS(X509_REQ_INFO) IMPLEMENT_ASN1_FUNCTIONS(X509_REQ_INFO)
ASN1_SEQUENCE_ref(X509_REQ, 0, CRYPTO_LOCK_X509_REQ) = { ASN1_SEQUENCE_ref(X509_REQ, 0, CRYPTO_LOCK_X509_REQ) = {
ASN1_SIMPLE(X509_REQ, req_info, X509_REQ_INFO), ASN1_EMBED(X509_REQ, req_info, X509_REQ_INFO),
ASN1_SIMPLE(X509_REQ, sig_alg, X509_ALGOR), ASN1_SIMPLE(X509_REQ, sig_alg, X509_ALGOR),
ASN1_SIMPLE(X509_REQ, signature, ASN1_BIT_STRING) ASN1_SIMPLE(X509_REQ, signature, ASN1_BIT_STRING)
} ASN1_SEQUENCE_END_ref(X509_REQ, X509_REQ) } ASN1_SEQUENCE_END_ref(X509_REQ, X509_REQ)
......
...@@ -100,7 +100,7 @@ struct X509_req_info_st { ...@@ -100,7 +100,7 @@ struct X509_req_info_st {
}; };
struct X509_req_st { struct X509_req_st {
X509_REQ_INFO *req_info; X509_REQ_INFO req_info;
X509_ALGOR *sig_alg; X509_ALGOR *sig_alg;
ASN1_BIT_STRING *signature; ASN1_BIT_STRING *signature;
int references; int references;
......
...@@ -80,7 +80,7 @@ X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey) ...@@ -80,7 +80,7 @@ X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey)
/* duplicate the request */ /* duplicate the request */
xi = &ret->cert_info; xi = &ret->cert_info;
if (sk_X509_ATTRIBUTE_num(r->req_info->attributes) != 0) { if (sk_X509_ATTRIBUTE_num(r->req_info.attributes) != 0) {
if ((xi->version = ASN1_INTEGER_new()) == NULL) if ((xi->version = ASN1_INTEGER_new()) == NULL)
goto err; goto err;
if (!ASN1_INTEGER_set(xi->version, 2)) if (!ASN1_INTEGER_set(xi->version, 2))
......
...@@ -81,7 +81,7 @@ X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md) ...@@ -81,7 +81,7 @@ X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md)
goto err; goto err;
} }
ri = ret->req_info; ri = &ret->req_info;
ri->version->length = 1; ri->version->length = 1;
ri->version->data = OPENSSL_malloc(1); ri->version->data = OPENSSL_malloc(1);
...@@ -112,9 +112,9 @@ X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md) ...@@ -112,9 +112,9 @@ X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md)
EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req) EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req)
{ {
if ((req == NULL) || (req->req_info == NULL)) if (req == NULL)
return (NULL); return (NULL);
return (X509_PUBKEY_get(req->req_info->pubkey)); return (X509_PUBKEY_get(req->req_info.pubkey));
} }
int X509_REQ_check_private_key(X509_REQ *x, EVP_PKEY *k) int X509_REQ_check_private_key(X509_REQ *x, EVP_PKEY *k)
...@@ -195,7 +195,7 @@ STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req) ...@@ -195,7 +195,7 @@ STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req)
int idx, *pnid; int idx, *pnid;
const unsigned char *p; const unsigned char *p;
if ((req == NULL) || (req->req_info == NULL) || !ext_nids) if ((req == NULL) || !ext_nids)
return (NULL); return (NULL);
for (pnid = ext_nids; *pnid != NID_undef; pnid++) { for (pnid = ext_nids; *pnid != NID_undef; pnid++) {
idx = X509_REQ_get_attr_by_NID(req, *pnid, -1); idx = X509_REQ_get_attr_by_NID(req, *pnid, -1);
...@@ -244,33 +244,33 @@ int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts) ...@@ -244,33 +244,33 @@ int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts)
int X509_REQ_get_attr_count(const X509_REQ *req) int X509_REQ_get_attr_count(const X509_REQ *req)
{ {
return X509at_get_attr_count(req->req_info->attributes); return X509at_get_attr_count(req->req_info.attributes);
} }
int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos) 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); 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 X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj,
int lastpos) int lastpos)
{ {
return X509at_get_attr_by_OBJ(req->req_info->attributes, obj, 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) X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc)
{ {
return X509at_get_attr(req->req_info->attributes, loc); return X509at_get_attr(req->req_info.attributes, loc);
} }
X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc) X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc)
{ {
return X509at_delete_attr(req->req_info->attributes, loc); return X509at_delete_attr(req->req_info.attributes, loc);
} }
int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr) int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr)
{ {
if (X509at_add1_attr(&req->req_info->attributes, attr)) if (X509at_add1_attr(&req->req_info.attributes, attr))
return 1; return 1;
return 0; return 0;
} }
...@@ -279,7 +279,7 @@ int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, ...@@ -279,7 +279,7 @@ int X509_REQ_add1_attr_by_OBJ(X509_REQ *req,
const ASN1_OBJECT *obj, int type, const ASN1_OBJECT *obj, int type,
const unsigned char *bytes, int len) const unsigned char *bytes, int len)
{ {
if (X509at_add1_attr_by_OBJ(&req->req_info->attributes, obj, if (X509at_add1_attr_by_OBJ(&req->req_info.attributes, obj,
type, bytes, len)) type, bytes, len))
return 1; return 1;
return 0; return 0;
...@@ -289,7 +289,7 @@ int X509_REQ_add1_attr_by_NID(X509_REQ *req, ...@@ -289,7 +289,7 @@ int X509_REQ_add1_attr_by_NID(X509_REQ *req,
int nid, int type, int nid, int type,
const unsigned char *bytes, int len) const unsigned char *bytes, int len)
{ {
if (X509at_add1_attr_by_NID(&req->req_info->attributes, nid, if (X509at_add1_attr_by_NID(&req->req_info.attributes, nid,
type, bytes, len)) type, bytes, len))
return 1; return 1;
return 0; return 0;
...@@ -299,7 +299,7 @@ int X509_REQ_add1_attr_by_txt(X509_REQ *req, ...@@ -299,7 +299,7 @@ int X509_REQ_add1_attr_by_txt(X509_REQ *req,
const char *attrname, int type, const char *attrname, int type,
const unsigned char *bytes, int len) const unsigned char *bytes, int len)
{ {
if (X509at_add1_attr_by_txt(&req->req_info->attributes, attrname, if (X509at_add1_attr_by_txt(&req->req_info.attributes, attrname,
type, bytes, len)) type, bytes, len))
return 1; return 1;
return 0; return 0;
...@@ -307,10 +307,10 @@ int X509_REQ_add1_attr_by_txt(X509_REQ *req, ...@@ -307,10 +307,10 @@ int X509_REQ_add1_attr_by_txt(X509_REQ *req,
long X509_REQ_get_version(X509_REQ *req) long X509_REQ_get_version(X509_REQ *req)
{ {
return ASN1_INTEGER_get(req->req_info->version); return ASN1_INTEGER_get(req->req_info.version);
} }
X509_NAME *X509_REQ_get_subject_name(X509_REQ *req) X509_NAME *X509_REQ_get_subject_name(X509_REQ *req)
{ {
return req->req_info->subject; return req->req_info.subject;
} }
...@@ -68,22 +68,22 @@ int X509_REQ_set_version(X509_REQ *x, long version) ...@@ -68,22 +68,22 @@ int X509_REQ_set_version(X509_REQ *x, long version)
{ {
if (x == NULL) if (x == NULL)
return (0); return (0);
x->req_info->enc.modified = 1; x->req_info.enc.modified = 1;
return (ASN1_INTEGER_set(x->req_info->version, version)); return (ASN1_INTEGER_set(x->req_info.version, version));
} }
int X509_REQ_set_subject_name(X509_REQ *x, X509_NAME *name) int X509_REQ_set_subject_name(X509_REQ *x, X509_NAME *name)
{ {
if ((x == NULL) || (x->req_info == NULL)) if (x == NULL)
return (0); return (0);
x->req_info->enc.modified = 1; x->req_info.enc.modified = 1;
return (X509_NAME_set(&x->req_info->subject, name)); return (X509_NAME_set(&x->req_info.subject, name));
} }
int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey) int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey)
{ {
if ((x == NULL) || (x->req_info == NULL)) if (x == NULL)
return (0); return (0);
x->req_info->enc.modified = 1; x->req_info.enc.modified = 1;
return (X509_PUBKEY_set(&x->req_info->pubkey, pkey)); return (X509_PUBKEY_set(&x->req_info.pubkey, pkey));
} }
...@@ -83,7 +83,7 @@ int X509_verify(X509 *a, EVP_PKEY *r) ...@@ -83,7 +83,7 @@ int X509_verify(X509 *a, EVP_PKEY *r)
int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r) int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r)
{ {
return (ASN1_item_verify(ASN1_ITEM_rptr(X509_REQ_INFO), return (ASN1_item_verify(ASN1_ITEM_rptr(X509_REQ_INFO),
a->sig_alg, a->signature, a->req_info, r)); a->sig_alg, a->signature, &a->req_info, r));
} }
int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r) int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r)
...@@ -116,13 +116,13 @@ int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert) ...@@ -116,13 +116,13 @@ int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert)
int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md) int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md)
{ {
return (ASN1_item_sign(ASN1_ITEM_rptr(X509_REQ_INFO), x->sig_alg, NULL, return (ASN1_item_sign(ASN1_ITEM_rptr(X509_REQ_INFO), x->sig_alg, NULL,
x->signature, x->req_info, pkey, md)); x->signature, &x->req_info, pkey, md));
} }
int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx) int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx)
{ {
return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_REQ_INFO), return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_REQ_INFO),
x->sig_alg, NULL, x->signature, x->req_info, x->sig_alg, NULL, x->signature, &x->req_info,
ctx); ctx);
} }
......
...@@ -126,7 +126,7 @@ static ASN1_OCTET_STRING *s2i_skey_id(X509V3_EXT_METHOD *method, ...@@ -126,7 +126,7 @@ static ASN1_OCTET_STRING *s2i_skey_id(X509V3_EXT_METHOD *method,
} }
if (ctx->subject_req) if (ctx->subject_req)
pk = ctx->subject_req->req_info->pubkey->public_key; pk = ctx->subject_req->req_info.pubkey->public_key;
else else
pk = ctx->subject_cert->cert_info.key->public_key; pk = ctx->subject_cert->cert_info.key->public_key;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册