aboutsummaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorJ08nY2017-08-31 22:56:20 +0200
committerJ08nY2017-08-31 22:56:20 +0200
commit964395cd920883645a3f065a0fcf6785b9a85acc (patch)
tree70a1ad354985b29b60f6032f3d6616796e58b652 /src/util
parentf68be0c29ca6871f4ea1e3a9ecb294bf54e1fd89 (diff)
downloadecgen-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.c8
-rw-r--r--src/util/binascii.h4
-rw-r--r--src/util/memory.c15
-rw-r--r--src/util/memory.h15
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);