summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2018-11-28 15:17:27 +0100
committerNikos Mavrogiannopoulos <nmav@redhat.com>2018-11-28 15:18:31 +0100
commit253d52a4da3f72fb32da08ed09068ed60f66955f (patch)
tree13f7c1ad3ba18f979520898378a87d66f528f658
parent07f5f270b2dc20ebd493ae357a3fcc99e918a3a4 (diff)
downloadgnutls-tmp-fix-mingw.tar.gz
pkcs11: make the usage of eddsa definitions conditionaltmp-fix-mingw
This addresses issues with compilation under mingw or in systems without a recent p11-kit. Resolves: #626 Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
-rw-r--r--lib/pkcs11_int.h14
-rw-r--r--lib/pkcs11_write.c2
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/pkcs11_int.h b/lib/pkcs11_int.h
index 9c81f4e19d..059c9b5497 100644
--- a/lib/pkcs11_int.h
+++ b/lib/pkcs11_int.h
@@ -216,6 +216,12 @@ _gnutls_pkcs11_privkey_decrypt_data(gnutls_pkcs11_privkey_t key,
int
_pkcs11_privkey_get_pubkey (gnutls_pkcs11_privkey_t pkey, gnutls_pubkey_t *pub, unsigned flags);
+#if defined(CKM_EDDSA) && defined(CKK_EC_EDWARDS)
+# define HAVE_PKCS11_EDDSA_DEFS 1
+#else
+# undef HAVE_PKCS11_EDDSA_DEFS
+#endif
+
static inline int pk_to_mech(gnutls_pk_algorithm_t pk)
{
if (pk == GNUTLS_PK_DSA)
@@ -226,8 +232,10 @@ static inline int pk_to_mech(gnutls_pk_algorithm_t pk)
return CKM_RSA_PKCS;
else if (pk == GNUTLS_PK_RSA_PSS)
return CKM_RSA_PKCS_PSS;
+#ifdef HAVE_PKCS11_EDDSA_DEFS
else if (pk == GNUTLS_PK_EDDSA_ED25519)
return CKM_EDDSA;
+#endif
else
return -1;
}
@@ -240,8 +248,10 @@ static inline int pk_to_key_type(gnutls_pk_algorithm_t pk)
return CKK_ECDSA;
else if (pk == GNUTLS_PK_RSA_PSS || pk == GNUTLS_PK_RSA)
return CKK_RSA;
+#ifdef HAVE_PKCS11_EDDSA_DEFS
else if (pk == GNUTLS_PK_EDDSA_ED25519)
return CKK_EC_EDWARDS;
+#endif
else
return -1;
}
@@ -254,8 +264,10 @@ static inline gnutls_pk_algorithm_t key_type_to_pk(ck_key_type_t m)
return GNUTLS_PK_DSA;
else if (m == CKK_ECDSA)
return GNUTLS_PK_EC;
+#ifdef HAVE_PKCS11_EDDSA_DEFS
else if (m == CKK_EC_EDWARDS)
return GNUTLS_PK_EDDSA_ED25519;
+#endif
else
return GNUTLS_PK_UNKNOWN;
}
@@ -271,9 +283,11 @@ static inline int pk_to_genmech(gnutls_pk_algorithm_t pk, ck_key_type_t *type)
} else if (pk == GNUTLS_PK_RSA_PSS || pk == GNUTLS_PK_RSA) {
*type = CKK_RSA;
return CKM_RSA_PKCS_KEY_PAIR_GEN;
+#ifdef HAVE_PKCS11_EDDSA_DEFS
} else if (pk == GNUTLS_PK_EDDSA_ED25519) {
*type = CKK_EC_EDWARDS;
return CKM_EDDSA;
+#endif
} else {
*type = -1;
return -1;
diff --git a/lib/pkcs11_write.c b/lib/pkcs11_write.c
index 07dd98e9c6..8fd3f928e8 100644
--- a/lib/pkcs11_write.c
+++ b/lib/pkcs11_write.c
@@ -943,6 +943,7 @@ gnutls_pkcs11_copy_x509_privkey2(const char *token_url,
break;
}
+#ifdef HAVE_PKCS11_EDDSA_DEFS
case GNUTLS_PK_EDDSA_ED25519:
{
ret =
@@ -967,6 +968,7 @@ gnutls_pkcs11_copy_x509_privkey2(const char *token_url,
break;
}
+#endif
default:
gnutls_assert();
ret = GNUTLS_E_INVALID_REQUEST;