Skip to content

Commit e964047

Browse files
committed
keccak256: do not use libgmp in prefixed encoding function
1 parent 60a767d commit e964047

File tree

2 files changed

+8
-15
lines changed

2 files changed

+8
-15
lines changed

src/keccak256.c

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include <KeccakHash.h>
22
#include <ethc/keccak256.h>
33
#include <stdlib.h>
4-
#include <gmp.h>
4+
#include <stdio.h>
55

66
#define KECCAK256_RATE 1088
77
#define KECCAK256_CAPACITY 512
@@ -26,22 +26,16 @@ int eth_keccak256(uint8_t *dest, const uint8_t *bytes, size_t len) {
2626
}
2727

2828
int eth_keccak256p(uint8_t *dest, const uint8_t *bytes, size_t len) {
29-
int size, r;
30-
char *sig, *tmp;
29+
char sig[len + 32];
30+
int size;
3131

3232
if (dest == NULL || bytes == NULL)
3333
return -1;
3434

35-
size = gmp_asprintf(&sig, "\x19" "Ethereum Signed Message:\n%llu", len);
36-
tmp = realloc(sig, size + len);
37-
if(tmp == NULL) {
38-
free(sig);
39-
return -1;
40-
}
41-
sig = tmp;
35+
size = snprintf(sig, sizeof(sig), "\x19" "Ethereum Signed Message:\n%zu", len);
36+
37+
memcpy(sig + size, (char*)bytes, len);
38+
size += len;
4239

43-
strncpy(sig + size, (char*)bytes, len);
44-
r = eth_keccak256(dest, (uint8_t*)sig, size + len);
45-
free(sig);
46-
return r;
40+
return eth_keccak256(dest, (uint8_t*)sig, size);
4741
}

src/unit.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#include <gmp.h>
21
#include <ethc/unit.h>
32
#include <ethc/unit.h>
43
#include <string.h>

0 commit comments

Comments
 (0)