On 15.11.2013 03:16, Peter Wagner wrote:
> Hi Dirk,
> 
> could you please resend the patch.
> 
> i get:
> patching file Makefile
> patch: **** malformed patch at line 84: 2.
> 
> As it seems you mail clients wraps the lines. If you can't disable wrapping 
> just attach the patch as file.
v2 resent with mail.wrap_long_lines;false now (Thunderbird)
attached patchfile too

This patch updates erlang to a more current 16B02 and
hopefully removes RIPEMD160 support.

It's only compile tested - don't know about erlang
I used the commit that added ripemd to erlang as a guideline

https://github.com/erlang/otp/commit/3881407ea8444c280d9659f40e6c169a1e10310d.patch
 add ripemd160 support to crypto

add ripemd160 message digest support to the crypto app,
includes some test cases.

and reverted it accordingly i hope.

notice:
- docs are left untouched
- tests are left untouched

Signed-off-by: Dirk Neukirchen <dirkneukirc...@web.de>

---
diff --git a/lang/erlang/Makefile b/lang/erlang/Makefile
index ddba81c..96d336e 100644
--- a/lang/erlang/Makefile
+++ b/lang/erlang/Makefile
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2009-2012 OpenWrt.org
+# Copyright (C) 2009-2013 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=erlang
-PKG_VERSION:=R15B01
-PKG_RELEASE:=4
+PKG_VERSION:=R16B02
+PKG_RELEASE:=1
 
 PKG_SOURCE:=otp_src_$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:= http://www.erlang.org/download/ \
        http://erlang.mirror.su.se/     
-PKG_MD5SUM:=f12d00f6e62b36ad027d6c0c08905fad
+PKG_MD5SUM:=ca63bcde0e5ae0f2df9457f97b3115a4
 
 PKG_BUILD_DEPENDS:=erlang/host openssl
 
diff --git a/lang/erlang/patches/101-emulator_includes.patch 
b/lang/erlang/patches/101-emulator_includes.patch
index 933c73e..8136e47 100644
--- a/lang/erlang/patches/101-emulator_includes.patch
+++ b/lang/erlang/patches/101-emulator_includes.patch
@@ -1,11 +1,14 @@
 --- a/erts/emulator/Makefile.in
 +++ b/erts/emulator/Makefile.in
