From 2ec7cacec1c098f8c2ce28929634a0f564aa0431 Mon Sep 17 00:00:00 2001
From: Hans Nilsson <hans@erlang.org>
Date: Thu, 7 Mar 2019 12:16:14 +0100
Subject: crypto: Shrink aes.c,h (remove aes_ctr_stream_* funcs)

---
 lib/crypto/c_src/aes.c | 151 +------------------------------------------------
 lib/crypto/c_src/aes.h |   3 -
 2 files changed, 1 insertion(+), 153 deletions(-)

diff --git a/lib/crypto/c_src/aes.c b/lib/crypto/c_src/aes.c
index ee2bb70fb7..4b01e629f9 100644
--- a/lib/crypto/c_src/aes.c
+++ b/lib/crypto/c_src/aes.c
@@ -166,156 +166,7 @@ ERL_NIF_TERM aes_ige_crypt_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv
 }
 
 
-#ifdef HAVE_EVP_AES_CTR
-ERL_NIF_TERM aes_ctr_stream_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
-{/* (Key, IVec) */
-    ErlNifBinary     key_bin, ivec_bin;
-    struct evp_cipher_ctx *ctx = NULL;
-    const EVP_CIPHER *cipher;
-    ERL_NIF_TERM     ret;
-
-    ASSERT(argc == 2);
-
-    if (!enif_inspect_iolist_as_binary(env, argv[0], &key_bin))
-        goto bad_arg;
-    if (!enif_inspect_binary(env, argv[1], &ivec_bin))
-        goto bad_arg;
-    if (ivec_bin.size != 16)
-        goto bad_arg;
-
-    switch (key_bin.size)
-    {
-    case 16:
-        cipher = EVP_aes_128_ctr();
-        break;
-    case 24:
-        cipher = EVP_aes_192_ctr();
-        break;
-    case 32:
-        cipher = EVP_aes_256_ctr();
-        break;
-    default:
-        goto bad_arg;
-    }
-
-    if ((ctx = enif_alloc_resource(evp_cipher_ctx_rtype, sizeof(struct evp_cipher_ctx))) == NULL)
-        goto err;
-    if ((ctx->ctx = EVP_CIPHER_CTX_new()) == NULL)
-        goto err;
-
-    if (EVP_CipherInit_ex(ctx->ctx, cipher, NULL,
-                          key_bin.data, ivec_bin.data, 1) != 1)
-        goto err;
-
-    if (EVP_CIPHER_CTX_set_padding(ctx->ctx, 0) != 1)
-        goto err;
-
-    ret = enif_make_resource(env, ctx);
-    goto done;
-
- bad_arg:
-    return enif_make_badarg(env);
-
- err:
-    ret = enif_make_badarg(env);
-
- done:
-    if (ctx)
-        enif_release_resource(ctx);
-    return ret;
-}
-
-ERL_NIF_TERM aes_ctr_stream_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
-{/* (Context, Data) */
-    struct evp_cipher_ctx *ctx = NULL, *new_ctx = NULL;
-    ErlNifBinary   data_bin;
-    ERL_NIF_TERM   ret, cipher_term;
-    unsigned char  *out;
-    int            outl = 0;
-
-    ASSERT(argc == 2);
-
-    if (!enif_get_resource(env, argv[0], evp_cipher_ctx_rtype, (void**)&ctx))
-        goto bad_arg;
-    if (!enif_inspect_iolist_as_binary(env, argv[1], &data_bin))
-        goto bad_arg;
-    if (data_bin.size > INT_MAX)
-        goto bad_arg;
-
-    if ((new_ctx = enif_alloc_resource(evp_cipher_ctx_rtype, sizeof(struct evp_cipher_ctx))) == NULL)
-        goto err;
-    if ((new_ctx->ctx = EVP_CIPHER_CTX_new()) == NULL)
-        goto err;
-
-    if (EVP_CIPHER_CTX_copy(new_ctx->ctx, ctx->ctx) != 1)
-        goto err;
-
-    if ((out = enif_make_new_binary(env, data_bin.size, &cipher_term)) == NULL)
-        goto err;
-
-    if (EVP_CipherUpdate(new_ctx->ctx, out, &outl, data_bin.data, (int)data_bin.size) != 1)
-        goto err;
-    ASSERT(outl >= 0 && (size_t)outl == data_bin.size);
-
-    ret = enif_make_tuple2(env, enif_make_resource(env, new_ctx), cipher_term);
-    CONSUME_REDS(env,data_bin);
-    goto done;
-
- bad_arg:
-    return enif_make_badarg(env);
-
- err:
-    ret = enif_make_badarg(env);
-
- done:
-    if (new_ctx)
-        enif_release_resource(new_ctx);
-    return ret;
-}
-
-#else /* if not HAVE_EVP_AES_CTR */
-
-ERL_NIF_TERM aes_ctr_stream_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
-{/* (Key, IVec) */
-    ASSERT(argc == 2);
-
-    return aes_ctr_stream_init_compat(env, argv[0], argv[1]);
-}
-
-
-ERL_NIF_TERM aes_ctr_stream_init_compat(ErlNifEnv* env, const ERL_NIF_TERM key_term, const ERL_NIF_TERM iv_term)
-{
-    ErlNifBinary key_bin, ivec_bin;
-    ERL_NIF_TERM ecount_bin;
-    unsigned char *outp;
- 
-    if (!enif_inspect_iolist_as_binary(env, key_term, &key_bin))
-        goto bad_arg;
-    if (key_bin.size != 16 && key_bin.size != 24 && key_bin.size != 32)
-        goto bad_arg;
-    if (!enif_inspect_binary(env, iv_term, &ivec_bin))
-        goto bad_arg;
-    if (ivec_bin.size != 16)
-        goto bad_arg;
-    if ((outp = enif_make_new_binary(env, AES_BLOCK_SIZE, &ecount_bin)) == NULL)
-        goto err;
-    memset(outp, 0, AES_BLOCK_SIZE);
-
-    return enif_make_tuple4(env, key_term, iv_term, ecount_bin, enif_make_int(env, 0));
-
- bad_arg:
- err:
-    return enif_make_badarg(env);
-}
-
-ERL_NIF_TERM aes_ctr_stream_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
-{
-    ASSERT(argc == 2);
-
-    return aes_ctr_stream_encrypt_compat(env, argv[0], argv[1]);
-}
-
-
+#if !defined(HAVE_EVP_AES_CTR)
 ERL_NIF_TERM aes_ctr_stream_encrypt_compat(ErlNifEnv* env, const ERL_NIF_TERM state_arg, const ERL_NIF_TERM data_arg)
 {/* ({Key, IVec, ECount, Num}, Data) */
     ErlNifBinary key_bin, ivec_bin, text_bin, ecount_bin;
diff --git a/lib/crypto/c_src/aes.h b/lib/crypto/c_src/aes.h
index 527d041410..c0b2b91f8d 100644
--- a/lib/crypto/c_src/aes.h
+++ b/lib/crypto/c_src/aes.h
@@ -27,10 +27,7 @@ ERL_NIF_TERM aes_cfb_8_crypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]
 ERL_NIF_TERM aes_cfb_128_crypt_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 ERL_NIF_TERM aes_ige_crypt_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 
-ERL_NIF_TERM aes_ctr_stream_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
-ERL_NIF_TERM aes_ctr_stream_encrypt(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 #if !defined(HAVE_EVP_AES_CTR)
-ERL_NIF_TERM aes_ctr_stream_init_compat(ErlNifEnv* env, const ERL_NIF_TERM key_term, const ERL_NIF_TERM iv_term);
 ERL_NIF_TERM aes_ctr_stream_encrypt_compat(ErlNifEnv* env, const ERL_NIF_TERM state_arg, const ERL_NIF_TERM data_arg);
 #endif
 
-- 
cgit v1.2.3