summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/p8_pkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1/p8_pkey.c')
-rw-r--r--src/lib/libcrypto/asn1/p8_pkey.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/src/lib/libcrypto/asn1/p8_pkey.c b/src/lib/libcrypto/asn1/p8_pkey.c
index 9d26cf51ec..c95d7e55a0 100644
--- a/src/lib/libcrypto/asn1/p8_pkey.c
+++ b/src/lib/libcrypto/asn1/p8_pkey.c
@@ -90,13 +90,11 @@ int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,
90 unsigned char *penc, int penclen) 90 unsigned char *penc, int penclen)
91{ 91{
92 unsigned char **ppenc = NULL; 92 unsigned char **ppenc = NULL;
93 if (version >= 0) 93 if (version >= 0) {
94 {
95 if (!ASN1_INTEGER_set(priv->version, version)) 94 if (!ASN1_INTEGER_set(priv->version, version))
96 return 0; 95 return 0;
97 } 96 }
98 if (penc) 97 if (penc) {
99 {
100 int pmtype; 98 int pmtype;
101 ASN1_OCTET_STRING *oct; 99 ASN1_OCTET_STRING *oct;
102 oct = ASN1_OCTET_STRING_new(); 100 oct = ASN1_OCTET_STRING_new();
@@ -111,8 +109,7 @@ int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,
111 pmtype = V_ASN1_OCTET_STRING; 109 pmtype = V_ASN1_OCTET_STRING;
112 ASN1_TYPE_set(priv->pkey, pmtype, oct); 110 ASN1_TYPE_set(priv->pkey, pmtype, oct);
113 } 111 }
114 if (!X509_ALGOR_set0(priv->pkeyalg, aobj, ptype, pval)) 112 if (!X509_ALGOR_set0(priv->pkeyalg, aobj, ptype, pval)) {
115 {
116 /* If call fails do not swallow 'enc' */ 113 /* If call fails do not swallow 'enc' */
117 if (ppenc) 114 if (ppenc)
118 *ppenc = NULL; 115 *ppenc = NULL;
@@ -128,20 +125,15 @@ int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg,
128{ 125{
129 if (ppkalg) 126 if (ppkalg)
130 *ppkalg = p8->pkeyalg->algorithm; 127 *ppkalg = p8->pkeyalg->algorithm;
131 if(p8->pkey->type == V_ASN1_OCTET_STRING) 128 if(p8->pkey->type == V_ASN1_OCTET_STRING) {
132 {
133 p8->broken = PKCS8_OK; 129 p8->broken = PKCS8_OK;
134 if (pk) 130 if (pk) {
135 {
136 *pk = p8->pkey->value.octet_string->data; 131 *pk = p8->pkey->value.octet_string->data;
137 *ppklen = p8->pkey->value.octet_string->length; 132 *ppklen = p8->pkey->value.octet_string->length;
138 } 133 }
139 } 134 } else if (p8->pkey->type == V_ASN1_SEQUENCE) {
140 else if (p8->pkey->type == V_ASN1_SEQUENCE)
141 {
142 p8->broken = PKCS8_NO_OCTET; 135 p8->broken = PKCS8_NO_OCTET;
143 if (pk) 136 if (pk) {
144 {
145 *pk = p8->pkey->value.sequence->data; 137 *pk = p8->pkey->value.sequence->data;
146 *ppklen = p8->pkey->value.sequence->length; 138 *ppklen = p8->pkey->value.sequence->length;
147 } 139 }