diff options
author | djm <> | 2005-04-29 05:39:33 +0000 |
---|---|---|
committer | djm <> | 2005-04-29 05:39:33 +0000 |
commit | 68edd00d9258df93b1366c71ac124e0cadf7bc08 (patch) | |
tree | 3ce4ae2a9747bbc11aed1f95f9bbea92c41f8683 /src/lib/libcrypto/asn1/x_pubkey.c | |
parent | f396ed0f5ce0af56bfde2e75e15cf1f52924c779 (diff) | |
download | openbsd-68edd00d9258df93b1366c71ac124e0cadf7bc08.tar.gz openbsd-68edd00d9258df93b1366c71ac124e0cadf7bc08.tar.bz2 openbsd-68edd00d9258df93b1366c71ac124e0cadf7bc08.zip |
resolve conflicts
Diffstat (limited to 'src/lib/libcrypto/asn1/x_pubkey.c')
-rw-r--r-- | src/lib/libcrypto/asn1/x_pubkey.c | 50 |
1 files changed, 38 insertions, 12 deletions
diff --git a/src/lib/libcrypto/asn1/x_pubkey.c b/src/lib/libcrypto/asn1/x_pubkey.c index d958540120..7d6d71af88 100644 --- a/src/lib/libcrypto/asn1/x_pubkey.c +++ b/src/lib/libcrypto/asn1/x_pubkey.c | |||
@@ -80,8 +80,7 @@ IMPLEMENT_ASN1_FUNCTIONS(X509_PUBKEY) | |||
80 | 80 | ||
81 | int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey) | 81 | int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey) |
82 | { | 82 | { |
83 | int ok=0; | 83 | X509_PUBKEY *pk=NULL; |
84 | X509_PUBKEY *pk; | ||
85 | X509_ALGOR *a; | 84 | X509_ALGOR *a; |
86 | ASN1_OBJECT *o; | 85 | ASN1_OBJECT *o; |
87 | unsigned char *s,*p = NULL; | 86 | unsigned char *s,*p = NULL; |
@@ -104,7 +103,11 @@ int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey) | |||
104 | (a->parameter->type != V_ASN1_NULL)) | 103 | (a->parameter->type != V_ASN1_NULL)) |
105 | { | 104 | { |
106 | ASN1_TYPE_free(a->parameter); | 105 | ASN1_TYPE_free(a->parameter); |
107 | a->parameter=ASN1_TYPE_new(); | 106 | if (!(a->parameter=ASN1_TYPE_new())) |
107 | { | ||
108 | X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE); | ||
109 | goto err; | ||
110 | } | ||
108 | a->parameter->type=V_ASN1_NULL; | 111 | a->parameter->type=V_ASN1_NULL; |
109 | } | 112 | } |
110 | } | 113 | } |
@@ -118,14 +121,34 @@ int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey) | |||
118 | dsa=pkey->pkey.dsa; | 121 | dsa=pkey->pkey.dsa; |
119 | dsa->write_params=0; | 122 | dsa->write_params=0; |
120 | ASN1_TYPE_free(a->parameter); | 123 | ASN1_TYPE_free(a->parameter); |
121 | i=i2d_DSAparams(dsa,NULL); | 124 | if ((i=i2d_DSAparams(dsa,NULL)) <= 0) |
122 | if ((p=(unsigned char *)OPENSSL_malloc(i)) == NULL) goto err; | 125 | goto err; |
126 | if (!(p=(unsigned char *)OPENSSL_malloc(i))) | ||
127 | { | ||
128 | X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE); | ||
129 | goto err; | ||
130 | } | ||
123 | pp=p; | 131 | pp=p; |
124 | i2d_DSAparams(dsa,&pp); | 132 | i2d_DSAparams(dsa,&pp); |
125 | a->parameter=ASN1_TYPE_new(); | 133 | if (!(a->parameter=ASN1_TYPE_new())) |
134 | { | ||
135 | OPENSSL_free(p); | ||
136 | X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE); | ||
137 | goto err; | ||
138 | } | ||
126 | a->parameter->type=V_ASN1_SEQUENCE; | 139 | a->parameter->type=V_ASN1_SEQUENCE; |
127 | a->parameter->value.sequence=ASN1_STRING_new(); | 140 | if (!(a->parameter->value.sequence=ASN1_STRING_new())) |
128 | ASN1_STRING_set(a->parameter->value.sequence,p,i); | 141 | { |
142 | OPENSSL_free(p); | ||
143 | X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE); | ||
144 | goto err; | ||
145 | } | ||
146 | if (!ASN1_STRING_set(a->parameter->value.sequence,p,i)) | ||
147 | { | ||
148 | OPENSSL_free(p); | ||
149 | X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE); | ||
150 | goto err; | ||
151 | } | ||
129 | OPENSSL_free(p); | 152 | OPENSSL_free(p); |
130 | } | 153 | } |
131 | else | 154 | else |
@@ -143,7 +166,11 @@ int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey) | |||
143 | } | 166 | } |
144 | p=s; | 167 | p=s; |
145 | i2d_PublicKey(pkey,&p); | 168 | i2d_PublicKey(pkey,&p); |
146 | if (!M_ASN1_BIT_STRING_set(pk->public_key,s,i)) goto err; | 169 | if (!M_ASN1_BIT_STRING_set(pk->public_key,s,i)) |
170 | { | ||
171 | X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE); | ||
172 | goto err; | ||
173 | } | ||
147 | /* Set number of unused bits to zero */ | 174 | /* Set number of unused bits to zero */ |
148 | pk->public_key->flags&= ~(ASN1_STRING_FLAG_BITS_LEFT|0x07); | 175 | pk->public_key->flags&= ~(ASN1_STRING_FLAG_BITS_LEFT|0x07); |
149 | pk->public_key->flags|=ASN1_STRING_FLAG_BITS_LEFT; | 176 | pk->public_key->flags|=ASN1_STRING_FLAG_BITS_LEFT; |
@@ -159,12 +186,11 @@ int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey) | |||
159 | X509_PUBKEY_free(*x); | 186 | X509_PUBKEY_free(*x); |
160 | 187 | ||
161 | *x=pk; | 188 | *x=pk; |
162 | pk=NULL; | ||
163 | 189 | ||
164 | ok=1; | 190 | return 1; |
165 | err: | 191 | err: |
166 | if (pk != NULL) X509_PUBKEY_free(pk); | 192 | if (pk != NULL) X509_PUBKEY_free(pk); |
167 | return(ok); | 193 | return 0; |
168 | } | 194 | } |
169 | 195 | ||
170 | EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key) | 196 | EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key) |