2019-01-30 18:34:14 +00:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Jeremy Apthorp <nornagon@nornagon.net>
|
|
|
|
Date: Fri, 18 Jan 2019 14:23:28 -0800
|
|
|
|
Subject: expose aes-{128,256}-cfb
|
|
|
|
|
2019-12-13 17:18:45 +00:00
|
|
|
This exposes AES-CFB ciphers through the EVP APIs. BoringSSL has
|
|
|
|
implementations for these ciphers, but Node doesn't realise that because
|
|
|
|
without this patch, they're not listed in the APIs that Node uses.
|
|
|
|
|
|
|
|
This should be upstreamed. See e.g.
|
|
|
|
https://boringssl-review.googlesource.com/c/boringssl/+/33984 for a
|
|
|
|
similar patch that was merged upstream.
|
2019-01-30 18:34:14 +00:00
|
|
|
|
|
|
|
diff --git a/crypto/cipher_extra/cipher_extra.c b/crypto/cipher_extra/cipher_extra.c
|
2021-10-21 18:51:36 +00:00
|
|
|
index 62850ab6a216d401d023f81007fb59a33b4585f3..0c30b0329d32b94b22f342f95035e927797d0aaf 100644
|
2019-01-30 18:34:14 +00:00
|
|
|
--- a/crypto/cipher_extra/cipher_extra.c
|
|
|
|
+++ b/crypto/cipher_extra/cipher_extra.c
|
2021-10-21 18:51:36 +00:00
|
|
|
@@ -73,6 +73,7 @@ static const struct {
|
|
|
|
const EVP_CIPHER *(*func)(void);
|
|
|
|
} kCiphers[] = {
|
|
|
|
{NID_aes_128_cbc, "aes-128-cbc", EVP_aes_128_cbc},
|
|
|
|
+ {NID_aes_128_cfb128, "aes-128-cfb", EVP_aes_128_cfb128},
|
|
|
|
{NID_aes_128_ctr, "aes-128-ctr", EVP_aes_128_ctr},
|
|
|
|
{NID_aes_128_ecb, "aes-128-ecb", EVP_aes_128_ecb},
|
|
|
|
{NID_aes_128_gcm, "aes-128-gcm", EVP_aes_128_gcm},
|
|
|
|
@@ -83,6 +84,7 @@ static const struct {
|
|
|
|
{NID_aes_192_gcm, "aes-192-gcm", EVP_aes_192_gcm},
|
|
|
|
{NID_aes_192_ofb128, "aes-192-ofb", EVP_aes_192_ofb},
|
|
|
|
{NID_aes_256_cbc, "aes-256-cbc", EVP_aes_256_cbc},
|
|
|
|
+ {NID_aes_256_cfb128, "aes-256-cfb", EVP_aes_256_cfb128},
|
|
|
|
{NID_aes_256_ctr, "aes-256-ctr", EVP_aes_256_ctr},
|
|
|
|
{NID_aes_256_ecb, "aes-256-ecb", EVP_aes_256_ecb},
|
|
|
|
{NID_aes_256_gcm, "aes-256-gcm", EVP_aes_256_gcm},
|
2019-01-30 18:34:14 +00:00
|
|
|
diff --git a/decrepit/evp/evp_do_all.c b/decrepit/evp/evp_do_all.c
|
2021-10-06 02:21:00 +00:00
|
|
|
index 852b76bea69988e0b3ac76a17b603128f239dde0..d443f4dc2daea0b7aa86ae75d31d995fae667ba9 100644
|
2019-01-30 18:34:14 +00:00
|
|
|
--- a/decrepit/evp/evp_do_all.c
|
|
|
|
+++ b/decrepit/evp/evp_do_all.c
|
2019-02-14 16:30:44 +00:00
|
|
|
@@ -20,8 +20,10 @@ void EVP_CIPHER_do_all_sorted(void (*callback)(const EVP_CIPHER *cipher,
|
2019-01-30 18:34:14 +00:00
|
|
|
const char *unused, void *arg),
|
|
|
|
void *arg) {
|
|
|
|
callback(EVP_aes_128_cbc(), "AES-128-CBC", NULL, arg);
|
|
|
|
+ callback(EVP_aes_128_cfb128(), "AES-128-CFB", NULL, arg);
|
2019-02-14 16:30:44 +00:00
|
|
|
callback(EVP_aes_192_cbc(), "AES-192-CBC", NULL, arg);
|
2019-01-30 18:34:14 +00:00
|
|
|
callback(EVP_aes_256_cbc(), "AES-256-CBC", NULL, arg);
|
|
|
|
+ callback(EVP_aes_256_cfb128(), "AES-256-CFB", NULL, arg);
|
2019-02-14 16:30:44 +00:00
|
|
|
callback(EVP_aes_128_ctr(), "AES-128-CTR", NULL, arg);
|
|
|
|
callback(EVP_aes_192_ctr(), "AES-192-CTR", NULL, arg);
|
2019-01-30 18:34:14 +00:00
|
|
|
callback(EVP_aes_256_ctr(), "AES-256-CTR", NULL, arg);
|
2019-02-14 16:30:44 +00:00
|
|
|
@@ -44,8 +46,10 @@ void EVP_CIPHER_do_all_sorted(void (*callback)(const EVP_CIPHER *cipher,
|
2019-01-30 18:34:14 +00:00
|
|
|
|
|
|
|
// OpenSSL returns everything twice, the second time in lower case.
|
|
|
|
callback(EVP_aes_128_cbc(), "aes-128-cbc", NULL, arg);
|
|
|
|
+ callback(EVP_aes_128_cfb128(), "aes-128-cfb", NULL, arg);
|
2019-02-14 16:30:44 +00:00
|
|
|
callback(EVP_aes_192_cbc(), "aes-192-cbc", NULL, arg);
|
2019-01-30 18:34:14 +00:00
|
|
|
callback(EVP_aes_256_cbc(), "aes-256-cbc", NULL, arg);
|
|
|
|
+ callback(EVP_aes_256_cfb128(), "aes-256-cfb", NULL, arg);
|
2019-02-14 16:30:44 +00:00
|
|
|
callback(EVP_aes_128_ctr(), "aes-128-ctr", NULL, arg);
|
|
|
|
callback(EVP_aes_192_ctr(), "aes-192-ctr", NULL, arg);
|
2019-01-30 18:34:14 +00:00
|
|
|
callback(EVP_aes_256_ctr(), "aes-256-ctr", NULL, arg);
|
|
|
|
diff --git a/include/openssl/cipher.h b/include/openssl/cipher.h
|
2023-03-10 16:07:42 +00:00
|
|
|
index 310d7c237fd884ba715e3fa97ccf1393b6d04fbb..66e69d487fbb767438b7d0dfdf3770f54e3cf7b2 100644
|
2019-01-30 18:34:14 +00:00
|
|
|
--- a/include/openssl/cipher.h
|
|
|
|
+++ b/include/openssl/cipher.h
|
2023-03-10 16:07:42 +00:00
|
|
|
@@ -476,6 +476,7 @@ OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ede3_ecb(void);
|
2019-01-30 18:34:14 +00:00
|
|
|
|
|
|
|
// EVP_aes_128_cfb128 is only available in decrepit.
|
|
|
|
OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_cfb128(void);
|
|
|
|
+OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_256_cfb128(void);
|
|
|
|
|
2021-02-09 20:16:21 +00:00
|
|
|
// EVP_aes_128_cfb is an alias for |EVP_aes_128_cfb128| and is only available in
|
|
|
|
// decrepit.
|