summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2015-08-31 12:58:07 +0100
committerDr. Stephen Henson <steve@openssl.org>2015-08-31 20:58:33 +0100
commit124055a96e8533735b32e6af0fa7913c100ffad2 (patch)
tree1ba18c2a6162f80c8eb8514ffc3f005da879ec8d /crypto
parentbc3686dfb031445c5af9a256a46a57dc1277a190 (diff)
make X509_REQ opaque
Reviewed-by: Rich Salz <rsalz@openssl.org>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/asn1/t_req.c1
-rw-r--r--crypto/asn1/x_req.c1
-rw-r--r--crypto/include/internal/x509_int.h16
-rw-r--r--crypto/x509/x509_r2x.c1
-rw-r--r--crypto/x509/x509_req.c11
-rw-r--r--crypto/x509/x509rset.c4
-rw-r--r--crypto/x509/x_all.c1
-rw-r--r--crypto/x509v3/v3_skey.c1
-rw-r--r--crypto/x509v3/v3_utl.c1
9 files changed, 37 insertions, 0 deletions
diff --git a/crypto/asn1/t_req.c b/crypto/asn1/t_req.c
index fd83023335..7d72e0a26f 100644
--- a/crypto/asn1/t_req.c
+++ b/crypto/asn1/t_req.c
@@ -62,6 +62,7 @@
#include <openssl/bn.h>
#include <openssl/objects.h>
#include <openssl/x509.h>
+#include "internal/x509_int.h"
#include <openssl/x509v3.h>
#ifndef OPENSSL_NO_RSA
# include <openssl/rsa.h>
diff --git a/crypto/asn1/x_req.c b/crypto/asn1/x_req.c
index 1679a56070..102b1f6332 100644
--- a/crypto/asn1/x_req.c
+++ b/crypto/asn1/x_req.c
@@ -60,6 +60,7 @@
#include "internal/cryptlib.h"
#include <openssl/asn1t.h>
#include <openssl/x509.h>
+#include "internal/x509_int.h"
/*-
* X509_REQ_INFO is handled in an unusual way to get round
diff --git a/crypto/include/internal/x509_int.h b/crypto/include/internal/x509_int.h
index 644b27d405..70abb2cd45 100644
--- a/crypto/include/internal/x509_int.h
+++ b/crypto/include/internal/x509_int.h
@@ -89,3 +89,19 @@ struct x509_cert_aux_st {
ASN1_OCTET_STRING *keyid; /* key id of private key */
STACK_OF(X509_ALGOR) *other; /* other unspecified info */
};
+
+struct X509_req_info_st {
+ ASN1_ENCODING enc;
+ ASN1_INTEGER *version;
+ X509_NAME *subject;
+ X509_PUBKEY *pubkey;
+ /* d=2 hl=2 l= 0 cons: cont: 00 */
+ STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */
+};
+
+struct X509_req_st {
+ X509_REQ_INFO *req_info;
+ X509_ALGOR *sig_alg;
+ ASN1_BIT_STRING *signature;
+ int references;
+};
diff --git a/crypto/x509/x509_r2x.c b/crypto/x509/x509_r2x.c
index d9c3cfd42b..abf75cdb7a 100644
--- a/crypto/x509/x509_r2x.c
+++ b/crypto/x509/x509_r2x.c
@@ -62,6 +62,7 @@
#include <openssl/evp.h>
#include <openssl/asn1.h>
#include <openssl/x509.h>
+#include "internal/x509_int.h"
#include <openssl/objects.h>
#include <openssl/buffer.h>
diff --git a/crypto/x509/x509_req.c b/crypto/x509/x509_req.c
index b6c46980a0..70e27b8306 100644
--- a/crypto/x509/x509_req.c
+++ b/crypto/x509/x509_req.c
@@ -63,6 +63,7 @@
#include <openssl/asn1.h>
#include <openssl/asn1t.h>
#include <openssl/x509.h>
+#include "internal/x509_int.h"
#include <openssl/objects.h>
#include <openssl/buffer.h>
#include <openssl/pem.h>
@@ -303,3 +304,13 @@ int X509_REQ_add1_attr_by_txt(X509_REQ *req,
return 1;
return 0;
}
+
+long X509_REQ_get_version(X509_REQ *req)
+{
+ return ASN1_INTEGER_get(req->req_info->version);
+}
+
+X509_NAME *X509_REQ_get_subject_name(X509_REQ *req)
+{
+ return req->req_info->subject;
+}
diff --git a/crypto/x509/x509rset.c b/crypto/x509/x509rset.c
index cafaf75601..cf9bdfb3e0 100644
--- a/crypto/x509/x509rset.c
+++ b/crypto/x509/x509rset.c
@@ -62,11 +62,13 @@
#include <openssl/objects.h>
#include <openssl/evp.h>
#include <openssl/x509.h>
+#include "internal/x509_int.h"
int X509_REQ_set_version(X509_REQ *x, long version)
{
if (x == NULL)
return (0);
+ x->req_info->enc.modified = 1;
return (ASN1_INTEGER_set(x->req_info->version, version));
}
@@ -74,6 +76,7 @@ int X509_REQ_set_subject_name(X509_REQ *x, X509_NAME *name)
{
if ((x == NULL) || (x->req_info == NULL))
return (0);
+ x->req_info->enc.modified = 1;
return (X509_NAME_set(&x->req_info->subject, name));
}
@@ -81,5 +84,6 @@ int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey)
{
if ((x == NULL) || (x->req_info == NULL))
return (0);
+ x->req_info->enc.modified = 1;
return (X509_PUBKEY_set(&x->req_info->pubkey, pkey));
}
diff --git a/crypto/x509/x_all.c b/crypto/x509/x_all.c
index a7ad148793..591a95188d 100644
--- a/crypto/x509/x_all.c
+++ b/crypto/x509/x_all.c
@@ -63,6 +63,7 @@
#include <openssl/asn1.h>
#include <openssl/evp.h>
#include <openssl/x509.h>
+#include "internal/x509_int.h"
#include <openssl/ocsp.h>
#ifndef OPENSSL_NO_RSA
# include <openssl/rsa.h>
diff --git a/crypto/x509v3/v3_skey.c b/crypto/x509v3/v3_skey.c
index c0c71c0882..a1167cc2f8 100644
--- a/crypto/x509v3/v3_skey.c
+++ b/crypto/x509v3/v3_skey.c
@@ -60,6 +60,7 @@
#include <stdio.h>
#include "internal/cryptlib.h"
#include <openssl/x509v3.h>
+#include "internal/x509_int.h"
static ASN1_OCTET_STRING *s2i_skey_id(X509V3_EXT_METHOD *method,
X509V3_CTX *ctx, char *str);
diff --git a/crypto/x509v3/v3_utl.c b/crypto/x509v3/v3_utl.c
index cd8aff291f..15029f9ba5 100644
--- a/crypto/x509v3/v3_utl.c
+++ b/crypto/x509v3/v3_utl.c
@@ -63,6 +63,7 @@
#include "internal/cryptlib.h"
#include <openssl/conf.h>
#include <openssl/x509v3.h>
+#include "internal/x509_int.h"
#include <openssl/bn.h>
static char *strip_spaces(char *name);