summaryrefslogtreecommitdiffstats
path: root/src/crypto/cipher/e_des.c
diff options
context:
space:
mode:
authorJessica Wagantall <jwagantall@cyngn.com>2016-11-09 11:44:49 -0800
committerJessica Wagantall <jwagantall@cyngn.com>2016-11-09 11:58:14 -0800
commit1c725f9b6cce4af300ac28b902d186e8053c2f97 (patch)
tree1d2fc71f41d7ea83be9f52e42d0192636b6ffa53 /src/crypto/cipher/e_des.c
parent9eeaa8c0f3b6324cc1cd518e18b33f2032bb173c (diff)
parent9120fca9ecc68b3d1a660be048b20f0c3a8feade (diff)
downloadexternal_boringssl-1c725f9b6cce4af300ac28b902d186e8053c2f97.zip
external_boringssl-1c725f9b6cce4af300ac28b902d186e8053c2f97.tar.gz
external_boringssl-1c725f9b6cce4af300ac28b902d186e8053c2f97.tar.bz2
Merge tag 'android-6.0.1_r74' into HEAD
CYNGNOS-3303 Android 6.0.1 release 74 Change-Id: I74fadbfb9c05b2e1ce69f27809add70a2c89ec15
Diffstat (limited to 'src/crypto/cipher/e_des.c')
-rw-r--r--src/crypto/cipher/e_des.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/crypto/cipher/e_des.c b/src/crypto/cipher/e_des.c
index d7bef92..7a9a198 100644
--- a/src/crypto/cipher/e_des.c
+++ b/src/crypto/cipher/e_des.c
@@ -150,10 +150,31 @@ static int des_ede3_cbc_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out,
return 1;
}
-static const EVP_CIPHER des3_cbc = {
- NID_des_cbc, 8 /* block_size */, 24 /* key_size */,
+static const EVP_CIPHER des_ede3_cbc = {
+ NID_des_ede3_cbc, 8 /* block_size */, 24 /* key_size */,
8 /* iv_len */, sizeof(DES_EDE_KEY), EVP_CIPH_CBC_MODE,
NULL /* app_data */, des_ede3_init_key, des_ede3_cbc_cipher,
NULL /* cleanup */, NULL /* ctrl */, };
-const EVP_CIPHER *EVP_des_ede3_cbc(void) { return &des3_cbc; }
+const EVP_CIPHER *EVP_des_ede3_cbc(void) { return &des_ede3_cbc; }
+
+
+static int des_ede_init_key(EVP_CIPHER_CTX *ctx, const uint8_t *key,
+ const uint8_t *iv, int enc) {
+ DES_cblock *deskey = (DES_cblock *) key;
+ DES_EDE_KEY *dat = (DES_EDE_KEY *) ctx->cipher_data;
+
+ DES_set_key(&deskey[0], &dat->ks.ks[0]);
+ DES_set_key(&deskey[1], &dat->ks.ks[1]);
+ DES_set_key(&deskey[0], &dat->ks.ks[2]);
+
+ return 1;
+}
+
+static const EVP_CIPHER des_ede_cbc = {
+ NID_des_ede_cbc, 8 /* block_size */, 16 /* key_size */,
+ 8 /* iv_len */, sizeof(DES_EDE_KEY), EVP_CIPH_CBC_MODE,
+ NULL /* app_data */, des_ede_init_key , des_ede3_cbc_cipher,
+ NULL /* cleanup */, NULL /* ctrl */, };
+
+const EVP_CIPHER *EVP_des_ede_cbc(void) { return &des_ede_cbc; }