From 793165116b81314fc4d956fc6a8bb77adaf49e2c Mon Sep 17 00:00:00 2001 From: "Kim, Hyunseong" Date: Mon, 12 Aug 2024 12:06:38 +0900 Subject: [PATCH 1/2] Modified zero string output --- bn.c | 17 +++++++++++++---- bn.h | 6 +++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/bn.c b/bn.c index 6526ea7..3dbe2e5 100644 --- a/bn.c +++ b/bn.c @@ -147,12 +147,21 @@ void bignum_to_string(struct bn* n, char* str, int nbytes) j += 1; } - /* Move string j places ahead, effectively skipping leading zeros */ - for (i = 0; i < (nbytes - j); ++i) + /* Detect whether bignum is zero or not */ + if (j == 2*BIG_NUM_BYTES) { - str[i] = str[i + j]; + str[0] = '0'; + str[1] = 0; } - + else + { + /* Move string j places ahead, effectively skipping leading zeros */ + for (i = 0; i < (nbytes - j); ++i) + { + str[i] = str[i + j]; + } + } + /* Zero-terminate string */ str[i] = 0; } diff --git a/bn.h b/bn.h index 940ffe7..6fd4872 100644 --- a/bn.h +++ b/bn.h @@ -29,8 +29,12 @@ There may well be room for performance-optimizations and improvements. #define WORD_SIZE 4 #endif +#ifndef BIG_NUM_BYTES + #define BIG_NUM_BYTES 128 +#endif + /* Size of big-numbers in bytes */ -#define BN_ARRAY_SIZE (128 / WORD_SIZE) +#define BN_ARRAY_SIZE (BIG_NUM_BYTES / WORD_SIZE) /* Here comes the compile-time specialization for how large the underlying array size should be. */ From b631a4061a8659d63f6cafe695ad519e23633f85 Mon Sep 17 00:00:00 2001 From: "Kim, Hyunseong" Date: Mon, 12 Aug 2024 12:20:26 +0900 Subject: [PATCH 2/2] Update bn.c --- bn.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bn.c b/bn.c index 3dbe2e5..2c204cb 100644 --- a/bn.c +++ b/bn.c @@ -160,10 +160,9 @@ void bignum_to_string(struct bn* n, char* str, int nbytes) { str[i] = str[i + j]; } + /* Zero-terminate string */ + str[i] = 0; } - - /* Zero-terminate string */ - str[i] = 0; }