diff options
author | Hans Nilsson <[email protected]> | 2019-03-08 10:23:33 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2019-03-08 10:23:33 +0100 |
commit | 0c9d6cb2ab23afb8e4bde0a3fa56fafb0d3a8a27 (patch) | |
tree | 1a037ff3be06d74d4bc9c3c342231c5f4fc845c4 /lib/crypto/c_src/hash.c | |
parent | ae6a710613fc4ee54c184be9d554cea4a39284ae (diff) | |
parent | 2f0aff476c585524b4eb2d8edb13c5e7357c111d (diff) | |
download | otp-0c9d6cb2ab23afb8e4bde0a3fa56fafb0d3a8a27.tar.gz otp-0c9d6cb2ab23afb8e4bde0a3fa56fafb0d3a8a27.tar.bz2 otp-0c9d6cb2ab23afb8e4bde0a3fa56fafb0d3a8a27.zip |
Merge pull request #2173 from essen/crypto-info
Add crypto:cipher_info/1 and crypto:hash_info/1
OTP-15655
Diffstat (limited to 'lib/crypto/c_src/hash.c')
-rw-r--r-- | lib/crypto/c_src/hash.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/crypto/c_src/hash.c b/lib/crypto/c_src/hash.c index 457e9d071a..0a9f64acef 100644 --- a/lib/crypto/c_src/hash.c +++ b/lib/crypto/c_src/hash.c @@ -61,6 +61,32 @@ int init_hash_ctx(ErlNifEnv* env) { #endif } +ERL_NIF_TERM hash_info_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{/* (Type) */ + struct digest_type_t *digp = NULL; + const EVP_MD *md; + ERL_NIF_TERM ret; + + ASSERT(argc == 1); + + if ((digp = get_digest_type(argv[0])) == NULL) + return enif_make_badarg(env); + + if ((md = digp->md.p) == NULL) + return atom_notsup; + + ret = enif_make_new_map(env); + + enif_make_map_put(env, ret, atom_type, + enif_make_int(env, EVP_MD_type(md)), &ret); + enif_make_map_put(env, ret, atom_size, + enif_make_int(env, EVP_MD_size(md)), &ret); + enif_make_map_put(env, ret, atom_block_size, + enif_make_int(env, EVP_MD_block_size(md)), &ret); + + return ret; +} + ERL_NIF_TERM hash_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {/* (Type, Data) */ struct digest_type_t *digp = NULL; |