diff options
author | Tobias Nießen <tniessen@tnie.de> | 2018-04-26 21:05:18 +0200 |
---|---|---|
committer | Tobias Nießen <tniessen@tnie.de> | 2018-04-30 18:44:10 +0200 |
commit | 0e63724fe15e7ecd853399a039a10cc9f3e09958 (patch) | |
tree | 15dfa33ff2de5e2d8397aad334c755874aae843f | |
parent | 109cfa1511cb504866c44314d92552285a236b1c (diff) | |
download | android-node-v8-0e63724fe15e7ecd853399a039a10cc9f3e09958.tar.gz android-node-v8-0e63724fe15e7ecd853399a039a10cc9f3e09958.tar.bz2 android-node-v8-0e63724fe15e7ecd853399a039a10cc9f3e09958.zip |
crypto: use new OpenSSL constants in CipherBase
This change replaces some constants with better alternatives which were
unavailable in OpenSSL 1.0.2.
PR-URL: https://github.com/nodejs/node/pull/20339
Refs: https://github.com/nodejs/node/pull/19794
Refs: https://github.com/nodejs/node/pull/18138
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
-rw-r--r-- | src/node_crypto.cc | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/src/node_crypto.cc b/src/node_crypto.cc index 01b6b5c8ea..20a9e2ec4e 100644 --- a/src/node_crypto.cc +++ b/src/node_crypto.cc @@ -2809,10 +2809,7 @@ bool CipherBase::InitAuthenticated(const char *cipher_type, int iv_len, unsigned int auth_tag_len) { CHECK(IsAuthenticatedMode()); - // TODO(tniessen) Use EVP_CTRL_AEAD_SET_IVLEN when migrating to OpenSSL 1.1.0 - static_assert(EVP_CTRL_CCM_SET_IVLEN == EVP_CTRL_GCM_SET_IVLEN, - "OpenSSL constants differ between GCM and CCM"); - if (!EVP_CIPHER_CTX_ctrl(ctx_, EVP_CTRL_GCM_SET_IVLEN, iv_len, nullptr)) { + if (!EVP_CIPHER_CTX_ctrl(ctx_, EVP_CTRL_AEAD_SET_IVLEN, iv_len, nullptr)) { env()->ThrowError("Invalid IV length"); return false; } @@ -3122,10 +3119,8 @@ bool CipherBase::Final(unsigned char** out, int *out_len) { // be given by the user. if (mode == EVP_CIPH_GCM_MODE && auth_tag_len_ == kNoAuthTagLength) auth_tag_len_ = sizeof(auth_tag_); - // TOOD(tniessen) Use EVP_CTRL_AEAP_GET_TAG in OpenSSL 1.1.0 - static_assert(EVP_CTRL_CCM_GET_TAG == EVP_CTRL_GCM_GET_TAG, - "OpenSSL constants differ between GCM and CCM"); - CHECK_EQ(1, EVP_CIPHER_CTX_ctrl(ctx_, EVP_CTRL_GCM_GET_TAG, auth_tag_len_, + CHECK_EQ(1, EVP_CIPHER_CTX_ctrl(ctx_, EVP_CTRL_AEAD_GET_TAG, + auth_tag_len_, reinterpret_cast<unsigned char*>(auth_tag_))); } } |