Ejemplo n.º 1
0
Archivo: e_aes.c Proyecto: 274914765/C
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;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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);
}
Ejemplo n.º 5
0
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);
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 7
0
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;
}