Przeglądaj źródła

Add |EVP_des_ecb| from OpenSSL at fd682e4c.

|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
Matt Braithwaite 9 lat temu
committed by Adam Langley
rodzic
commit
98d2f1fbe0
4 zmienionych plików z 64 dodań i 0 usunięć
  1. +2
    -0
      crypto/cipher/cipher_test.cc
  2. +24
    -0
      crypto/cipher/e_des.c
  3. +37
    -0
      crypto/cipher/test/cipher_test.txt
  4. +1
    -0
      include/openssl/cipher.h

+ 2
- 0
crypto/cipher/cipher_test.cc Wyświetl plik

@@ -69,6 +69,8 @@
static const EVP_CIPHER *GetCipher(const std::string &name) {
if (name == "DES-CBC") {
return EVP_des_cbc();
} else if (name == "DES-ECB") {
return EVP_des_ecb();
} else if (name == "DES-EDE3-CBC") {
return EVP_des_ede3_cbc();
} else if (name == "RC4") {


+ 24
- 0
crypto/cipher/e_des.c Wyświetl plik

@@ -96,6 +96,30 @@ static const EVP_CIPHER 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 {
union {
double align;


+ 37
- 0
crypto/cipher/test/cipher_test.txt Wyświetl plik

@@ -542,3 +542,40 @@ Cipher = AES-192-ECB
Key = 8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710
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

+ 1
- 0
include/openssl/cipher.h Wyświetl plik

@@ -75,6 +75,7 @@ extern "C" {
OPENSSL_EXPORT const EVP_CIPHER *EVP_rc4(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_aes_128_ecb(void);


Ładowanie…
Anuluj
Zapisz