summaryrefslogtreecommitdiff
path: root/patches/wownero
diff options
context:
space:
mode:
authorCzarek Nakamoto <cyjan@mrcyjanek.net>2024-04-25 10:07:36 +0200
committerCzarek Nakamoto <cyjan@mrcyjanek.net>2024-04-25 10:07:36 +0200
commitb7eab542df8e5be2cdc2180dba2dfedc66f07a14 (patch)
tree37152f7641bdfc65e5ca3d4916d4e290a21fa31a /patches/wownero
parent35aed1976f9927facb1f611fb5a7db5936eaf1b4 (diff)
wownero-seed support
Diffstat (limited to 'patches/wownero')
-rw-r--r--patches/wownero/0010-build-wownero-seed.patch327
1 files changed, 327 insertions, 0 deletions
diff --git a/patches/wownero/0010-build-wownero-seed.patch b/patches/wownero/0010-build-wownero-seed.patch
new file mode 100644
index 0000000..9bdd18d
--- /dev/null
+++ b/patches/wownero/0010-build-wownero-seed.patch
@@ -0,0 +1,327 @@
+From 918eaf1bdabb003ba1d2857ecd564c76cf440c19 Mon Sep 17 00:00:00 2001
+From: Czarek Nakamoto <cyjan@mrcyjanek.net>
+Date: Thu, 25 Apr 2024 10:06:04 +0200
+Subject: [PATCH] build wownero-seed
+
+---
+ contrib/depends/packages/wownero_seed.mk | 27 ++
+ .../0001-fix-duplicate-symbol-error.patch | 273 ++++++++++++++++++
+ 2 files changed, 300 insertions(+)
+ create mode 100644 contrib/depends/packages/wownero_seed.mk
+ create mode 100644 contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch
+
+diff --git a/contrib/depends/packages/wownero_seed.mk b/contrib/depends/packages/wownero_seed.mk
+new file mode 100644
+index 000000000..2747b8c65
+--- /dev/null
++++ b/contrib/depends/packages/wownero_seed.mk
+@@ -0,0 +1,27 @@
++package=wownero_seed
++$(package)_version=0.3.0
++$(package)_download_path=https://github.com/MrCyjaneK/wownero-seed/archive/
++$(package)_download_file=d3f68be347facfeebbd8f68fd74982c705cb917b.tar.gz
++$(package)_file_name=$(package)-$($(package)_version).tar.gz
++$(package)_sha256_hash=3b59ccde08e0fee204680240af4b270a18a677aa0e6036a3504570193d232406
++# $(package)_patches=
++
++define $(package)_preprocess_cmds
++ patch -p1 < $($(package)_patch_dir)/0001-fix-duplicate-symbol-error.patch
++endef
++
++define $(package)_config_cmds
++ CC="$($(package)_cc)" cmake -DCMAKE_INSTALL_PREFIX="$(host_prefix)" .
++endef
++
++define $(package)_set_vars
++ $(package)_build_opts=CC="$($(package)_cc)"
++endef
++
++define $(package)_build_cmds
++ CC="$($(package)_cc)" $(MAKE)
++endef
++
++define $(package)_stage_cmds
++ $(MAKE) DESTDIR=$($(package)_staging_dir) install
++endef
+diff --git a/contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch b/contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch
+new file mode 100644
+index 000000000..810a65f38
+--- /dev/null
++++ b/contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch
+@@ -0,0 +1,273 @@
++From b95535acbb18895a9d9894e64815cfca460ab95c Mon Sep 17 00:00:00 2001
++From: Czarek Nakamoto <cyjan@mrcyjanek.net>
++Date: Thu, 25 Apr 2024 09:37:37 +0200
++Subject: [PATCH] fix duplicate symbol error
++
++---
++ src/argon2/blake2/blake2.h | 12 +++++-----
++ src/argon2/blake2/blake2b.c | 46 ++++++++++++++++++-------------------
++ src/argon2/core.c | 32 +++++++++++++-------------
++ 3 files changed, 45 insertions(+), 45 deletions(-)
++
++diff --git a/src/argon2/blake2/blake2.h b/src/argon2/blake2/blake2.h
++index 9f97e1c..25b445d 100644
++--- a/src/argon2/blake2/blake2.h
+++++ b/src/argon2/blake2/blake2.h
++@@ -67,15 +67,15 @@ enum {
++ };
++
++ /* Streaming API */
++-ARGON2_LOCAL int blake2b_init(blake2b_state *S, size_t outlen);
++-ARGON2_LOCAL int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key,
+++ARGON2_LOCAL int blake2b_init_wowseed(blake2b_state *S, size_t outlen);
+++ARGON2_LOCAL int blake2b_init_key_wowseed(blake2b_state *S, size_t outlen, const void *key,
++ size_t keylen);
++-ARGON2_LOCAL int blake2b_init_param(blake2b_state *S, const blake2b_param *P);
++-ARGON2_LOCAL int blake2b_update(blake2b_state *S, const void *in, size_t inlen);
++-ARGON2_LOCAL int blake2b_final(blake2b_state *S, void *out, size_t outlen);
+++ARGON2_LOCAL int blake2b_init_param_wowseed(blake2b_state *S, const blake2b_param *P);
+++ARGON2_LOCAL int blake2b_update_wowseed(blake2b_state *S, const void *in, size_t inlen);
+++ARGON2_LOCAL int blake2b_final_wowseed(blake2b_state *S, void *out, size_t outlen);
++
++ /* Simple API */
++-ARGON2_LOCAL int blake2b(void *out, size_t outlen, const void *in, size_t inlen,
+++ARGON2_LOCAL int blake2b_wowseed(void *out, size_t outlen, const void *in, size_t inlen,
++ const void *key, size_t keylen);
++
++ /* Argon2 Team - Begin Code */
++diff --git a/src/argon2/blake2/blake2b.c b/src/argon2/blake2/blake2b.c
++index ca05df5..8138b86 100644
++--- a/src/argon2/blake2/blake2b.c
+++++ b/src/argon2/blake2/blake2b.c
++@@ -70,7 +70,7 @@ static BLAKE2_INLINE void blake2b_init0(blake2b_state *S) {
++ memcpy(S->h, blake2b_IV, sizeof(S->h));
++ }
++
++-int blake2b_init_param(blake2b_state *S, const blake2b_param *P) {
+++int blake2b_init_param_wowseed(blake2b_state *S, const blake2b_param *P) {
++ const unsigned char *p = (const unsigned char *)P;
++ unsigned int i;
++
++@@ -88,7 +88,7 @@ int blake2b_init_param(blake2b_state *S, const blake2b_param *P) {
++ }
++
++ /* Sequential blake2b initialization */
++-int blake2b_init(blake2b_state *S, size_t outlen) {
+++int blake2b_init_wowseed(blake2b_state *S, size_t outlen) {
++ blake2b_param P;
++
++ if (S == NULL) {
++@@ -113,10 +113,10 @@ int blake2b_init(blake2b_state *S, size_t outlen) {
++ memset(P.salt, 0, sizeof(P.salt));
++ memset(P.personal, 0, sizeof(P.personal));
++
++- return blake2b_init_param(S, &P);
+++ return blake2b_init_param_wowseed(S, &P);
++ }
++
++-int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key,
+++int blake2b_init_key_wowseed(blake2b_state *S, size_t outlen, const void *key,
++ size_t keylen) {
++ blake2b_param P;
++
++@@ -147,7 +147,7 @@ int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key,
++ memset(P.salt, 0, sizeof(P.salt));
++ memset(P.personal, 0, sizeof(P.personal));
++
++- if (blake2b_init_param(S, &P) < 0) {
+++ if (blake2b_init_param_wowseed(S, &P) < 0) {
++ blake2b_invalidate_state(S);
++ return -1;
++ }
++@@ -156,7 +156,7 @@ int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key,
++ uint8_t block[BLAKE2B_BLOCKBYTES];
++ memset(block, 0, BLAKE2B_BLOCKBYTES);
++ memcpy(block, key, keylen);
++- blake2b_update(S, block, BLAKE2B_BLOCKBYTES);
+++ blake2b_update_wowseed(S, block, BLAKE2B_BLOCKBYTES);
++ /* Burn the key from stack */
++ clear_internal_memory(block, BLAKE2B_BLOCKBYTES);
++ }
++@@ -221,7 +221,7 @@ static void blake2b_compress(blake2b_state *S, const uint8_t *block) {
++ #undef ROUND
++ }
++
++-int blake2b_update(blake2b_state *S, const void *in, size_t inlen) {
+++int blake2b_update_wowseed(blake2b_state *S, const void *in, size_t inlen) {
++ const uint8_t *pin = (const uint8_t *)in;
++
++ if (inlen == 0) {
++@@ -261,7 +261,7 @@ int blake2b_update(blake2b_state *S, const void *in, size_t inlen) {
++ return 0;
++ }
++
++-int blake2b_final(blake2b_state *S, void *out, size_t outlen) {
+++int blake2b_final_wowseed(blake2b_state *S, void *out, size_t outlen) {
++ uint8_t buffer[BLAKE2B_OUTBYTES] = {0};
++ unsigned int i;
++
++@@ -291,7 +291,7 @@ int blake2b_final(blake2b_state *S, void *out, size_t outlen) {
++ return 0;
++ }
++
++-int blake2b(void *out, size_t outlen, const void *in, size_t inlen,
+++int blake2b_wowseed(void *out, size_t outlen, const void *in, size_t inlen,
++ const void *key, size_t keylen) {
++ blake2b_state S;
++ int ret = -1;
++@@ -310,19 +310,19 @@ int blake2b(void *out, size_t outlen, const void *in, size_t inlen,
++ }
++
++ if (keylen > 0) {
++- if (blake2b_init_key(&S, outlen, key, keylen) < 0) {
+++ if (blake2b_init_key_wowseed(&S, outlen, key, keylen) < 0) {
++ goto fail;
++ }
++ } else {
++- if (blake2b_init(&S, outlen) < 0) {
+++ if (blake2b_init_wowseed(&S, outlen) < 0) {
++ goto fail;
++ }
++ }
++
++- if (blake2b_update(&S, in, inlen) < 0) {
+++ if (blake2b_update_wowseed(&S, in, inlen) < 0) {
++ goto fail;
++ }
++- ret = blake2b_final(&S, out, outlen);
+++ ret = blake2b_final_wowseed(&S, out, outlen);
++
++ fail:
++ clear_internal_memory(&S, sizeof(S));
++@@ -352,25 +352,25 @@ int blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen) {
++ } while ((void)0, 0)
++
++ if (outlen <= BLAKE2B_OUTBYTES) {
++- TRY(blake2b_init(&blake_state, outlen));
++- TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes)));
++- TRY(blake2b_update(&blake_state, in, inlen));
++- TRY(blake2b_final(&blake_state, out, outlen));
+++ TRY(blake2b_init_wowseed(&blake_state, outlen));
+++ TRY(blake2b_update_wowseed(&blake_state, outlen_bytes, sizeof(outlen_bytes)));
+++ TRY(blake2b_update_wowseed(&blake_state, in, inlen));
+++ TRY(blake2b_final_wowseed(&blake_state, out, outlen));
++ } else {
++ uint32_t toproduce;
++ uint8_t out_buffer[BLAKE2B_OUTBYTES];
++ uint8_t in_buffer[BLAKE2B_OUTBYTES];
++- TRY(blake2b_init(&blake_state, BLAKE2B_OUTBYTES));
++- TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes)));
++- TRY(blake2b_update(&blake_state, in, inlen));
++- TRY(blake2b_final(&blake_state, out_buffer, BLAKE2B_OUTBYTES));
+++ TRY(blake2b_init_wowseed(&blake_state, BLAKE2B_OUTBYTES));
+++ TRY(blake2b_update_wowseed(&blake_state, outlen_bytes, sizeof(outlen_bytes)));
+++ TRY(blake2b_update_wowseed(&blake_state, in, inlen));
+++ TRY(blake2b_final_wowseed(&blake_state, out_buffer, BLAKE2B_OUTBYTES));
++ memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2);
++ out += BLAKE2B_OUTBYTES / 2;
++ toproduce = (uint32_t)outlen - BLAKE2B_OUTBYTES / 2;
++
++ while (toproduce > BLAKE2B_OUTBYTES) {
++ memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES);
++- TRY(blake2b(out_buffer, BLAKE2B_OUTBYTES, in_buffer,
+++ TRY(blake2b_wowseed(out_buffer, BLAKE2B_OUTBYTES, in_buffer,
++ BLAKE2B_OUTBYTES, NULL, 0));
++ memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2);
++ out += BLAKE2B_OUTBYTES / 2;
++@@ -378,7 +378,7 @@ int blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen) {
++ }
++
++ memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES);
++- TRY(blake2b(out_buffer, toproduce, in_buffer, BLAKE2B_OUTBYTES, NULL,
+++ TRY(blake2b_wowseed(out_buffer, toproduce, in_buffer, BLAKE2B_OUTBYTES, NULL,
++ 0));
++ memcpy(out, out_buffer, toproduce);
++ }
++diff --git a/src/argon2/core.c b/src/argon2/core.c
++index 5eafe08..f59db34 100644
++--- a/src/argon2/core.c
+++++ b/src/argon2/core.c
++@@ -439,31 +439,31 @@ void initial_hash(uint8_t *blockhash, argon2_context *context,
++ return;
++ }
++
++- blake2b_init(&BlakeHash, ARGON2_PREHASH_DIGEST_LENGTH);
+++ blake2b_init_wowseed(&BlakeHash, ARGON2_PREHASH_DIGEST_LENGTH);
++
++ store32(&value, context->lanes);
++- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
++
++ store32(&value, context->outlen);
++- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
++
++ store32(&value, context->m_cost);
++- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
++
++ store32(&value, context->t_cost);
++- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
++
++ store32(&value, context->version);
++- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
++
++ store32(&value, (uint32_t)type);
++- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
++
++ store32(&value, context->pwdlen);
++- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
++
++ if (context->pwd != NULL) {
++- blake2b_update(&BlakeHash, (const uint8_t *)context->pwd,
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)context->pwd,
++ context->pwdlen);
++
++ if (context->flags & ARGON2_FLAG_CLEAR_PASSWORD) {
++@@ -473,18 +473,18 @@ void initial_hash(uint8_t *blockhash, argon2_context *context,
++ }
++
++ store32(&value, context->saltlen);
++- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
++
++ if (context->salt != NULL) {
++- blake2b_update(&BlakeHash, (const uint8_t *)context->salt,
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)context->salt,
++ context->saltlen);
++ }
++
++ store32(&value, context->secretlen);
++- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
++
++ if (context->secret != NULL) {
++- blake2b_update(&BlakeHash, (const uint8_t *)context->secret,
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)context->secret,
++ context->secretlen);
++
++ if (context->flags & ARGON2_FLAG_CLEAR_SECRET) {
++@@ -494,14 +494,14 @@ void initial_hash(uint8_t *blockhash, argon2_context *context,
++ }
++
++ store32(&value, context->adlen);
++- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
++
++ if (context->ad != NULL) {
++- blake2b_update(&BlakeHash, (const uint8_t *)context->ad,
+++ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)context->ad,
++ context->adlen);
++ }
++
++- blake2b_final(&BlakeHash, blockhash, ARGON2_PREHASH_DIGEST_LENGTH);
+++ blake2b_final_wowseed(&BlakeHash, blockhash, ARGON2_PREHASH_DIGEST_LENGTH);
++ }
++
++ int initialize(argon2_instance_t *instance, argon2_context *context) {
++--
++2.44.0
+--
+2.44.0
+