|DES_ecb_encrypt| was already present. This benefits globalplatform. Change-Id: I2ab41eb1936b3026439b5981fb27e29a12672b66 Reviewed-on: https://boringssl-review.googlesource.com/5723 Reviewed-by: Adam Langley <agl@google.com>kris/onging/CECPQ3_patch15
@@ -69,6 +69,8 @@ | |||||
static const EVP_CIPHER *GetCipher(const std::string &name) { | static const EVP_CIPHER *GetCipher(const std::string &name) { | ||||
if (name == "DES-CBC") { | if (name == "DES-CBC") { | ||||
return EVP_des_cbc(); | return EVP_des_cbc(); | ||||
} else if (name == "DES-ECB") { | |||||
return EVP_des_ecb(); | |||||
} else if (name == "DES-EDE3-CBC") { | } else if (name == "DES-EDE3-CBC") { | ||||
return EVP_des_ede3_cbc(); | return EVP_des_ede3_cbc(); | ||||
} else if (name == "RC4") { | } else if (name == "RC4") { | ||||
@@ -96,6 +96,30 @@ static const EVP_CIPHER des_cbc = { | |||||
const EVP_CIPHER *EVP_des_cbc(void) { return &des_cbc; } | const EVP_CIPHER *EVP_des_cbc(void) { return &des_cbc; } | ||||
static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in, | |||||
size_t in_len) { | |||||
if (in_len < ctx->cipher->block_size) { | |||||
return 1; | |||||
} | |||||
in_len -= ctx->cipher->block_size; | |||||
EVP_DES_KEY *dat = (EVP_DES_KEY *) ctx->cipher_data; | |||||
for (size_t i = 0; i <= in_len; i += ctx->cipher->block_size) { | |||||
DES_ecb_encrypt((DES_cblock *) (in + i), (DES_cblock *) (out + i), | |||||
&dat->ks.ks, ctx->encrypt); | |||||
} | |||||
return 1; | |||||
} | |||||
static const EVP_CIPHER des_ecb = { | |||||
NID_des_ecb, 8 /* block_size */, 8 /* key_size */, | |||||
0 /* iv_len */, sizeof(EVP_DES_KEY), EVP_CIPH_ECB_MODE, | |||||
NULL /* app_data */, des_init_key, des_ecb_cipher, | |||||
NULL /* cleanup */, NULL /* ctrl */, }; | |||||
const EVP_CIPHER *EVP_des_ecb(void) { return &des_ecb; } | |||||
typedef struct { | typedef struct { | ||||
union { | union { | ||||
double align; | double align; | ||||
@@ -542,3 +542,40 @@ Cipher = AES-192-ECB | |||||
Key = 8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B | Key = 8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B | ||||
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710 | Plaintext = F69F2445DF4F9B17AD2B417BE66C3710 | ||||
Ciphertext = 9A4B41BA738D6C72FB16691603C18E0E | Ciphertext = 9A4B41BA738D6C72FB16691603C18E0E | ||||
# DES ECB tests | |||||
Cipher = DES-ECB | |||||
Key = 0000000000000000 | |||||
Plaintext = 0000000000000000 | |||||
Ciphertext = 8CA64DE9C1B123A7 | |||||
Cipher = DES-ECB | |||||
Key = FFFFFFFFFFFFFFFF | |||||
Plaintext = FFFFFFFFFFFFFFFF | |||||
Ciphertext = 7359B2163E4EDC58 | |||||
Cipher = DES-ECB | |||||
Key = 3000000000000000 | |||||
Plaintext = 1000000000000001 | |||||
Ciphertext = 958E6E627A05557B | |||||
Cipher = DES-ECB | |||||
Key = 1111111111111111 | |||||
Plaintext = 1111111111111111 | |||||
Ciphertext = F40379AB9E0EC533 | |||||
Cipher = DES-ECB | |||||
Key = 0123456789ABCDEF | |||||
Plaintext = 1111111111111111 | |||||
Ciphertext = 17668DFC7292532D | |||||
Cipher = DES-ECB | |||||
Key = 1111111111111111 | |||||
Plaintext = 0123456789ABCDEF | |||||
Ciphertext = 8A5AE1F81AB8F2DD | |||||
Cipher = DES-ECB | |||||
Key = FEDCBA9876543210 | |||||
Plaintext = 0123456789ABCDEF | |||||
Ciphertext = ED39D950FA74BCC4 |
@@ -75,6 +75,7 @@ extern "C" { | |||||
OPENSSL_EXPORT const EVP_CIPHER *EVP_rc4(void); | OPENSSL_EXPORT const EVP_CIPHER *EVP_rc4(void); | ||||
OPENSSL_EXPORT const EVP_CIPHER *EVP_des_cbc(void); | OPENSSL_EXPORT const EVP_CIPHER *EVP_des_cbc(void); | ||||
OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ecb(void); | |||||
OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ede3_cbc(void); | OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ede3_cbc(void); | ||||
OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_ecb(void); | OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_ecb(void); | ||||