diff options
Diffstat (limited to 'src/lib/libcrypto/x509/x509spki.c')
| -rw-r--r-- | src/lib/libcrypto/x509/x509spki.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/lib/libcrypto/x509/x509spki.c b/src/lib/libcrypto/x509/x509spki.c index 9f0fbd39e3..b5f67b5a97 100644 --- a/src/lib/libcrypto/x509/x509spki.c +++ b/src/lib/libcrypto/x509/x509spki.c | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | * are met: | 10 | * are met: |
| 11 | * | 11 | * |
| 12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright |
| 13 | * notice, this list of conditions and the following disclaimer. | 13 | * notice, this list of conditions and the following disclaimer. |
| 14 | * | 14 | * |
| 15 | * 2. Redistributions in binary form must reproduce the above copyright | 15 | * 2. Redistributions in binary form must reproduce the above copyright |
| 16 | * notice, this list of conditions and the following disclaimer in | 16 | * notice, this list of conditions and the following disclaimer in |
| @@ -60,36 +60,42 @@ | |||
| 60 | #include "cryptlib.h" | 60 | #include "cryptlib.h" |
| 61 | #include <openssl/x509.h> | 61 | #include <openssl/x509.h> |
| 62 | 62 | ||
| 63 | int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey) | 63 | int |
| 64 | NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey) | ||
| 64 | { | 65 | { |
| 65 | if ((x == NULL) || (x->spkac == NULL)) return(0); | 66 | if ((x == NULL) || (x->spkac == NULL)) |
| 66 | return(X509_PUBKEY_set(&(x->spkac->pubkey),pkey)); | 67 | return (0); |
| 68 | return (X509_PUBKEY_set(&(x->spkac->pubkey), pkey)); | ||
| 67 | } | 69 | } |
| 68 | 70 | ||
| 69 | EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x) | 71 | EVP_PKEY * |
| 72 | NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x) | ||
| 70 | { | 73 | { |
| 71 | if ((x == NULL) || (x->spkac == NULL)) | 74 | if ((x == NULL) || (x->spkac == NULL)) |
| 72 | return(NULL); | 75 | return (NULL); |
| 73 | return(X509_PUBKEY_get(x->spkac->pubkey)); | 76 | return (X509_PUBKEY_get(x->spkac->pubkey)); |
| 74 | } | 77 | } |
| 75 | 78 | ||
| 76 | /* Load a Netscape SPKI from a base64 encoded string */ | 79 | /* Load a Netscape SPKI from a base64 encoded string */ |
| 77 | 80 | ||
| 78 | NETSCAPE_SPKI * NETSCAPE_SPKI_b64_decode(const char *str, int len) | 81 | NETSCAPE_SPKI * |
| 82 | NETSCAPE_SPKI_b64_decode(const char *str, int len) | ||
| 79 | { | 83 | { |
| 80 | unsigned char *spki_der; | 84 | unsigned char *spki_der; |
| 81 | const unsigned char *p; | 85 | const unsigned char *p; |
| 82 | int spki_len; | 86 | int spki_len; |
| 83 | NETSCAPE_SPKI *spki; | 87 | NETSCAPE_SPKI *spki; |
| 84 | if(len <= 0) len = strlen(str); | 88 | |
| 89 | if (len <= 0) | ||
| 90 | len = strlen(str); | ||
| 85 | if (!(spki_der = malloc(len + 1))) { | 91 | if (!(spki_der = malloc(len + 1))) { |
| 86 | X509err(X509_F_NETSCAPE_SPKI_B64_DECODE, ERR_R_MALLOC_FAILURE); | 92 | X509err(X509_F_NETSCAPE_SPKI_B64_DECODE, ERR_R_MALLOC_FAILURE); |
| 87 | return NULL; | 93 | return NULL; |
| 88 | } | 94 | } |
| 89 | spki_len = EVP_DecodeBlock(spki_der, (const unsigned char *)str, len); | 95 | spki_len = EVP_DecodeBlock(spki_der, (const unsigned char *)str, len); |
| 90 | if(spki_len < 0) { | 96 | if (spki_len < 0) { |
| 91 | X509err(X509_F_NETSCAPE_SPKI_B64_DECODE, | 97 | X509err(X509_F_NETSCAPE_SPKI_B64_DECODE, |
| 92 | X509_R_BASE64_DECODE_ERROR); | 98 | X509_R_BASE64_DECODE_ERROR); |
| 93 | free(spki_der); | 99 | free(spki_der); |
| 94 | return NULL; | 100 | return NULL; |
| 95 | } | 101 | } |
| @@ -101,7 +107,8 @@ NETSCAPE_SPKI * NETSCAPE_SPKI_b64_decode(const char *str, int len) | |||
| 101 | 107 | ||
| 102 | /* Generate a base64 encoded string from an SPKI */ | 108 | /* Generate a base64 encoded string from an SPKI */ |
| 103 | 109 | ||
| 104 | char * NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *spki) | 110 | char * |
| 111 | NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *spki) | ||
| 105 | { | 112 | { |
| 106 | unsigned char *der_spki, *p; | 113 | unsigned char *der_spki, *p; |
| 107 | char *b64_str; | 114 | char *b64_str; |
| @@ -109,7 +116,7 @@ char * NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *spki) | |||
| 109 | der_len = i2d_NETSCAPE_SPKI(spki, NULL); | 116 | der_len = i2d_NETSCAPE_SPKI(spki, NULL); |
| 110 | der_spki = malloc(der_len); | 117 | der_spki = malloc(der_len); |
| 111 | b64_str = malloc(der_len * 2); | 118 | b64_str = malloc(der_len * 2); |
| 112 | if(!der_spki || !b64_str) { | 119 | if (!der_spki || !b64_str) { |
| 113 | X509err(X509_F_NETSCAPE_SPKI_B64_ENCODE, ERR_R_MALLOC_FAILURE); | 120 | X509err(X509_F_NETSCAPE_SPKI_B64_ENCODE, ERR_R_MALLOC_FAILURE); |
| 114 | free(der_spki); | 121 | free(der_spki); |
| 115 | free(b64_str); | 122 | free(b64_str); |
