diff options
| author | J08nY | 2017-08-31 22:56:20 +0200 |
|---|---|---|
| committer | J08nY | 2017-08-31 22:56:20 +0200 |
| commit | 964395cd920883645a3f065a0fcf6785b9a85acc (patch) | |
| tree | 70a1ad354985b29b60f6032f3d6616796e58b652 /src/util | |
| parent | f68be0c29ca6871f4ea1e3a9ecb294bf54e1fd89 (diff) | |
| download | ecgen-964395cd920883645a3f065a0fcf6785b9a85acc.tar.gz ecgen-964395cd920883645a3f065a0fcf6785b9a85acc.tar.zst ecgen-964395cd920883645a3f065a0fcf6785b9a85acc.zip | |
Fix hashing of ANSI X9.62 seed.
Diffstat (limited to 'src/util')
| -rw-r--r-- | src/util/binascii.c | 8 | ||||
| -rw-r--r-- | src/util/binascii.h | 4 | ||||
| -rw-r--r-- | src/util/memory.c | 15 | ||||
| -rw-r--r-- | src/util/memory.h | 15 |
4 files changed, 34 insertions, 8 deletions
diff --git a/src/util/binascii.c b/src/util/binascii.c index ae3f1ff..bbc8e89 100644 --- a/src/util/binascii.c +++ b/src/util/binascii.c @@ -12,23 +12,23 @@ size_t binascii_blen(GEN i) { return result; } -char *binascii_itob(GEN i, endian_e endianity) { +unsigned char *binascii_itob(GEN i, endian_e endianity) { pari_sp ltop = avma; GEN digits = binary_2k_nv(i, 8); if (endianity == ENDIAN_LITTLE) { digits = vecsmall_reverse(digits); } long blen = glength(digits); - char *result = try_malloc((size_t)blen); + unsigned char *result = try_malloc((size_t)blen); for (long j = 1; j <= blen; ++j) { - result[j - 1] = (char)gel(digits, j); + result[j - 1] = (unsigned char)gel(digits, j); } avma = ltop; return result; } -GEN binascii_btoi(const char *bytes, size_t len, endian_e endianity) { +GEN binascii_btoi(const unsigned char *bytes, size_t len, endian_e endianity) { pari_sp ltop = avma; GEN result = gen_0; for (size_t i = 0; i < len; ++i) { diff --git a/src/util/binascii.h b/src/util/binascii.h index 3826a6a..a6301ef 100644 --- a/src/util/binascii.h +++ b/src/util/binascii.h @@ -21,7 +21,7 @@ size_t binascii_blen(GEN i); * @param endianity * @return */ -char *binascii_itob(GEN i, endian_e endianity); +unsigned char *binascii_itob(GEN i, endian_e endianity); /** * @brief @@ -29,6 +29,6 @@ char *binascii_itob(GEN i, endian_e endianity); * @param endianity * @return */ -GEN binascii_btoi(const char *bytes, size_t len, endian_e endianity); +GEN binascii_btoi(const unsigned char *bytes, size_t len, endian_e endianity); #endif // ECGEN_BINASCII_H diff --git a/src/util/memory.c b/src/util/memory.c index b506011..172a30c 100644 --- a/src/util/memory.c +++ b/src/util/memory.c @@ -35,11 +35,22 @@ void *try_realloc(void *ptr, size_t size) { return result; } +char *try_strdup(char *str) { + size_t len = strlen(str); + return try_memdup(str, len + 1); +} + +void *try_memdup(void *mem, size_t len) { + void *result = try_malloc(len); + memcpy(result, mem, len); + return result; +} + void try_free(void *ptr) { free_func(ptr); } void set_mem_funcs(void *(*malloc_fun)(size_t), void *(*calloc_fun)(size_t), - void *(*realloc_fun)(void *, size_t), - void (*free_fun)(void *)) { + void *(*realloc_fun)(void *, size_t), + void (*free_fun)(void *)) { malloc_func = malloc_fun; calloc_func = calloc_fun; realloc_func = realloc_fun; diff --git a/src/util/memory.h b/src/util/memory.h index 408052f..a7ea54a 100644 --- a/src/util/memory.h +++ b/src/util/memory.h @@ -34,6 +34,21 @@ void *try_realloc(void *ptr, size_t size); /** * @brief + * @param str + * @return + */ +char *try_strdup(char *str); + +/** + * @brief + * @param mem + * @param len + * @return + */ +void *try_memdup(void *mem, size_t len); + +/** + * @brief * @param ptr */ void try_free(void *ptr); |
