Open tniessen opened 5 years ago
@tniessen ... is this still relevant? Should it remain open?
@jasnell I think so, yes. Please leave it open for now.
@tniessen ... just an update... I've got CMAC support on my todo list (revisiting the work that bnoordhuis had started but hadn't completed). I've also got poly1305 and siphash on my list but it'll be a while before I get to those.
On the key types, I'm really not convinced yet that the remaining key types are a priority.
This is a meta issue to keep track of asymmetric key types supported by OpenSSL and node. The following list includes all key types supported by OpenSSL 1.1.1b. Checked items are fully supported by node's
KeyObject
API:EVP_PKEY_RSA
: https://github.com/nodejs/node/pull/24234EVP_PKEY_RSA2
: appears to be unusable?EVP_PKEY_RSA_PSS
: https://github.com/nodejs/node/pull/26960EVP_PKEY_DSA
: https://github.com/nodejs/node/pull/24234EVP_PKEY_DSA1
: alias forNID_dsa_2
, but treated likeEVP_PKEY_DSA
by OpenSSLEVP_PKEY_DSA2
: alias forNID_dsaWithSHA
, but treated likeEVP_PKEY_DSA
by OpenSSLEVP_PKEY_DSA3
: alias forNID_dsaWithSHA1
, but treated likeEVP_PKEY_DSA
by OpenSSLEVP_PKEY_DSA4
: alias forNID_dsaWithSHA1_2
, but treated likeEVP_PKEY_DSA
by OpenSSLEVP_PKEY_DH
: https://github.com/nodejs/node/pull/31178EVP_PKEY_DHX
EVP_PKEY_EC
: https://github.com/nodejs/node/pull/24234EVP_PKEY_SM2
: https://github.com/nodejs/node/pull/37066EVP_PKEY_X25519
: https://github.com/nodejs/node/pull/26774EVP_PKEY_X448
: https://github.com/nodejs/node/pull/26774EVP_PKEY_ED25519
: https://github.com/nodejs/node/pull/26319 and https://github.com/nodejs/node/pull/26554EVP_PKEY_ED448
: https://github.com/nodejs/node/pull/26319 and https://github.com/nodejs/node/pull/26554The next step is to determine which of the above key types need to be dealt with in which way. Some of these types do not represent actual asymmetric keys (e.g.,
EVP_PKEY_SCRYPT
) and thus don't need to be dealt with in theKeyObject
API:EVP_PKEY_SCRYPT
: KDFEVP_PKEY_HMAC
: MACEVP_PKEY_CMAC
: MACEVP_PKEY_HKDF
: KDFEVP_PKEY_POLY1305
: MACEVP_PKEY_SIPHASH
: MAC / PRFEVP_PKEY_TLS1_PRF
: PRF