diff --git a/crypto/ec/ec_asn1.c b/crypto/ec/ec_asn1.c index 7920ae833..36f1cd595 100644 --- a/crypto/ec/ec_asn1.c +++ b/crypto/ec/ec_asn1.c @@ -106,6 +106,8 @@ typedef struct ec_parameters_st { ASN1_INTEGER *cofactor; } ECPARAMETERS; +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS); + ASN1_SEQUENCE(ECPARAMETERS) = { ASN1_SIMPLE(ECPARAMETERS, version, LONG), ASN1_SIMPLE(ECPARAMETERS, fieldID, X9_62_FIELDID), @@ -115,7 +117,6 @@ ASN1_SEQUENCE(ECPARAMETERS) = { ASN1_OPT(ECPARAMETERS, cofactor, ASN1_INTEGER) } ASN1_SEQUENCE_END(ECPARAMETERS); -DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS); IMPLEMENT_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS); typedef struct ecpk_parameters_st { @@ -134,15 +135,19 @@ typedef struct ec_privatekey_st { ASN1_BIT_STRING *publicKey; } EC_PRIVATEKEY; +DECLARE_ASN1_FUNCTIONS_const(ECPKPARAMETERS); +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECPKPARAMETERS, ECPKPARAMETERS); + ASN1_CHOICE(ECPKPARAMETERS) = { ASN1_SIMPLE(ECPKPARAMETERS, value.named_curve, ASN1_OBJECT), ASN1_SIMPLE(ECPKPARAMETERS, value.parameters, ECPARAMETERS), } ASN1_CHOICE_END(ECPKPARAMETERS); -DECLARE_ASN1_FUNCTIONS_const(ECPKPARAMETERS); -DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECPKPARAMETERS, ECPKPARAMETERS); IMPLEMENT_ASN1_FUNCTIONS_const(ECPKPARAMETERS); +DECLARE_ASN1_FUNCTIONS_const(EC_PRIVATEKEY); +DECLARE_ASN1_ENCODE_FUNCTIONS_const(EC_PRIVATEKEY, EC_PRIVATEKEY); + ASN1_SEQUENCE(EC_PRIVATEKEY) = { ASN1_SIMPLE(EC_PRIVATEKEY, version, LONG), ASN1_SIMPLE(EC_PRIVATEKEY, privateKey, ASN1_OCTET_STRING), @@ -150,8 +155,6 @@ ASN1_SEQUENCE(EC_PRIVATEKEY) = { ASN1_EXP_OPT(EC_PRIVATEKEY, publicKey, ASN1_BIT_STRING, 1), } ASN1_SEQUENCE_END(EC_PRIVATEKEY); -DECLARE_ASN1_FUNCTIONS_const(EC_PRIVATEKEY); -DECLARE_ASN1_ENCODE_FUNCTIONS_const(EC_PRIVATEKEY, EC_PRIVATEKEY); IMPLEMENT_ASN1_FUNCTIONS_const(EC_PRIVATEKEY); diff --git a/crypto/ecdsa/ecdsa_asn1.c b/crypto/ecdsa/ecdsa_asn1.c index e54dcca0a..b3c6a8760 100644 --- a/crypto/ecdsa/ecdsa_asn1.c +++ b/crypto/ecdsa/ecdsa_asn1.c @@ -59,13 +59,14 @@ #include "../ec/internal.h" +DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG); +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG); + ASN1_SEQUENCE(ECDSA_SIG) = { ASN1_SIMPLE(ECDSA_SIG, r, CBIGNUM), ASN1_SIMPLE(ECDSA_SIG, s, CBIGNUM), } ASN1_SEQUENCE_END(ECDSA_SIG); -DECLARE_ASN1_FUNCTIONS_const(ECDSA_SIG); -DECLARE_ASN1_ENCODE_FUNCTIONS_const(ECDSA_SIG, ECDSA_SIG); IMPLEMENT_ASN1_FUNCTIONS_const(ECDSA_SIG); size_t ECDSA_size(const EC_KEY *key) { diff --git a/include/openssl/asn1.h b/include/openssl/asn1.h index 990506e5f..014b0598f 100644 --- a/include/openssl/asn1.h +++ b/include/openssl/asn1.h @@ -392,7 +392,7 @@ typedef const ASN1_ITEM ASN1_ITEM_EXP; #define ASN1_ITEM_rptr(ref) (&(ref##_it)) #define DECLARE_ASN1_ITEM(name) \ - extern const ASN1_ITEM name##_it; + extern OPENSSL_EXPORT const ASN1_ITEM name##_it; /* Parameters used by ASN1_STRING_print_ex() */ diff --git a/include/openssl/asn1t.h b/include/openssl/asn1t.h index 52f5cfc24..72eb2cbc6 100644 --- a/include/openssl/asn1t.h +++ b/include/openssl/asn1t.h @@ -80,7 +80,7 @@ extern "C" { /* Macros for start and end of ASN1_ITEM definition */ #define ASN1_ITEM_start(itname) \ - OPENSSL_EXPORT const ASN1_ITEM itname##_it = { + const ASN1_ITEM itname##_it = { #define ASN1_ITEM_end(itname) \ }; diff --git a/include/openssl/x509v3.h b/include/openssl/x509v3.h index 99f7cf815..9aa91d671 100644 --- a/include/openssl/x509v3.h +++ b/include/openssl/x509v3.h @@ -555,7 +555,7 @@ OPENSSL_EXPORT int GENERAL_NAME_get0_otherName(GENERAL_NAME *gen, OPENSSL_EXPORT char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5); OPENSSL_EXPORT ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str); -OPENSSL_EXPORT DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) OPENSSL_EXPORT int i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION* a); DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES)