diff options
Diffstat (limited to 'src/lib/libcrypto/x509/x_all.c')
| -rw-r--r-- | src/lib/libcrypto/x509/x_all.c | 749 |
1 files changed, 417 insertions, 332 deletions
diff --git a/src/lib/libcrypto/x509/x_all.c b/src/lib/libcrypto/x509/x_all.c index e06602d65a..59099f026f 100644 --- a/src/lib/libcrypto/x509/x_all.c +++ b/src/lib/libcrypto/x509/x_all.c | |||
| @@ -70,468 +70,553 @@ | |||
| 70 | #include <openssl/dsa.h> | 70 | #include <openssl/dsa.h> |
| 71 | #endif | 71 | #endif |
| 72 | 72 | ||
| 73 | int X509_verify(X509 *a, EVP_PKEY *r) | 73 | int |
| 74 | { | 74 | X509_verify(X509 *a, EVP_PKEY *r) |
| 75 | return(ASN1_item_verify(ASN1_ITEM_rptr(X509_CINF),a->sig_alg, | 75 | { |
| 76 | a->signature,a->cert_info,r)); | 76 | return(ASN1_item_verify(ASN1_ITEM_rptr(X509_CINF), a->sig_alg, |
| 77 | } | 77 | a->signature, a->cert_info, r)); |
| 78 | 78 | } | |
| 79 | int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r) | 79 | |
| 80 | { | 80 | int |
| 81 | X509_REQ_verify(X509_REQ *a, EVP_PKEY *r) | ||
| 82 | { | ||
| 81 | return( ASN1_item_verify(ASN1_ITEM_rptr(X509_REQ_INFO), | 83 | return( ASN1_item_verify(ASN1_ITEM_rptr(X509_REQ_INFO), |
| 82 | a->sig_alg,a->signature,a->req_info,r)); | 84 | a->sig_alg, a->signature, a->req_info, r)); |
| 83 | } | 85 | } |
| 84 | 86 | ||
| 85 | int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r) | 87 | int |
| 86 | { | 88 | NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r) |
| 89 | { | ||
| 87 | return(ASN1_item_verify(ASN1_ITEM_rptr(NETSCAPE_SPKAC), | 90 | return(ASN1_item_verify(ASN1_ITEM_rptr(NETSCAPE_SPKAC), |
| 88 | a->sig_algor,a->signature,a->spkac,r)); | 91 | a->sig_algor, a->signature, a->spkac, r)); |
| 89 | } | 92 | } |
| 90 | 93 | ||
| 91 | int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md) | 94 | int |
| 92 | { | 95 | X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md) |
| 96 | { | ||
| 93 | x->cert_info->enc.modified = 1; | 97 | x->cert_info->enc.modified = 1; |
| 94 | return(ASN1_item_sign(ASN1_ITEM_rptr(X509_CINF), x->cert_info->signature, | 98 | return (ASN1_item_sign(ASN1_ITEM_rptr(X509_CINF), |
| 95 | x->sig_alg, x->signature, x->cert_info,pkey,md)); | 99 | x->cert_info->signature, x->sig_alg, x->signature, |
| 96 | } | 100 | x->cert_info, pkey, md)); |
| 101 | } | ||
| 97 | 102 | ||
| 98 | int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx) | 103 | int |
| 99 | { | 104 | X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx) |
| 105 | { | ||
| 100 | x->cert_info->enc.modified = 1; | 106 | x->cert_info->enc.modified = 1; |
| 101 | return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CINF), | 107 | return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CINF), |
| 102 | x->cert_info->signature, | 108 | x->cert_info->signature, x->sig_alg, x->signature, |
| 103 | x->sig_alg, x->signature, x->cert_info, ctx); | 109 | x->cert_info, ctx); |
| 104 | } | 110 | } |
| 105 | 111 | ||
| 106 | int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md) | 112 | int |
| 107 | { | 113 | X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md) |
| 108 | return(ASN1_item_sign(ASN1_ITEM_rptr(X509_REQ_INFO),x->sig_alg, NULL, | 114 | { |
| 109 | x->signature, x->req_info,pkey,md)); | 115 | return (ASN1_item_sign(ASN1_ITEM_rptr(X509_REQ_INFO), |
| 110 | } | 116 | x->sig_alg, NULL, x->signature, x->req_info, pkey, md)); |
| 111 | 117 | } | |
| 112 | int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx) | 118 | |
| 113 | { | 119 | int |
| 120 | X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx) | ||
| 121 | { | ||
| 114 | return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_REQ_INFO), | 122 | return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_REQ_INFO), |
| 115 | x->sig_alg, NULL, x->signature, x->req_info, ctx); | 123 | x->sig_alg, NULL, x->signature, x->req_info, ctx); |
| 116 | } | 124 | } |
| 117 | 125 | ||
| 118 | int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md) | 126 | int |
| 119 | { | 127 | X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md) |
| 128 | { | ||
| 120 | x->crl->enc.modified = 1; | 129 | x->crl->enc.modified = 1; |
| 121 | return(ASN1_item_sign(ASN1_ITEM_rptr(X509_CRL_INFO),x->crl->sig_alg, | 130 | return(ASN1_item_sign(ASN1_ITEM_rptr(X509_CRL_INFO), x->crl->sig_alg, |
| 122 | x->sig_alg, x->signature, x->crl,pkey,md)); | 131 | x->sig_alg, x->signature, x->crl, pkey, md)); |
| 123 | } | 132 | } |
| 124 | 133 | ||
| 125 | int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx) | 134 | int |
| 126 | { | 135 | X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx) |
| 136 | { | ||
| 127 | x->crl->enc.modified = 1; | 137 | x->crl->enc.modified = 1; |
| 128 | return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CRL_INFO), | 138 | return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CRL_INFO), |
| 129 | x->crl->sig_alg, x->sig_alg, x->signature, x->crl, ctx); | 139 | x->crl->sig_alg, x->sig_alg, x->signature, x->crl, ctx); |
| 130 | } | 140 | } |
| 131 | 141 | ||
| 132 | int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md) | 142 | int |
| 133 | { | 143 | NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md) |
| 134 | return(ASN1_item_sign(ASN1_ITEM_rptr(NETSCAPE_SPKAC), x->sig_algor,NULL, | 144 | { |
| 135 | x->signature, x->spkac,pkey,md)); | 145 | return (ASN1_item_sign(ASN1_ITEM_rptr(NETSCAPE_SPKAC), |
| 136 | } | 146 | x->sig_algor, NULL, x->signature, x->spkac, pkey, md)); |
| 147 | } | ||
| 137 | 148 | ||
| 138 | #ifndef OPENSSL_NO_FP_API | 149 | #ifndef OPENSSL_NO_FP_API |
| 139 | X509 *d2i_X509_fp(FILE *fp, X509 **x509) | 150 | X509 |
| 140 | { | 151 | *d2i_X509_fp(FILE *fp, X509 **x509) |
| 152 | { | ||
| 141 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509), fp, x509); | 153 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509), fp, x509); |
| 142 | } | 154 | } |
| 143 | 155 | ||
| 144 | int i2d_X509_fp(FILE *fp, X509 *x509) | 156 | int |
| 145 | { | 157 | i2d_X509_fp(FILE *fp, X509 *x509) |
| 158 | { | ||
| 146 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509), fp, x509); | 159 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509), fp, x509); |
| 147 | } | 160 | } |
| 148 | #endif | 161 | #endif |
| 149 | 162 | ||
| 150 | X509 *d2i_X509_bio(BIO *bp, X509 **x509) | 163 | X509 |
| 151 | { | 164 | *d2i_X509_bio(BIO *bp, X509 **x509) |
| 165 | { | ||
| 152 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509), bp, x509); | 166 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509), bp, x509); |
| 153 | } | 167 | } |
| 154 | 168 | ||
| 155 | int i2d_X509_bio(BIO *bp, X509 *x509) | 169 | int |
| 156 | { | 170 | i2d_X509_bio(BIO *bp, X509 *x509) |
| 171 | { | ||
| 157 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509), bp, x509); | 172 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509), bp, x509); |
| 158 | } | 173 | } |
| 159 | 174 | ||
| 160 | #ifndef OPENSSL_NO_FP_API | 175 | #ifndef OPENSSL_NO_FP_API |
| 161 | X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl) | 176 | X509_CRL |
| 162 | { | 177 | *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl) |
| 178 | { | ||
| 163 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509_CRL), fp, crl); | 179 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509_CRL), fp, crl); |
| 164 | } | 180 | } |
| 165 | 181 | ||
| 166 | int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl) | 182 | int |
| 167 | { | 183 | i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl) |
| 184 | { | ||
| 168 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_CRL), fp, crl); | 185 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_CRL), fp, crl); |
| 169 | } | 186 | } |
| 170 | #endif | 187 | #endif |
| 171 | 188 | ||
| 172 | X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl) | 189 | X509_CRL |
| 173 | { | 190 | *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl) |
| 191 | { | ||
| 174 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl); | 192 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl); |
| 175 | } | 193 | } |
| 176 | 194 | ||
| 177 | int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl) | 195 | int |
| 178 | { | 196 | i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl) |
| 197 | { | ||
| 179 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl); | 198 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl); |
| 180 | } | 199 | } |
| 181 | 200 | ||
| 182 | #ifndef OPENSSL_NO_FP_API | 201 | #ifndef OPENSSL_NO_FP_API |
| 183 | PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7) | 202 | PKCS7 |
| 184 | { | 203 | *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7) |
| 204 | { | ||
| 185 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(PKCS7), fp, p7); | 205 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(PKCS7), fp, p7); |
| 186 | } | 206 | } |
| 187 | 207 | ||
| 188 | int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7) | 208 | int |
| 189 | { | 209 | i2d_PKCS7_fp(FILE *fp, PKCS7 *p7) |
| 210 | { | ||
| 190 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(PKCS7), fp, p7); | 211 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(PKCS7), fp, p7); |
| 191 | } | 212 | } |
| 192 | #endif | 213 | #endif |
| 193 | 214 | ||
| 194 | PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7) | 215 | PKCS7 |
| 195 | { | 216 | *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7) |
| 217 | { | ||
| 196 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(PKCS7), bp, p7); | 218 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(PKCS7), bp, p7); |
| 197 | } | 219 | } |
| 198 | 220 | ||
| 199 | int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7) | 221 | int |
| 200 | { | 222 | i2d_PKCS7_bio(BIO *bp, PKCS7 *p7) |
| 223 | { | ||
| 201 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(PKCS7), bp, p7); | 224 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(PKCS7), bp, p7); |
| 202 | } | 225 | } |
| 203 | 226 | ||
| 204 | #ifndef OPENSSL_NO_FP_API | 227 | #ifndef OPENSSL_NO_FP_API |
| 205 | X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req) | 228 | X509_REQ |
| 206 | { | 229 | *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req) |
| 230 | { | ||
| 207 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509_REQ), fp, req); | 231 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509_REQ), fp, req); |
| 208 | } | 232 | } |
| 209 | 233 | ||
| 210 | int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req) | 234 | int |
| 211 | { | 235 | i2d_X509_REQ_fp(FILE *fp, X509_REQ *req) |
| 236 | { | ||
| 212 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_REQ), fp, req); | 237 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_REQ), fp, req); |
| 213 | } | 238 | } |
| 214 | #endif | 239 | #endif |
| 215 | 240 | ||
| 216 | X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req) | 241 | X509_REQ |
| 217 | { | 242 | *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req) |
| 243 | { | ||
| 218 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_REQ), bp, req); | 244 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_REQ), bp, req); |
| 219 | } | 245 | } |
| 220 | 246 | ||
| 221 | int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req) | 247 | int |
| 222 | { | 248 | i2d_X509_REQ_bio(BIO *bp, X509_REQ *req) |
| 249 | { | ||
| 223 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_REQ), bp, req); | 250 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_REQ), bp, req); |
| 224 | } | 251 | } |
| 225 | 252 | ||
| 226 | #ifndef OPENSSL_NO_RSA | 253 | #ifndef OPENSSL_NO_RSA |
| 227 | 254 | ||
| 228 | #ifndef OPENSSL_NO_FP_API | 255 | #ifndef OPENSSL_NO_FP_API |
| 229 | RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa) | 256 | RSA |
| 230 | { | 257 | *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa) |
| 258 | { | ||
| 231 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPrivateKey), fp, rsa); | 259 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPrivateKey), fp, rsa); |
| 232 | } | 260 | } |
| 233 | 261 | ||
| 234 | int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa) | 262 | int |
| 235 | { | 263 | i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa) |
| 264 | { | ||
| 236 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(RSAPrivateKey), fp, rsa); | 265 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(RSAPrivateKey), fp, rsa); |
| 237 | } | 266 | } |
| 238 | 267 | ||
| 239 | RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa) | 268 | RSA |
| 240 | { | 269 | *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa) |
| 270 | { | ||
| 241 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa); | 271 | return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa); |
| 242 | } | 272 | } |
| 243 | 273 | ||
| 244 | 274 | ||
| 245 | RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa) | 275 | RSA |
| 246 | { | 276 | *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa) |
| 247 | return ASN1_d2i_fp((void *(*)(void)) | 277 | { |
| 248 | RSA_new,(D2I_OF(void))d2i_RSA_PUBKEY, fp, | 278 | return ASN1_d2i_fp((void *(*)(void))RSA_new, |
| 249 | (void **)rsa); | 279 | (D2I_OF(void))d2i_RSA_PUBKEY, fp, (void **)rsa); |
| 250 | } | 280 | } |
| 251 | 281 | ||
| 252 | int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa) | 282 | int |
| 253 | { | 283 | i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa) |
| 284 | { | ||
| 254 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa); | 285 | return ASN1_item_i2d_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa); |
| 255 | } | 286 | } |
| 256 | 287 | ||
| 257 | int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa) | 288 | int |
| 258 | { | 289 | i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa) |
| 259 | return ASN1_i2d_fp((I2D_OF(void))i2d_RSA_PUBKEY,fp,rsa); | 290 | { |
| 260 | } | 291 | return ASN1_i2d_fp((I2D_OF(void))i2d_RSA_PUBKEY, fp, rsa); |
| 292 | } | ||
| 261 | #endif | 293 | #endif |
| 262 | 294 | ||
| 263 | RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa) | 295 | RSA |
| 264 | { | 296 | *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa) |
| 297 | { | ||
| 265 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa); | 298 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa); |
| 266 | } | 299 | } |
| 267 | 300 | ||
| 268 | int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa) | 301 | int |
| 269 | { | 302 | i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa) |
| 303 | { | ||
| 270 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa); | 304 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa); |
| 271 | } | 305 | } |
| 272 | 306 | ||
| 273 | RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa) | 307 | RSA |
| 274 | { | 308 | *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa) |
| 309 | { | ||
| 275 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa); | 310 | return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa); |
| 276 | } | 311 | } |
| 277 | 312 | ||
| 278 | 313 | ||
| 279 | RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa) | 314 | RSA |
| 280 | { | 315 | *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa) |
| 281 | return ASN1_d2i_bio_of(RSA,RSA_new,d2i_RSA_PUBKEY,bp,rsa); | 316 | { |
| 282 | } | 317 | return ASN1_d2i_bio_of(RSA, RSA_new, d2i_RSA_PUBKEY, bp, rsa); |
| 318 | } | ||
| 283 | 319 | ||
| 284 | int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa) | 320 | int |
| 285 | { | 321 | i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa) |
| 322 | { | ||
| 286 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa); | 323 | return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa); |
| 287 | } | 324 | } |
| 288 | 325 | ||
| 289 | int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa) | 326 | int |
| 290 | { | 327 | i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa) |
| 291 | return ASN1_i2d_bio_of(RSA,i2d_RSA_PUBKEY,bp,rsa); | 328 | { |
| 292 | } | 329 | return ASN1_i2d_bio_of(RSA, i2d_RSA_PUBKEY, bp, rsa); |
| 330 | } | ||
| 293 | #endif | 331 | #endif |
| 294 | 332 | ||
| 295 | #ifndef OPENSSL_NO_DSA | 333 | #ifndef OPENSSL_NO_DSA |
| 296 | #ifndef OPENSSL_NO_FP_API | 334 | #ifndef OPENSSL_NO_FP_API |
| 297 | DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa) | 335 | DSA |
| 298 | { | 336 | *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa) |
| 299 | return ASN1_d2i_fp_of(DSA,DSA_new,d2i_DSAPrivateKey,fp,dsa); | 337 | { |
| 300 | } | 338 | return ASN1_d2i_fp_of(DSA, DSA_new, d2i_DSAPrivateKey, fp, dsa); |
| 301 | 339 | } | |
| 302 | int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa) | 340 | |
| 303 | { | 341 | int |
| 304 | return ASN1_i2d_fp_of_const(DSA,i2d_DSAPrivateKey,fp,dsa); | 342 | i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa) |
| 305 | } | 343 | { |
| 306 | 344 | return ASN1_i2d_fp_of_const(DSA, i2d_DSAPrivateKey, fp, dsa); | |
| 307 | DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa) | 345 | } |
| 308 | { | 346 | |
| 309 | return ASN1_d2i_fp_of(DSA,DSA_new,d2i_DSA_PUBKEY,fp,dsa); | 347 | DSA |
| 310 | } | 348 | *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa) |
| 311 | 349 | { | |
| 312 | int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa) | 350 | return ASN1_d2i_fp_of(DSA, DSA_new, d2i_DSA_PUBKEY, fp, dsa); |
| 313 | { | 351 | } |
| 314 | return ASN1_i2d_fp_of(DSA,i2d_DSA_PUBKEY,fp,dsa); | 352 | |
| 315 | } | 353 | int |
| 354 | i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa) | ||
| 355 | { | ||
| 356 | return ASN1_i2d_fp_of(DSA, i2d_DSA_PUBKEY, fp, dsa); | ||
| 357 | } | ||
| 316 | #endif | 358 | #endif |
| 317 | 359 | ||
| 318 | DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa) | 360 | DSA |
| 319 | { | 361 | *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa) |
| 320 | return ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSAPrivateKey,bp,dsa | 362 | { |
| 321 | ); | 363 | return ASN1_d2i_bio_of(DSA, DSA_new, d2i_DSAPrivateKey, bp, dsa); |
| 322 | } | 364 | } |
| 323 | 365 | ||
| 324 | int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa) | 366 | int |
| 325 | { | 367 | i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa) |
| 326 | return ASN1_i2d_bio_of_const(DSA,i2d_DSAPrivateKey,bp,dsa); | 368 | { |
| 327 | } | 369 | return ASN1_i2d_bio_of_const(DSA, i2d_DSAPrivateKey, bp, dsa); |
| 370 | } | ||
| 328 | 371 | ||
| 329 | DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa) | 372 | DSA |
| 330 | { | 373 | *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa) |
| 331 | return ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSA_PUBKEY,bp,dsa); | 374 | { |
| 332 | } | 375 | return ASN1_d2i_bio_of(DSA, DSA_new, d2i_DSA_PUBKEY, bp, dsa); |
| 376 | } | ||
| 333 | 377 | ||
| 334 | int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa) | 378 | int |
| 335 | { | 379 | i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa) |
| 336 | return ASN1_i2d_bio_of(DSA,i2d_DSA_PUBKEY,bp,dsa); | 380 | { |
| 337 | } | 381 | return ASN1_i2d_bio_of(DSA, i2d_DSA_PUBKEY, bp, dsa); |
| 382 | } | ||
| 338 | 383 | ||
| 339 | #endif | 384 | #endif |
| 340 | 385 | ||
| 341 | #ifndef OPENSSL_NO_EC | 386 | #ifndef OPENSSL_NO_EC |
| 342 | #ifndef OPENSSL_NO_FP_API | 387 | #ifndef OPENSSL_NO_FP_API |
| 343 | EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey) | 388 | EC_KEY |
| 344 | { | 389 | *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey) |
| 345 | return ASN1_d2i_fp_of(EC_KEY,EC_KEY_new,d2i_EC_PUBKEY,fp,eckey); | 390 | { |
| 346 | } | 391 | return ASN1_d2i_fp_of(EC_KEY, EC_KEY_new, d2i_EC_PUBKEY, fp, eckey); |
| 347 | 392 | } | |
| 348 | int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey) | 393 | |
| 349 | { | 394 | int |
| 350 | return ASN1_i2d_fp_of(EC_KEY,i2d_EC_PUBKEY,fp,eckey); | 395 | i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey) |
| 351 | } | 396 | { |
| 352 | 397 | return ASN1_i2d_fp_of(EC_KEY, i2d_EC_PUBKEY, fp, eckey); | |
| 353 | EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey) | 398 | } |
| 354 | { | 399 | |
| 355 | return ASN1_d2i_fp_of(EC_KEY,EC_KEY_new,d2i_ECPrivateKey,fp,eckey); | 400 | EC_KEY |
| 356 | } | 401 | *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey) |
| 357 | 402 | { | |
| 358 | int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey) | 403 | return ASN1_d2i_fp_of(EC_KEY, EC_KEY_new, d2i_ECPrivateKey, fp, eckey); |
| 359 | { | 404 | } |
| 360 | return ASN1_i2d_fp_of(EC_KEY,i2d_ECPrivateKey,fp,eckey); | 405 | |
| 361 | } | 406 | int |
| 407 | i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey) | ||
| 408 | { | ||
| 409 | return ASN1_i2d_fp_of(EC_KEY, i2d_ECPrivateKey, fp, eckey); | ||
| 410 | } | ||
| 362 | #endif | 411 | #endif |
| 363 | EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey) | 412 | EC_KEY |
| 364 | { | 413 | *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey) |
| 365 | return ASN1_d2i_bio_of(EC_KEY,EC_KEY_new,d2i_EC_PUBKEY,bp,eckey); | 414 | { |
| 366 | } | 415 | return ASN1_d2i_bio_of(EC_KEY, EC_KEY_new, d2i_EC_PUBKEY, bp, eckey); |
| 367 | 416 | } | |
| 368 | int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *ecdsa) | 417 | |
| 369 | { | 418 | int |
| 370 | return ASN1_i2d_bio_of(EC_KEY,i2d_EC_PUBKEY,bp,ecdsa); | 419 | i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *ecdsa) |
| 371 | } | 420 | { |
| 372 | 421 | return ASN1_i2d_bio_of(EC_KEY, i2d_EC_PUBKEY, bp, ecdsa); | |
| 373 | EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey) | 422 | } |
| 374 | { | 423 | |
| 375 | return ASN1_d2i_bio_of(EC_KEY,EC_KEY_new,d2i_ECPrivateKey,bp,eckey); | 424 | EC_KEY |
| 376 | } | 425 | *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey) |
| 377 | 426 | { | |
| 378 | int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey) | 427 | return ASN1_d2i_bio_of(EC_KEY, EC_KEY_new, d2i_ECPrivateKey, bp, eckey); |
| 379 | { | 428 | } |
| 380 | return ASN1_i2d_bio_of(EC_KEY,i2d_ECPrivateKey,bp,eckey); | 429 | |
| 381 | } | 430 | int |
| 431 | i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey) | ||
| 432 | { | ||
| 433 | return ASN1_i2d_bio_of(EC_KEY, i2d_ECPrivateKey, bp, eckey); | ||
| 434 | } | ||
| 382 | #endif | 435 | #endif |
| 383 | 436 | ||
| 384 | 437 | ||
| 385 | int X509_pubkey_digest(const X509 *data, const EVP_MD *type, unsigned char *md, | 438 | int |
| 386 | unsigned int *len) | 439 | X509_pubkey_digest(const X509 *data, const EVP_MD *type, unsigned char *md, |
| 387 | { | 440 | unsigned int *len) |
| 441 | { | ||
| 388 | ASN1_BIT_STRING *key; | 442 | ASN1_BIT_STRING *key; |
| 389 | key = X509_get0_pubkey_bitstr(data); | 443 | key = X509_get0_pubkey_bitstr(data); |
| 390 | if(!key) return 0; | 444 | if (!key) |
| 445 | return 0; | ||
| 391 | return EVP_Digest(key->data, key->length, md, len, type, NULL); | 446 | return EVP_Digest(key->data, key->length, md, len, type, NULL); |
| 392 | } | 447 | } |
| 393 | 448 | ||
| 394 | int X509_digest(const X509 *data, const EVP_MD *type, unsigned char *md, | 449 | int |
| 395 | unsigned int *len) | 450 | X509_digest(const X509 *data, const EVP_MD *type, unsigned char *md, |
| 396 | { | 451 | unsigned int *len) |
| 397 | return(ASN1_item_digest(ASN1_ITEM_rptr(X509),type,(char *)data,md,len)); | 452 | { |
| 398 | } | 453 | return (ASN1_item_digest(ASN1_ITEM_rptr(X509), type, (char *)data, |
| 399 | 454 | md, len)); | |
| 400 | int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, unsigned char *md, | 455 | } |
| 401 | unsigned int *len) | 456 | |
| 402 | { | 457 | int |
| 403 | return(ASN1_item_digest(ASN1_ITEM_rptr(X509_CRL),type,(char *)data,md,len)); | 458 | X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, unsigned char *md, |
| 404 | } | 459 | unsigned int *len) |
| 405 | 460 | { | |
| 406 | int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, unsigned char *md, | 461 | return (ASN1_item_digest(ASN1_ITEM_rptr(X509_CRL), type, (char *)data, |
| 407 | unsigned int *len) | 462 | md, len)); |
| 408 | { | 463 | } |
| 409 | return(ASN1_item_digest(ASN1_ITEM_rptr(X509_REQ),type,(char *)data,md,len)); | 464 | |
| 410 | } | 465 | int |
| 411 | 466 | X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, unsigned char *md, | |
| 412 | int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, unsigned char *md, | 467 | unsigned int *len) |
| 413 | unsigned int *len) | 468 | { |
| 414 | { | 469 | return (ASN1_item_digest(ASN1_ITEM_rptr(X509_REQ), type,(char *)data, |
| 415 | return(ASN1_item_digest(ASN1_ITEM_rptr(X509_NAME),type,(char *)data,md,len)); | 470 | md, len)); |
| 416 | } | 471 | } |
| 417 | 472 | ||
| 418 | int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, const EVP_MD *type, | 473 | int |
| 419 | unsigned char *md, unsigned int *len) | 474 | X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, unsigned char *md, |
| 420 | { | 475 | unsigned int *len) |
| 421 | return(ASN1_item_digest(ASN1_ITEM_rptr(PKCS7_ISSUER_AND_SERIAL),type, | 476 | { |
| 422 | (char *)data,md,len)); | 477 | return (ASN1_item_digest(ASN1_ITEM_rptr(X509_NAME), type,(char *)data, |
| 423 | } | 478 | md, len)); |
| 479 | } | ||
| 480 | |||
| 481 | int | ||
| 482 | PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, | ||
| 483 | const EVP_MD *type, unsigned char *md, unsigned int *len) | ||
| 484 | { | ||
| 485 | return(ASN1_item_digest(ASN1_ITEM_rptr(PKCS7_ISSUER_AND_SERIAL), type, | ||
| 486 | (char *)data, md, len)); | ||
| 487 | } | ||
| 424 | 488 | ||
| 425 | 489 | ||
| 426 | #ifndef OPENSSL_NO_FP_API | 490 | #ifndef OPENSSL_NO_FP_API |
| 427 | X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8) | 491 | X509_SIG |
| 428 | { | 492 | *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8) |
| 429 | return ASN1_d2i_fp_of(X509_SIG,X509_SIG_new,d2i_X509_SIG,fp,p8); | 493 | { |
| 430 | } | 494 | return ASN1_d2i_fp_of(X509_SIG, X509_SIG_new, d2i_X509_SIG, fp, p8); |
| 431 | 495 | } | |
| 432 | int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8) | 496 | |
| 433 | { | 497 | int |
| 434 | return ASN1_i2d_fp_of(X509_SIG,i2d_X509_SIG,fp,p8); | 498 | i2d_PKCS8_fp(FILE *fp, X509_SIG *p8) |
| 435 | } | 499 | { |
| 500 | return ASN1_i2d_fp_of(X509_SIG, i2d_X509_SIG, fp, p8); | ||
| 501 | } | ||
| 436 | #endif | 502 | #endif |
| 437 | 503 | ||
| 438 | X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8) | 504 | X509_SIG |
| 439 | { | 505 | *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8) |
| 440 | return ASN1_d2i_bio_of(X509_SIG,X509_SIG_new,d2i_X509_SIG,bp,p8); | 506 | { |
| 441 | } | 507 | return ASN1_d2i_bio_of(X509_SIG, X509_SIG_new, d2i_X509_SIG, bp, p8); |
| 508 | } | ||
| 442 | 509 | ||
| 443 | int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8) | 510 | int |
| 444 | { | 511 | i2d_PKCS8_bio(BIO *bp, X509_SIG *p8) |
| 445 | return ASN1_i2d_bio_of(X509_SIG,i2d_X509_SIG,bp,p8); | 512 | { |
| 446 | } | 513 | return ASN1_i2d_bio_of(X509_SIG, i2d_X509_SIG, bp, p8); |
| 514 | } | ||
| 447 | 515 | ||
| 448 | #ifndef OPENSSL_NO_FP_API | 516 | #ifndef OPENSSL_NO_FP_API |
| 449 | PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, | 517 | PKCS8_PRIV_KEY_INFO |
| 450 | PKCS8_PRIV_KEY_INFO **p8inf) | 518 | *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, |
| 451 | { | 519 | PKCS8_PRIV_KEY_INFO **p8inf) |
| 452 | return ASN1_d2i_fp_of(PKCS8_PRIV_KEY_INFO,PKCS8_PRIV_KEY_INFO_new, | 520 | { |
| 453 | d2i_PKCS8_PRIV_KEY_INFO,fp,p8inf); | 521 | return ASN1_d2i_fp_of(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_new, |
| 454 | } | 522 | d2i_PKCS8_PRIV_KEY_INFO, fp, p8inf); |
| 455 | 523 | } | |
| 456 | int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf) | 524 | |
| 457 | { | 525 | int |
| 458 | return ASN1_i2d_fp_of(PKCS8_PRIV_KEY_INFO,i2d_PKCS8_PRIV_KEY_INFO,fp, | 526 | i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf) |
| 459 | p8inf); | 527 | { |
| 460 | } | 528 | return ASN1_i2d_fp_of(PKCS8_PRIV_KEY_INFO, i2d_PKCS8_PRIV_KEY_INFO, |
| 461 | 529 | fp, p8inf); | |
| 462 | int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key) | 530 | } |
| 463 | { | 531 | |
| 532 | int | ||
| 533 | i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key) | ||
| 534 | { | ||
| 464 | PKCS8_PRIV_KEY_INFO *p8inf; | 535 | PKCS8_PRIV_KEY_INFO *p8inf; |
| 465 | int ret; | 536 | int ret; |
| 466 | p8inf = EVP_PKEY2PKCS8(key); | 537 | p8inf = EVP_PKEY2PKCS8(key); |
| 467 | if(!p8inf) return 0; | 538 | if (!p8inf) |
| 539 | return 0; | ||
| 468 | ret = i2d_PKCS8_PRIV_KEY_INFO_fp(fp, p8inf); | 540 | ret = i2d_PKCS8_PRIV_KEY_INFO_fp(fp, p8inf); |
| 469 | PKCS8_PRIV_KEY_INFO_free(p8inf); | 541 | PKCS8_PRIV_KEY_INFO_free(p8inf); |
| 470 | return ret; | 542 | return ret; |
| 471 | } | 543 | } |
| 472 | 544 | ||
| 473 | int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey) | 545 | int |
| 474 | { | 546 | i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey) |
| 475 | return ASN1_i2d_fp_of(EVP_PKEY,i2d_PrivateKey,fp,pkey); | 547 | { |
| 476 | } | 548 | return ASN1_i2d_fp_of(EVP_PKEY, i2d_PrivateKey, fp, pkey); |
| 549 | } | ||
| 477 | 550 | ||
| 478 | EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a) | 551 | EVP_PKEY |
| 552 | *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a) | ||
| 479 | { | 553 | { |
| 480 | return ASN1_d2i_fp_of(EVP_PKEY,EVP_PKEY_new,d2i_AutoPrivateKey,fp,a); | 554 | return ASN1_d2i_fp_of(EVP_PKEY, EVP_PKEY_new, d2i_AutoPrivateKey, |
| 555 | fp, a); | ||
| 481 | } | 556 | } |
| 482 | 557 | ||
| 483 | int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey) | 558 | int |
| 484 | { | 559 | i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey) |
| 485 | return ASN1_i2d_fp_of(EVP_PKEY,i2d_PUBKEY,fp,pkey); | 560 | { |
| 486 | } | 561 | return ASN1_i2d_fp_of(EVP_PKEY, i2d_PUBKEY, fp, pkey); |
| 562 | } | ||
| 487 | 563 | ||
| 488 | EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a) | 564 | EVP_PKEY |
| 565 | *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a) | ||
| 489 | { | 566 | { |
| 490 | return ASN1_d2i_fp_of(EVP_PKEY,EVP_PKEY_new,d2i_PUBKEY,fp,a); | 567 | return ASN1_d2i_fp_of(EVP_PKEY, EVP_PKEY_new, d2i_PUBKEY, fp, a); |
| 491 | } | 568 | } |
| 492 | 569 | ||
| 493 | #endif | 570 | #endif |
| 494 | 571 | ||
| 495 | PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, | 572 | PKCS8_PRIV_KEY_INFO |
| 496 | PKCS8_PRIV_KEY_INFO **p8inf) | 573 | *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, |
| 497 | { | 574 | PKCS8_PRIV_KEY_INFO **p8inf) |
| 498 | return ASN1_d2i_bio_of(PKCS8_PRIV_KEY_INFO,PKCS8_PRIV_KEY_INFO_new, | 575 | { |
| 499 | d2i_PKCS8_PRIV_KEY_INFO,bp,p8inf); | 576 | return ASN1_d2i_bio_of(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_new, |
| 500 | } | 577 | d2i_PKCS8_PRIV_KEY_INFO, bp, p8inf); |
| 501 | 578 | } | |
| 502 | int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf) | 579 | |
| 503 | { | 580 | int |
| 504 | return ASN1_i2d_bio_of(PKCS8_PRIV_KEY_INFO,i2d_PKCS8_PRIV_KEY_INFO,bp, | 581 | i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf) |
| 505 | p8inf); | 582 | { |
| 506 | } | 583 | return ASN1_i2d_bio_of(PKCS8_PRIV_KEY_INFO, i2d_PKCS8_PRIV_KEY_INFO, |
| 507 | 584 | bp, p8inf); | |
| 508 | int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key) | 585 | } |
| 509 | { | 586 | |
| 587 | int | ||
| 588 | i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key) | ||
| 589 | { | ||
| 510 | PKCS8_PRIV_KEY_INFO *p8inf; | 590 | PKCS8_PRIV_KEY_INFO *p8inf; |
| 511 | int ret; | 591 | int ret; |
| 512 | p8inf = EVP_PKEY2PKCS8(key); | 592 | p8inf = EVP_PKEY2PKCS8(key); |
| 513 | if(!p8inf) return 0; | 593 | if (!p8inf) |
| 594 | return 0; | ||
| 514 | ret = i2d_PKCS8_PRIV_KEY_INFO_bio(bp, p8inf); | 595 | ret = i2d_PKCS8_PRIV_KEY_INFO_bio(bp, p8inf); |
| 515 | PKCS8_PRIV_KEY_INFO_free(p8inf); | 596 | PKCS8_PRIV_KEY_INFO_free(p8inf); |
| 516 | return ret; | 597 | return ret; |
| 517 | } | 598 | } |
| 518 | 599 | ||
| 519 | int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey) | 600 | int |
| 520 | { | 601 | i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey) |
| 521 | return ASN1_i2d_bio_of(EVP_PKEY,i2d_PrivateKey,bp,pkey); | 602 | { |
| 522 | } | 603 | return ASN1_i2d_bio_of(EVP_PKEY, i2d_PrivateKey, bp, pkey); |
| 523 | 604 | } | |
| 524 | EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a) | 605 | |
| 525 | { | 606 | EVP_PKEY |
| 526 | return ASN1_d2i_bio_of(EVP_PKEY,EVP_PKEY_new,d2i_AutoPrivateKey,bp,a); | 607 | *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a) |
| 527 | } | 608 | { |
| 528 | 609 | return ASN1_d2i_bio_of(EVP_PKEY, EVP_PKEY_new, d2i_AutoPrivateKey, bp, a); | |
| 529 | int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey) | 610 | } |
| 530 | { | 611 | |
| 531 | return ASN1_i2d_bio_of(EVP_PKEY,i2d_PUBKEY,bp,pkey); | 612 | int |
| 532 | } | 613 | i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey) |
| 533 | 614 | { | |
| 534 | EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a) | 615 | return ASN1_i2d_bio_of(EVP_PKEY, i2d_PUBKEY, bp, pkey); |
| 535 | { | 616 | } |
| 536 | return ASN1_d2i_bio_of(EVP_PKEY,EVP_PKEY_new,d2i_PUBKEY,bp,a); | 617 | |
| 537 | } | 618 | EVP_PKEY |
| 619 | *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a) | ||
| 620 | { | ||
| 621 | return ASN1_d2i_bio_of(EVP_PKEY, EVP_PKEY_new, d2i_PUBKEY, bp, a); | ||
| 622 | } | ||
