|
Line 0
Link Here
|
|
|
1 |
--- src/p11_ec.c.orig 2017-01-26 21:19:45 UTC |
| 2 |
+++ src/p11_ec.c |
| 3 |
@@ -37,7 +37,7 @@ |
| 4 |
#include <openssl/ecdh.h> |
| 5 |
#endif |
| 6 |
|
| 7 |
-#if OPENSSL_VERSION_NUMBER >= 0x10100004L |
| 8 |
+#if OPENSSL_VERSION_NUMBER >= 0x10100004L && !defined(LIBRESSL_VERSION_NUMBER) |
| 9 |
typedef int (*compute_key_fn)(unsigned char **, size_t *, |
| 10 |
const EC_POINT *, const EC_KEY *); |
| 11 |
#else |
| 12 |
@@ -73,7 +73,7 @@ struct ecdsa_method { |
| 13 |
|
| 14 |
#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ |
| 15 |
|
| 16 |
-#if OPENSSL_VERSION_NUMBER < 0x10002000L |
| 17 |
+#if OPENSSL_VERSION_NUMBER < 0x10002000L || defined(LIBRESSL_VERSION_NUMBER) |
| 18 |
|
| 19 |
/* Define missing functions */ |
| 20 |
|
| 21 |
@@ -104,7 +104,7 @@ void ECDSA_METHOD_set_sign(ECDSA_METHOD |
| 22 |
|
| 23 |
/********** Missing ECDH_METHOD functions for OpenSSL < 1.1.0 */ |
| 24 |
|
| 25 |
-#if OPENSSL_VERSION_NUMBER < 0x10100000L |
| 26 |
+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) |
| 27 |
|
| 28 |
/* ecdh_method maintains unchanged layout between 0.9.8 and 1.0.2 */ |
| 29 |
|
| 30 |
@@ -156,7 +156,7 @@ static void alloc_ec_ex_index() |
| 31 |
{ |
| 32 |
if (ec_ex_index == 0) { |
| 33 |
while (ec_ex_index == 0) /* Workaround for OpenSSL RT3710 */ |
| 34 |
-#if OPENSSL_VERSION_NUMBER >= 0x10100002L |
| 35 |
+#if OPENSSL_VERSION_NUMBER >= 0x10100002L && !defined(LIBRESSL_VERSION_NUMBER) |
| 36 |
ec_ex_index = EC_KEY_get_ex_new_index(0, "libp11 ec_key", |
| 37 |
NULL, NULL, NULL); |
| 38 |
#else |
| 39 |
@@ -265,7 +265,7 @@ static EVP_PKEY *pkcs11_get_evp_key_ec(P |
| 40 |
EVP_PKEY_set1_EC_KEY(pk, ec); /* Also increments the ec ref count */ |
| 41 |
|
| 42 |
if (key->isPrivate) { |
| 43 |
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| 44 |
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) |
| 45 |
EC_KEY_set_method(ec, PKCS11_get_ec_key_method()); |
| 46 |
#else |
| 47 |
ECDSA_set_method(ec, PKCS11_get_ecdsa_method()); |
| 48 |
@@ -275,7 +275,7 @@ static EVP_PKEY *pkcs11_get_evp_key_ec(P |
| 49 |
/* TODO: Retrieve the ECDSA private key object attributes instead, |
| 50 |
* unless the key has the "sensitive" attribute set */ |
| 51 |
|
| 52 |
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| 53 |
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) |
| 54 |
EC_KEY_set_ex_data(ec, ec_ex_index, key); |
| 55 |
#else |
| 56 |
ECDSA_set_ex_data(ec, ec_ex_index, key); |
| 57 |
@@ -345,14 +345,14 @@ static ECDSA_SIG *pkcs11_ecdsa_sign_sig( |
| 58 |
(void)kinv; /* Precomputed values are not used for PKCS#11 */ |
| 59 |
(void)rp; /* Precomputed values are not used for PKCS#11 */ |
| 60 |
|
| 61 |
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| 62 |
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) |
| 63 |
key = (PKCS11_KEY *)EC_KEY_get_ex_data(ec, ec_ex_index); |
| 64 |
#else |
| 65 |
key = (PKCS11_KEY *)ECDSA_get_ex_data(ec, ec_ex_index); |
| 66 |
#endif |
| 67 |
if (key == NULL) { |
| 68 |
sign_sig_fn orig_sign_sig; |
| 69 |
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| 70 |
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) |
| 71 |
const EC_KEY_METHOD *meth = EC_KEY_OpenSSL(); |
| 72 |
EC_KEY_METHOD_get_sign((EC_KEY_METHOD *)meth, |
| 73 |
NULL, NULL, &orig_sign_sig); |
| 74 |
@@ -385,7 +385,7 @@ static ECDSA_SIG *pkcs11_ecdsa_sign_sig( |
| 75 |
sig = ECDSA_SIG_new(); |
| 76 |
if (sig == NULL) |
| 77 |
return NULL; |
| 78 |
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| 79 |
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) |
| 80 |
ECDSA_SIG_set0(sig, r, s); |
| 81 |
#else |
| 82 |
BN_free(sig->r); |
| 83 |
@@ -515,7 +515,7 @@ static int pkcs11_ecdh_derive(unsigned c |
| 84 |
return 0; |
| 85 |
} |
| 86 |
|
| 87 |
-#if OPENSSL_VERSION_NUMBER >= 0x10100004L |
| 88 |
+#if OPENSSL_VERSION_NUMBER >= 0x10100004L && !defined(LIBRESSL_VERSION_NUMBER) |
| 89 |
|
| 90 |
/** |
| 91 |
* ECDH key derivation method (replaces ossl_ecdh_compute_key) |
| 92 |
@@ -578,7 +578,7 @@ static int pkcs11_ec_ckey(void *out, siz |
| 93 |
size_t buflen; |
| 94 |
int rv; |
| 95 |
|
| 96 |
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| 97 |
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) |
| 98 |
key = (PKCS11_KEY *)EC_KEY_get_ex_data(ecdh, ec_ex_index); |
| 99 |
#else |
| 100 |
key = (PKCS11_KEY *)ECDSA_get_ex_data((EC_KEY *)ecdh, ec_ex_index); |
| 101 |
@@ -623,7 +623,7 @@ static int pkcs11_ec_ckey(void *out, siz |
| 102 |
/* New way to allocate an ECDSA_METOD object */ |
| 103 |
/* OpenSSL 1.1 has single method EC_KEY_METHOD for ECDSA and ECDH */ |
| 104 |
|
| 105 |
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| 106 |
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) |
| 107 |
|
| 108 |
EC_KEY_METHOD *PKCS11_get_ec_key_method(void) |
| 109 |
{ |