From cebfb0c3535175bbc6a9d307773a3d0d37edc706 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 12 Jan 2016 06:13:00 -0300 Subject: [PATCH] md2, md4 --- crypto777/OS_portable.h | 2 ++ crypto777/iguana_utils.c | 16 ++++++++++++++++ iguana/main.c | 13 +++++++------ 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/crypto777/OS_portable.h b/crypto777/OS_portable.h index 4f7a632bc..957dfe108 100755 --- a/crypto777/OS_portable.h +++ b/crypto777/OS_portable.h @@ -239,6 +239,8 @@ int32_t RS_encode(char *rsaddr,uint64_t id); void calc_sha1(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len); void calc_md2(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len); void calc_md4(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len); +void calc_md4str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len); +void calc_md2str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len); void calc_md5str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len); void calc_sha224(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len); void calc_sha384(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len); diff --git a/crypto777/iguana_utils.c b/crypto777/iguana_utils.c index 2b6dd9427..57a954b87 100755 --- a/crypto777/iguana_utils.c +++ b/crypto777/iguana_utils.c @@ -791,6 +791,22 @@ void rmd160ofsha256(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len) calc_rmd160(hexstr,buf,sha256,sizeof(sha256)); } +void calc_md2str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len) +{ + bits128 x; + calc_md2(hexstr,buf,msg,len); + decode_hex(buf,sizeof(x),hexstr); + memcpy(buf,x.bytes,sizeof(x)); +} + +void calc_md4str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len) +{ + bits128 x; + calc_md4(hexstr,buf,msg,len); + decode_hex(buf,sizeof(x),hexstr); + memcpy(buf,x.bytes,sizeof(x)); +} + void calc_md5str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len) { bits128 x; diff --git a/iguana/main.c b/iguana/main.c index 477f584a3..07165e5d2 100644 --- a/iguana/main.c +++ b/iguana/main.c @@ -48,11 +48,12 @@ char *hash_parser(struct supernet_info *myinfo,char *hashname,cJSON *json,char * typedef char *(*hmacfunc)(char *dest,char *key,int32_t key_size,char *message); struct hashfunc_entry { char *name; hashfunc hashfunc; }; struct hmacfunc_entry { char *name; hmacfunc hmacfunc; }; - struct hashfunc_entry hashes[] = { {"NXT",calc_NXTaddr}, {"curve25519",calc_curve25519_str }, {"base64_encode",calc_base64_encodestr}, {"base64_decode",calc_base64_decodestr}, {"crc32",calc_crc32str}, {"rmd160_sha256",rmd160ofsha256}, {"sha256_sha256",sha256_sha256}, {"sha256",vcalc_sha256}, {"sha512",calc_sha512}, {"sha384",calc_sha384}, {"sha224",calc_sha224}, {"rmd160",calc_rmd160}, {"rmd256",calc_rmd256}, {"rmd320",calc_rmd320}, {"rmd128",calc_rmd128}, {"sha1",calc_sha1}, {"md5",calc_md5str}, {"tiger",calc_tiger}, {"whirlpool",calc_whirlpool} }; - struct hmacfunc_entry hmacs[] = { {"hmac_sha256",hmac_sha256_str}, {"hmac_sha512",hmac_sha512_str}, {"hmac_sha384",hmac_sha384_str}, {"hmac_sha224",hmac_sha224_str}, {"hmac_rmd160",hmac_rmd160_str}, {"hmac_rmd256",hmac_rmd256_str}, {"hmac_rmd320",hmac_rmd320_str}, {"hmac_rmd128",hmac_rmd128_str}, {"hmac_sha1",hmac_sha1_str}, {"hmac_md5",hmac_md5_str}, {"hmac_tiger",hmac_tiger_str}, {"hmac_whirlpool",hmac_whirlpool_str} }; + struct hashfunc_entry hashes[] = { {"NXT",calc_NXTaddr}, {"curve25519",calc_curve25519_str }, {"base64_encode",calc_base64_encodestr}, {"base64_decode",calc_base64_decodestr}, {"crc32",calc_crc32str}, {"rmd160_sha256",rmd160ofsha256}, {"sha256_sha256",sha256_sha256}, {"sha256",vcalc_sha256}, {"sha512",calc_sha512}, {"sha384",calc_sha384}, {"sha224",calc_sha224}, {"rmd160",calc_rmd160}, {"rmd256",calc_rmd256}, {"rmd320",calc_rmd320}, {"rmd128",calc_rmd128}, {"sha1",calc_sha1}, {"md5",calc_md5str}, {"md2",calc_md2str}, {"md4",calc_md4str}, {"tiger",calc_tiger}, {"whirlpool",calc_whirlpool} }; + struct hmacfunc_entry hmacs[] = { {"hmac_sha256",hmac_sha256_str}, {"hmac_sha512",hmac_sha512_str}, {"hmac_sha384",hmac_sha384_str}, {"hmac_sha224",hmac_sha224_str}, {"hmac_rmd160",hmac_rmd160_str}, {"hmac_rmd256",hmac_rmd256_str}, {"hmac_rmd320",hmac_rmd320_str}, {"hmac_rmd128",hmac_rmd128_str}, {"hmac_sha1",hmac_sha1_str}, {"hmac_md52",hmac_md2_str},{"hmac_md4",hmac_md4_str},{"hmac_md5",hmac_md5_str}, {"hmac_tiger",hmac_tiger_str}, {"hmac_whirlpool",hmac_whirlpool_str} }; if ( (msg= jstr(json,"message")) == 0 ) return(clonestr("{\"error\":\"no message to hash\"}")); - password = jstr(json,"password"); + if ( (password= jstr(json,"password")) == 0 || password[0] == 0 ) + password = " "; n = (int32_t)sizeof(hashes)/sizeof(*hashes); printf("msg.(%s) password.(%s)\n",msg,password!=0?password:""); for (iter=0; iter<2; iter++) @@ -60,14 +61,14 @@ char *hash_parser(struct supernet_info *myinfo,char *hashname,cJSON *json,char * for (i=0; i