From 8ce3b3a5e6653435924be42e4bb33b2783582d56 Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Tue, 22 Oct 2019 10:29:57 +1000 Subject: [PATCH] Use the public key type as private key type with PKCS #11 --- src/ssl.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/ssl.c b/src/ssl.c index 7cd12ae9f..78108942e 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -5472,6 +5472,14 @@ int ProcessBuffer(WOLFSSL_CTX* ctx, const unsigned char* buff, case RSAk: #ifdef HAVE_PK_CALLBACKS keyType = rsa_sa_algo; + #endif + #ifdef HAVE_PKCS11 + if (ctx) { + ctx->privateKeyType = rsa_sa_algo; + } + else { + ssl->buffers.keyType = rsa_sa_algo; + } #endif /* Determine RSA key size by parsing public key */ idx = 0; @@ -5500,6 +5508,14 @@ int ProcessBuffer(WOLFSSL_CTX* ctx, const unsigned char* buff, case ECDSAk: #ifdef HAVE_PK_CALLBACKS keyType = ecc_dsa_sa_algo; + #endif + #ifdef HAVE_PKCS11 + if (ctx) { + ctx->privateKeyType = ecc_dsa_sa_algo; + } + else { + ssl->buffers.keyType = ecc_dsa_sa_algo; + } #endif /* Determine ECC key size based on curve */ keySz = wc_ecc_get_curve_size_from_id( @@ -5525,6 +5541,14 @@ int ProcessBuffer(WOLFSSL_CTX* ctx, const unsigned char* buff, case ED25519k: #ifdef HAVE_PK_CALLBACKS keyType = ed25519_sa_algo; + #endif + #ifdef HAVE_PKCS11 + if (ctx) { + ctx->privateKeyType = ed25519_sa_algo; + } + else { + ssl->buffers.keyType = ed25519_sa_algo; + } #endif /* ED25519 is fixed key size */ keySz = ED25519_KEY_SIZE;