static int aes_cbc_cipher (EVP_CIPHER_CTX * ctx, unsigned char *out, const unsigned char *in, size_t len) { EVP_AES_KEY *dat = (EVP_AES_KEY *) ctx->cipher_data; if (dat->stream.cbc) (*dat->stream.cbc) (in, out, len, &dat->ks, ctx->iv, ctx->encrypt); else if (ctx->encrypt) CRYPTO_cbc128_encrypt (in, out, len, &dat->ks, ctx->iv, dat->block); else CRYPTO_cbc128_encrypt (in, out, len, &dat->ks, ctx->iv, dat->block); return 1; }
size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, unsigned char *out, size_t len, const void *key, unsigned char ivec[16], block128_f block) { size_t residue, n; assert(in && out && key && ivec); if (len < 16) return 0; residue = len % 16; len -= residue; CRYPTO_cbc128_encrypt(in, out, len, key, ivec, block); if (residue == 0) return len; in += len; out += len; for (n = 0; n < residue; ++n) ivec[n] ^= in[n]; (*block) (ivec, ivec, key); memcpy(out - 16 + residue, ivec, 16); return len + residue; }
void Camellia_cbc_encrypt (const unsigned char *in, unsigned char *out, size_t len, const CAMELLIA_KEY * key, unsigned char *ivec, const int enc) { if (enc) CRYPTO_cbc128_encrypt (in, out, len, key, ivec, (block128_f) Camellia_encrypt); else CRYPTO_cbc128_decrypt (in, out, len, key, ivec, (block128_f) Camellia_decrypt); }
void AES_cbc_encrypt (const unsigned char *in, unsigned char *out, size_t len, const AES_KEY * key, unsigned char *ivec, const int enc) { if (enc) CRYPTO_cbc128_encrypt (in, out, len, key, ivec, (block128_f) AES_encrypt); else CRYPTO_cbc128_decrypt (in, out, len, key, ivec, (block128_f) AES_decrypt); }
void sms4_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, const sms4_key_t *key, unsigned char *ivec, int encrypt) { if(encrypt) CRYPTO_cbc128_encrypt(in,out,len,key,ivec,(block128_f)sms4_encrypt); else CRYPTO_cbc128_decrypt(in,out,len,key,ivec,(block128_f)sms4_encrypt); }
static int aes_cbc_cipher(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in, size_t len) { EVP_AES_KEY *dat = (EVP_AES_KEY *)ctx->cipher_data; if (dat->stream.cbc) { (*dat->stream.cbc)(in, out, len, &dat->ks, ctx->iv, ctx->encrypt); } else if (ctx->encrypt) { CRYPTO_cbc128_encrypt(in, out, len, &dat->ks, ctx->iv, dat->block); } else { CRYPTO_cbc128_decrypt(in, out, len, &dat->ks, ctx->iv, dat->block); } return 1; }
static int camellia_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t len) { EVP_CAMELLIA_KEY *dat = EVP_C_DATA(EVP_CAMELLIA_KEY,ctx); if (dat->stream.cbc) (*dat->stream.cbc) (in, out, len, &dat->ks, EVP_CIPHER_CTX_iv_noconst(ctx), EVP_CIPHER_CTX_encrypting(ctx)); else if (EVP_CIPHER_CTX_encrypting(ctx)) CRYPTO_cbc128_encrypt(in, out, len, &dat->ks, EVP_CIPHER_CTX_iv_noconst(ctx), dat->block); else CRYPTO_cbc128_decrypt(in, out, len, &dat->ks, EVP_CIPHER_CTX_iv_noconst(ctx), dat->block); return 1; }