-@@ -591,7 +591,7 @@ endif
- 
- 
- $(OBJDIR)/%.o: beam/%.c
--      $(CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
-+      $(CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
- 
+@@ -642,9 +642,9 @@ endif
+ 
+ ifneq ($(filter tile-%,$(TARGET)),)
+ $(OBJDIR)/beam_emu.o: beam/beam_emu.c
+-      $(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) \
++      $(V_CC) $(INCLUDES) \
+          -OPT:Olimit=0 -WOPT:lpre=off:spre=off:epre=off \
+-         $(INCLUDES) -c $< -o $@
++         $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
  else
- 
+ # Usually the same as the default rule, but certain platforms (e.g. win32) mix
+ # different compilers
diff --git a/lang/erlang/patches/104-disable_ripemd.patch 
b/lang/erlang/patches/104-disable_ripemd.patch
new file mode 100644
index 0000000..0995c01
--- /dev/null
+++ b/lang/erlang/patches/104-disable_ripemd.patch
@@ -0,0 +1,191 @@
+--- a/lib/crypto/c_src/crypto.c
++++ b/lib/crypto/c_src/crypto.c
+@@ -44,7 +44,6 @@
+ #include <openssl/md5.h>
+ #include <openssl/md4.h>
+ #include <openssl/sha.h>
+-#include <openssl/ripemd.h>
+ #include <openssl/bn.h>
+ #include <openssl/objects.h>
+ #include <openssl/rc4.h>
+@@ -167,10 +166,6 @@ static ERL_NIF_TERM md5(ErlNifEnv* env,
+ static ERL_NIF_TERM md5_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM 
argv[]);
+ static ERL_NIF_TERM md5_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM 
argv[]);
+ static ERL_NIF_TERM md5_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM 
argv[]);
+-static ERL_NIF_TERM ripemd160(ErlNifEnv* env, int argc, const ERL_NIF_TERM 
argv[]);
+-static ERL_NIF_TERM ripemd160_init(ErlNifEnv* env, int argc, const 
ERL_NIF_TERM argv[]);
+-static ERL_NIF_TERM ripemd160_update(ErlNifEnv* env, int argc, const 
ERL_NIF_TERM argv[]);
+-static ERL_NIF_TERM ripemd160_final(ErlNifEnv* env, int argc, const 
ERL_NIF_TERM argv[]);
+ static ERL_NIF_TERM sha(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+ static ERL_NIF_TERM sha_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM 
argv[]);
+ static ERL_NIF_TERM sha_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM 
argv[]);
+@@ -292,10 +287,6 @@ static ErlNifFunc nif_funcs[] = {
+     {"md5_init", 0, md5_init},
+     {"md5_update", 2, md5_update},
+     {"md5_final", 1, md5_final},
+-    {"ripemd160", 1, ripemd160},
+-    {"ripemd160_init", 0, ripemd160_init},
+-    {"ripemd160_update", 2, ripemd160_update},
+-    {"ripemd160_final", 1, ripemd160_final},
+     {"sha", 1, sha},
+     {"sha_init", 0, sha_init},
+     {"sha_update", 2, sha_update},
+@@ -478,8 +469,6 @@ ERL_NIF_INIT(crypto,nif_funcs,load,NULL,
+ #define MD5_LEN_96      12
+ #define MD4_CTX_LEN     (sizeof(MD4_CTX))
+ #define MD4_LEN         16
+-#define RIPEMD160_CTX_LEN (sizeof(RIPEMD160_CTX))
+-#define RIPEMD160_LEN   20
+ #define SHA_CTX_LEN     (sizeof(SHA_CTX))
+ #define SHA_LEN         20
+ #define SHA_LEN_96      12
+@@ -503,7 +492,6 @@ static ERL_NIF_TERM atom_sha384;
+ static ERL_NIF_TERM atom_sha512;
+ static ERL_NIF_TERM atom_md5;
+ static ERL_NIF_TERM atom_md4;
+-static ERL_NIF_TERM atom_ripemd160;
+ static ERL_NIF_TERM atom_error;
+ static ERL_NIF_TERM atom_rsa_pkcs1_padding;
+ static ERL_NIF_TERM atom_rsa_pkcs1_oaep_padding;
+@@ -595,7 +583,6 @@ static int init(ErlNifEnv* env, ERL_NIF_
+     atom_sha512 = enif_make_atom(env,"sha512");
+     atom_md4 = enif_make_atom(env,"md4");
+     atom_md5 = enif_make_atom(env,"md5");
+-    atom_ripemd160 = enif_make_atom(env,"ripemd160");
+     atom_error = enif_make_atom(env,"error");
+     atom_rsa_pkcs1_padding = enif_make_atom(env,"rsa_pkcs1_padding");
+     atom_rsa_pkcs1_oaep_padding = 
enif_make_atom(env,"rsa_pkcs1_oaep_padding");
+@@ -718,7 +705,6 @@ static void init_algorithms_types(void)
+     algos[algos_cnt++] = atom_md4;
+     algos[algos_cnt++] = atom_md5;
+     algos[algos_cnt++] = atom_sha;
+-    algos[algos_cnt++] = atom_ripemd160;
+ #ifdef HAVE_SHA224
+     algos[algos_cnt++] = atom_sha224;
+ #endif
+@@ -816,55 +802,6 @@ static ERL_NIF_TERM md5_final(ErlNifEnv*
+     return ret;
+ }
+ 
+-static ERL_NIF_TERM ripemd160(ErlNifEnv* env, int argc, const ERL_NIF_TERM 
argv[])
+-{/* (Data) */
+-    ErlNifBinary ibin;
+-    ERL_NIF_TERM ret;
+-
+-    if (!enif_inspect_iolist_as_binary(env, argv[0], &ibin)) {
+-      return enif_make_badarg(env);
+-    }
+-    RIPEMD160((unsigned char *) ibin.data, ibin.size,
+-            enif_make_new_binary(env,RIPEMD160_LEN, &ret));
+-    CONSUME_REDS(env,ibin);
+-    return ret;
+-}
+-static ERL_NIF_TERM ripemd160_init(ErlNifEnv* env, int argc, const 
ERL_NIF_TERM argv[])
+-{/* () */
+-    ERL_NIF_TERM ret;
+-    RIPEMD160_Init((RIPEMD160_CTX *) enif_make_new_binary(env, 
RIPEMD160_CTX_LEN, &ret));
+-    return ret;
+-}
+-static ERL_NIF_TERM ripemd160_update(ErlNifEnv* env, int argc, const 
ERL_NIF_TERM argv[])
+-{/* (Context, Data) */
+-    RIPEMD160_CTX* new_ctx;
+-    ErlNifBinary ctx_bin, data_bin;
+-    ERL_NIF_TERM ret;
+-    if (!enif_inspect_binary(env, argv[0], &ctx_bin)
+-      || ctx_bin.size != RIPEMD160_CTX_LEN
+-      || !enif_inspect_iolist_as_binary(env, argv[1], &data_bin)) {
+-      return enif_make_badarg(env);
+-    }
+-    new_ctx = (RIPEMD160_CTX*) enif_make_new_binary(env,RIPEMD160_CTX_LEN, 
&ret);
+-    memcpy(new_ctx, ctx_bin.data, RIPEMD160_CTX_LEN);
+-    RIPEMD160_Update(new_ctx, data_bin.data, data_bin.size);
+-    CONSUME_REDS(env, data_bin);
+-    return ret;
+-}
+-static ERL_NIF_TERM ripemd160_final(ErlNifEnv* env, int argc, const 
ERL_NIF_TERM argv[])
+-{/* (Context) */
+-    ErlNifBinary ctx_bin;
+-    RIPEMD160_CTX ctx_clone;
+-    ERL_NIF_TERM ret;
+-    if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != 
RIPEMD160_CTX_LEN) {
+-      return enif_make_badarg(env);
+-    }
+-    memcpy(&ctx_clone, ctx_bin.data, RIPEMD160_CTX_LEN); /* writable */
+-    RIPEMD160_Final(enif_make_new_binary(env, RIPEMD160_LEN, &ret), 
&ctx_clone);
+-    return ret;
+-}
+-
+-
+ static ERL_NIF_TERM sha(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
+ {/* (Data) */    
+     ErlNifBinary ibin;
+@@ -1363,7 +1300,6 @@ static ERL_NIF_TERM hmac_init(ErlNifEnv*
+     else if (argv[0] == atom_sha512) md = EVP_sha512();
+ #endif
+     else if (argv[0] == atom_md5) md = EVP_md5();
+-    else if (argv[0] == atom_ripemd160) md = EVP_ripemd160();
+     else goto badarg;
+     
+     if (!enif_inspect_iolist_as_binary(env, argv[1], &key)) {
+--- a/lib/crypto/src/crypto.erl
++++ b/lib/crypto/src/crypto.erl
+@@ -229,13 +229,12 @@ hash(Hash, Data0) ->
+     MaxByts = max_bytes(),
+     hash(Hash, Data, erlang:byte_size(Data), MaxByts, initial).
+ 
+--spec hash_init('md5'|'md4'|'ripemd160'|
++-spec hash_init('md5'|'md4'|
+                 'sha'|'sha224'|'sha256'|'sha384'|'sha512') -> any().
+ 
+ hash_init(md5)       -> {md5, md5_init()};
+ hash_init(md4)       -> {md4, md4_init()};
+ hash_init(sha)       -> {sha, sha_init()};
+-hash_init(ripemd160) -> {ripemd160, ripemd160_init()};
+ hash_init(sha224)    -> {sha224, sha224_init()};
+ hash_init(sha256)    -> {sha256, sha256_init()};
+ hash_init(sha384)    -> {sha384, sha384_init()};
+@@ -253,7 +252,6 @@ hash_update(State, Data0) ->
+ hash_final({md5,Context})       -> md5_final(Context);
+ hash_final({md4,Context})       -> md4_final(Context);
+ hash_final({sha,Context})       -> sha_final(Context);
+-hash_final({ripemd160,Context}) -> ripemd160_final(Context);
+ hash_final({sha224,Context})    -> sha224_final(Context);
+ hash_final({sha256,Context})    -> sha256_final(Context);
+ hash_final({sha384,Context})    -> sha384_final(Context);
+@@ -688,7 +686,6 @@ hash(State0, Data, _Size, MaxByts, conti
+ do_hash(md5, Data)          -> md5(Data);
+ do_hash(md4, Data)          -> md4(Data);
+ do_hash(sha, Data)          -> sha(Data);
+-do_hash(ripemd160, Data)    -> ripemd160(Data);
+ do_hash(sha224, Data)       -> sha224(Data);
+ do_hash(sha256, Data)       -> sha256(Data);
+ do_hash(sha384, Data)       -> sha384(Data);
+@@ -704,7 +701,6 @@ hash_update(State0, Data, _, MaxBytes) -
+ do_hash_update({md5,Context}, Data)       -> {md5, md5_update(Context,Data)};
+ do_hash_update({md4,Context}, Data)       -> {md4, md4_update(Context,Data)};
+ do_hash_update({sha,Context}, Data)       -> {sha, sha_update(Context,Data)};
+-do_hash_update({ripemd160,Context}, Data) -> {ripemd160, 
ripemd160_update(Context,Data)};
+ do_hash_update({sha224,Context}, Data)    -> {sha224, 
sha224_update(Context,Data)};
+ do_hash_update({sha256,Context}, Data)    -> {sha256, 
sha256_update(Context,Data)};
+ do_hash_update({sha384,Context}, Data)    -> {sha384, 
sha384_update(Context,Data)};
+@@ -739,20 +735,6 @@ md4_update(_Context, _Data) -> ?nif_stub
+ md4_final(_Context) -> ?nif_stub.
+ 
+ %%
+-%%  RIPEMD160
+-%%
+-
+--spec ripemd160(iodata()) -> binary().
+--spec ripemd160_init() -> binary().
+--spec ripemd160_update(binary(), iodata()) -> binary().
+--spec ripemd160_final(binary()) -> binary().
+-
+-ripemd160(_Data) -> ?nif_stub.
+-ripemd160_init() -> ?nif_stub.
+-ripemd160_update(_Context, _Data) -> ?nif_stub.
+-ripemd160_final(_Context) -> ?nif_stub.
+-
+-%%
+ %% SHA
+ %%
+ -spec sha(iodata()) -> binary().
---

From cd0b49c665c1c5f8df6401ba51a6262328372c67 Mon Sep 17 00:00:00 2001
From: Dirk Neukirchen <dirkneukirc...@web.de>
Date: Fri, 15 Nov 2013 09:09:05 +0000
Subject: [PATCH] [package] erlang: update and remove RIPEMD

This patch updates erlang to a more current 16B02 and
hopefully removes RIPEMD160 support.

It's only compile tested - don't know about erlang
I used the commit that added ripemd to erlang as a guideline

https://github.com/erlang/otp/commit/3881407ea8444c280d9659f40e6c169a1e10310d.patch
 add ripemd160 support to crypto

add ripemd160 message digest support to the crypto app,
includes some test cases.

and reverted it accordingly i hope.

notice:
- docs are left untouched
- tests are left untouched

Signed-off-by: Dirk Neukirchen <dirkneukirc...@web.de>
---
 lang/erlang/Makefile                            |   8 +-
 lang/erlang/patches/101-emulator_includes.patch |  19 ++-
 lang/erlang/patches/104-disable_ripemd.patch    | 191 ++++++++++++++++++++++++
 3 files changed, 206 insertions(+), 12 deletions(-)
 create mode 100644 lang/erlang/patches/104-disable_ripemd.patch

diff --git a/lang/erlang/Makefile b/lang/erlang/Makefile
index ddba81c..96d336e 100644
--- a/lang/erlang/Makefile
+++ b/lang/erlang/Makefile
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2009-2012 OpenWrt.org
+# Copyright (C) 2009-2013 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=erlang
-PKG_VERSION:=R15B01
-PKG_RELEASE:=4
+PKG_VERSION:=R16B02
+PKG_RELEASE:=1
 
 PKG_SOURCE:=otp_src_$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:= http://www.erlang.org/download/ \
 	http://erlang.mirror.su.se/	
-PKG_MD5SUM:=f12d00f6e62b36ad027d6c0c08905fad
+PKG_MD5SUM:=ca63bcde0e5ae0f2df9457f97b3115a4
 
 PKG_BUILD_DEPENDS:=erlang/host openssl
 
diff --git a/lang/erlang/patches/101-emulator_includes.patch b/lang/erlang/patches/101-emulator_includes.patch
index 933c73e..8136e47 100644
--- a/lang/erlang/patches/101-emulator_includes.patch
+++ b/lang/erlang/patches/101-emulator_includes.patch
@@ -1,11 +1,14 @@
 --- a/erts/emulator/Makefile.in
 +++ b/erts/emulator/Makefile.in
-@@ -591,7 +591,7 @@ endif
- 
- 
- $(OBJDIR)/%.o: beam/%.c
--	$(CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
-+	$(CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
- 
+@@ -642,9 +642,9 @@ endif
+ 
+ ifneq ($(filter tile-%,$(TARGET)),)
+ $(OBJDIR)/beam_emu.o: beam/beam_emu.c
+-	$(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) \
++	$(V_CC) $(INCLUDES) \
+          -OPT:Olimit=0 -WOPT:lpre=off:spre=off:epre=off \
+-         $(INCLUDES) -c $< -o $@
++         $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
  else
- 
+ # Usually the same as the default rule, but certain platforms (e.g. win32) mix
+ # different compilers
diff --git a/lang/erlang/patches/104-disable_ripemd.patch b/lang/erlang/patches/104-disable_ripemd.patch
new file mode 100644
index 0000000..0995c01
--- /dev/null
+++ b/lang/erlang/patches/104-disable_ripemd.patch
@@ -0,0 +1,191 @@
+--- a/lib/crypto/c_src/crypto.c
++++ b/lib/crypto/c_src/crypto.c
+@@ -44,7 +44,6 @@
+ #include <openssl/md5.h>
+ #include <openssl/md4.h>
+ #include <openssl/sha.h>
+-#include <openssl/ripemd.h>
+ #include <openssl/bn.h>
+ #include <openssl/objects.h>
+ #include <openssl/rc4.h>
+@@ -167,10 +166,6 @@ static ERL_NIF_TERM md5(ErlNifEnv* env,
+ static ERL_NIF_TERM md5_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+ static ERL_NIF_TERM md5_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+ static ERL_NIF_TERM md5_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+-static ERL_NIF_TERM ripemd160(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+-static ERL_NIF_TERM ripemd160_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+-static ERL_NIF_TERM ripemd160_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+-static ERL_NIF_TERM ripemd160_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+ static ERL_NIF_TERM sha(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+ static ERL_NIF_TERM sha_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+ static ERL_NIF_TERM sha_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+@@ -292,10 +287,6 @@ static ErlNifFunc nif_funcs[] = {
+     {"md5_init", 0, md5_init},
+     {"md5_update", 2, md5_update},
+     {"md5_final", 1, md5_final},
+-    {"ripemd160", 1, ripemd160},
+-    {"ripemd160_init", 0, ripemd160_init},
+-    {"ripemd160_update", 2, ripemd160_update},
+-    {"ripemd160_final", 1, ripemd160_final},
+     {"sha", 1, sha},
+     {"sha_init", 0, sha_init},
+     {"sha_update", 2, sha_update},
+@@ -478,8 +469,6 @@ ERL_NIF_INIT(crypto,nif_funcs,load,NULL,
+ #define MD5_LEN_96      12
+ #define MD4_CTX_LEN     (sizeof(MD4_CTX))
+ #define MD4_LEN         16
+-#define RIPEMD160_CTX_LEN (sizeof(RIPEMD160_CTX))
+-#define RIPEMD160_LEN   20
+ #define SHA_CTX_LEN     (sizeof(SHA_CTX))
+ #define SHA_LEN         20
+ #define SHA_LEN_96      12
+@@ -503,7 +492,6 @@ static ERL_NIF_TERM atom_sha384;
+ static ERL_NIF_TERM atom_sha512;
+ static ERL_NIF_TERM atom_md5;
+ static ERL_NIF_TERM atom_md4;
+-static ERL_NIF_TERM atom_ripemd160;
+ static ERL_NIF_TERM atom_error;
+ static ERL_NIF_TERM atom_rsa_pkcs1_padding;
+ static ERL_NIF_TERM atom_rsa_pkcs1_oaep_padding;
+@@ -595,7 +583,6 @@ static int init(ErlNifEnv* env, ERL_NIF_
+     atom_sha512 = enif_make_atom(env,"sha512");
+     atom_md4 = enif_make_atom(env,"md4");
+     atom_md5 = enif_make_atom(env,"md5");
+-    atom_ripemd160 = enif_make_atom(env,"ripemd160");
+     atom_error = enif_make_atom(env,"error");
+     atom_rsa_pkcs1_padding = enif_make_atom(env,"rsa_pkcs1_padding");
+     atom_rsa_pkcs1_oaep_padding = enif_make_atom(env,"rsa_pkcs1_oaep_padding");
+@@ -718,7 +705,6 @@ static void init_algorithms_types(void)
+     algos[algos_cnt++] = atom_md4;
+     algos[algos_cnt++] = atom_md5;
+     algos[algos_cnt++] = atom_sha;
+-    algos[algos_cnt++] = atom_ripemd160;
+ #ifdef HAVE_SHA224
+     algos[algos_cnt++] = atom_sha224;
+ #endif
+@@ -816,55 +802,6 @@ static ERL_NIF_TERM md5_final(ErlNifEnv*
+     return ret;
+ }
+ 
+-static ERL_NIF_TERM ripemd160(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
+-{/* (Data) */
+-    ErlNifBinary ibin;
+-    ERL_NIF_TERM ret;
+-
+-    if (!enif_inspect_iolist_as_binary(env, argv[0], &ibin)) {
+-	return enif_make_badarg(env);
+-    }
+-    RIPEMD160((unsigned char *) ibin.data, ibin.size,
+-	      enif_make_new_binary(env,RIPEMD160_LEN, &ret));
+-    CONSUME_REDS(env,ibin);
+-    return ret;
+-}
+-static ERL_NIF_TERM ripemd160_init(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
+-{/* () */
+-    ERL_NIF_TERM ret;
+-    RIPEMD160_Init((RIPEMD160_CTX *) enif_make_new_binary(env, RIPEMD160_CTX_LEN, &ret));
+-    return ret;
+-}
+-static ERL_NIF_TERM ripemd160_update(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
+-{/* (Context, Data) */
+-    RIPEMD160_CTX* new_ctx;
+-    ErlNifBinary ctx_bin, data_bin;
+-    ERL_NIF_TERM ret;
+-    if (!enif_inspect_binary(env, argv[0], &ctx_bin)
+-	|| ctx_bin.size != RIPEMD160_CTX_LEN
+-	|| !enif_inspect_iolist_as_binary(env, argv[1], &data_bin)) {
+-	return enif_make_badarg(env);
+-    }
+-    new_ctx = (RIPEMD160_CTX*) enif_make_new_binary(env,RIPEMD160_CTX_LEN, &ret);
+-    memcpy(new_ctx, ctx_bin.data, RIPEMD160_CTX_LEN);
+-    RIPEMD160_Update(new_ctx, data_bin.data, data_bin.size);
+-    CONSUME_REDS(env, data_bin);
+-    return ret;
+-}
+-static ERL_NIF_TERM ripemd160_final(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
+-{/* (Context) */
+-    ErlNifBinary ctx_bin;
+-    RIPEMD160_CTX ctx_clone;
+-    ERL_NIF_TERM ret;
+-    if (!enif_inspect_binary(env, argv[0], &ctx_bin) || ctx_bin.size != RIPEMD160_CTX_LEN) {
+-	return enif_make_badarg(env);
+-    }
+-    memcpy(&ctx_clone, ctx_bin.data, RIPEMD160_CTX_LEN); /* writable */
+-    RIPEMD160_Final(enif_make_new_binary(env, RIPEMD160_LEN, &ret), &ctx_clone);
+-    return ret;
+-}
+-
+-
+ static ERL_NIF_TERM sha(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
+ {/* (Data) */    
+     ErlNifBinary ibin;
+@@ -1363,7 +1300,6 @@ static ERL_NIF_TERM hmac_init(ErlNifEnv*
+     else if (argv[0] == atom_sha512) md = EVP_sha512();
+ #endif
+     else if (argv[0] == atom_md5) md = EVP_md5();
+-    else if (argv[0] == atom_ripemd160) md = EVP_ripemd160();
+     else goto badarg;
+     
+     if (!enif_inspect_iolist_as_binary(env, argv[1], &key)) {
+--- a/lib/crypto/src/crypto.erl
++++ b/lib/crypto/src/crypto.erl
+@@ -229,13 +229,12 @@ hash(Hash, Data0) ->
+     MaxByts = max_bytes(),
+     hash(Hash, Data, erlang:byte_size(Data), MaxByts, initial).
+ 
+--spec hash_init('md5'|'md4'|'ripemd160'|
++-spec hash_init('md5'|'md4'|
+                 'sha'|'sha224'|'sha256'|'sha384'|'sha512') -> any().
+ 
+ hash_init(md5)       -> {md5, md5_init()};
+ hash_init(md4)       -> {md4, md4_init()};
+ hash_init(sha)       -> {sha, sha_init()};
+-hash_init(ripemd160) -> {ripemd160, ripemd160_init()};
+ hash_init(sha224)    -> {sha224, sha224_init()};
+ hash_init(sha256)    -> {sha256, sha256_init()};
+ hash_init(sha384)    -> {sha384, sha384_init()};
+@@ -253,7 +252,6 @@ hash_update(State, Data0) ->
+ hash_final({md5,Context})       -> md5_final(Context);
+ hash_final({md4,Context})       -> md4_final(Context);
+ hash_final({sha,Context})       -> sha_final(Context);
+-hash_final({ripemd160,Context}) -> ripemd160_final(Context);
+ hash_final({sha224,Context})    -> sha224_final(Context);
+ hash_final({sha256,Context})    -> sha256_final(Context);
+ hash_final({sha384,Context})    -> sha384_final(Context);
+@@ -688,7 +686,6 @@ hash(State0, Data, _Size, MaxByts, conti
+ do_hash(md5, Data)          -> md5(Data);
+ do_hash(md4, Data)          -> md4(Data);
+ do_hash(sha, Data)          -> sha(Data);
+-do_hash(ripemd160, Data)    -> ripemd160(Data);
+ do_hash(sha224, Data)       -> sha224(Data);
+ do_hash(sha256, Data)       -> sha256(Data);
+ do_hash(sha384, Data)       -> sha384(Data);
+@@ -704,7 +701,6 @@ hash_update(State0, Data, _, MaxBytes) -
+ do_hash_update({md5,Context}, Data)       -> {md5, md5_update(Context,Data)};
+ do_hash_update({md4,Context}, Data)       -> {md4, md4_update(Context,Data)};
+ do_hash_update({sha,Context}, Data)       -> {sha, sha_update(Context,Data)};
+-do_hash_update({ripemd160,Context}, Data) -> {ripemd160, ripemd160_update(Context,Data)};
+ do_hash_update({sha224,Context}, Data)    -> {sha224, sha224_update(Context,Data)};
+ do_hash_update({sha256,Context}, Data)    -> {sha256, sha256_update(Context,Data)};
+ do_hash_update({sha384,Context}, Data)    -> {sha384, sha384_update(Context,Data)};
+@@ -739,20 +735,6 @@ md4_update(_Context, _Data) -> ?nif_stub
+ md4_final(_Context) -> ?nif_stub.
+ 
+ %%
+-%%  RIPEMD160
+-%%
+-
+--spec ripemd160(iodata()) -> binary().
+--spec ripemd160_init() -> binary().
+--spec ripemd160_update(binary(), iodata()) -> binary().
+--spec ripemd160_final(binary()) -> binary().
+-
+-ripemd160(_Data) -> ?nif_stub.
+-ripemd160_init() -> ?nif_stub.
+-ripemd160_update(_Context, _Data) -> ?nif_stub.
+-ripemd160_final(_Context) -> ?nif_stub.
+-
+-%%
+ %% SHA
+ %%
+ -spec sha(iodata()) -> binary().
-- 
1.8.4.3

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to