From bd1b6d927e22505aa467d850814ff3be7fd1312b Mon Sep 17 00:00:00 2001 From: cathugger Date: Wed, 1 Jun 2022 18:41:40 +0000 Subject: [PATCH 01/25] cleanup some remaining dead refs --- ed25519/amd64-51-30k/fe25519.h | 3 --- ed25519/ed25519_impl_post.h | 1 - ed25519/ref10/fe.h | 2 -- 3 files changed, 6 deletions(-) diff --git a/ed25519/amd64-51-30k/fe25519.h b/ed25519/amd64-51-30k/fe25519.h index f037e72..64f9c99 100644 --- a/ed25519/amd64-51-30k/fe25519.h +++ b/ed25519/amd64-51-30k/fe25519.h @@ -17,7 +17,6 @@ #define fe25519_add CRYPTO_NAMESPACE(batch_fe25519_add) #define fe25519_sub CRYPTO_NAMESPACE(batch_fe25519_sub) #define fe25519_mul CRYPTO_NAMESPACE(batch_fe25519_mul) -#define fe25519_mul121666 CRYPTO_NAMESPACE(batch_fe25519_mul121666) #define fe25519_square CRYPTO_NAMESPACE(batch_fe25519_square) #define fe25519_nsquare CRYPTO_NAMESPACE(batch_fe25519_nsquare) #define fe25519_invert CRYPTO_NAMESPACE(batch_fe25519_invert) @@ -56,8 +55,6 @@ void fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y); void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y) SYSVABI; -void fe25519_mul121666(fe25519 *r, const fe25519 *x); - void fe25519_square(fe25519 *r, const fe25519 *x) SYSVABI; void fe25519_nsquare(fe25519 *r, unsigned long long n) SYSVABI; diff --git a/ed25519/ed25519_impl_post.h b/ed25519/ed25519_impl_post.h index 0f5a3e8..470ad77 100644 --- a/ed25519/ed25519_impl_post.h +++ b/ed25519/ed25519_impl_post.h @@ -54,7 +54,6 @@ #undef ge25519_add_p1p1 #undef ge25519_dbl_p1p1 #undef choose_t -#undef choose_t_smultq #undef ge25519_nielsadd2 #undef ge25519_nielsadd_p1p1 #undef ge25519_pnielsadd_p1p1 diff --git a/ed25519/ref10/fe.h b/ed25519/ref10/fe.h index f4ec2bf..4613170 100644 --- a/ed25519/ref10/fe.h +++ b/ed25519/ref10/fe.h @@ -29,7 +29,6 @@ Bounds on each t[i] vary depending on context. #define fe_mul CRYPTO_NAMESPACE(fe_mul) #define fe_sq CRYPTO_NAMESPACE(fe_sq) #define fe_sq2 CRYPTO_NAMESPACE(fe_sq2) -#define fe_mul121666 CRYPTO_NAMESPACE(fe_mul121666) #define fe_invert CRYPTO_NAMESPACE(fe_invert) #define fe_batchinvert CRYPTO_NAMESPACE(fe_batchinvert) #define fe_pow22523 CRYPTO_NAMESPACE(fe_pow22523) @@ -51,7 +50,6 @@ extern void fe_neg(fe,const fe); extern void fe_mul(fe,const fe,const fe); extern void fe_sq(fe,const fe); extern void fe_sq2(fe,const fe); -extern void fe_mul121666(fe,const fe); extern void fe_invert(fe,const fe); extern void fe_batchinvert(fe *out,fe *in,fe *tmp,size_t num,size_t shift); extern void fe_pow22523(fe,const fe); From f667a8a25661f926efae69f3e4a2920fe3aae98d Mon Sep 17 00:00:00 2001 From: cathugger Date: Fri, 24 Jun 2022 18:08:51 +0000 Subject: [PATCH 02/25] fix syncwritefile on windows --- contrib/release-scripts/release.sh | 1 + ioutil.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/contrib/release-scripts/release.sh b/contrib/release-scripts/release.sh index 8352f6f..4ceff53 100755 --- a/contrib/release-scripts/release.sh +++ b/contrib/release-scripts/release.sh @@ -22,6 +22,7 @@ mkdir -p out SV=mkp224o-$V SO=$(realpath ./out/$SV) git clone ../../ "$SO" +git -C ../../ diff | git -C "$SO" apply cd "$SO" rm -rf .git ./autogen.sh diff --git a/ioutil.c b/ioutil.c index 6ec260a..5d1edca 100644 --- a/ioutil.c +++ b/ioutil.c @@ -221,22 +221,29 @@ int createdir(const char *path,int secret) static int syncwritefile(const char *filename,const char *tmpname,int secret,const u8 *data,size_t datalen) { FH f = createfile(tmpname,secret); - if (f == FH_invalid) + if (f == FH_invalid) { + //fprintf(stderr,"!failed to create\n"); return -1; + } + if (writeall(f,data,datalen) < 0) { + //fprintf(stderr,"!failed to write\n"); goto failclose; } if (FlushFileBuffers(f) == 0) { + //fprintf(stderr,"!failed to flush\n"); goto failclose; } if (closefile(f) < 0) { + //fprintf(stderr,"!failed to close\n"); goto failrm; } - if (MoveFileA(tmpname,filename) == 0) { + if (MoveFileExA(tmpname,filename,MOVEFILE_REPLACE_EXISTING) == 0) { + //fprintf(stderr,"!failed to move\n"); goto failrm; } From a6e53b09979b61634063f3ba82982fa8f29d458c Mon Sep 17 00:00:00 2001 From: cathugger Date: Thu, 30 Jun 2022 22:19:56 +0000 Subject: [PATCH 03/25] fixup release script --- contrib/release-scripts/release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/release-scripts/release.sh b/contrib/release-scripts/release.sh index 4ceff53..55fb703 100755 --- a/contrib/release-scripts/release.sh +++ b/contrib/release-scripts/release.sh @@ -22,7 +22,7 @@ mkdir -p out SV=mkp224o-$V SO=$(realpath ./out/$SV) git clone ../../ "$SO" -git -C ../../ diff | git -C "$SO" apply +git -C ../../ diff | git -C "$SO" apply --allow-empty cd "$SO" rm -rf .git ./autogen.sh From d202229a437d98b874f0ecc4affcf58f65596802 Mon Sep 17 00:00:00 2001 From: cathugger Date: Mon, 19 Sep 2022 06:15:42 +0000 Subject: [PATCH 04/25] add libc6-dev to debian deps thanks @EsmailELBoBDev2 for report --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c3dbad0..7ba4f09 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ formely known as proposal 224) onion addresses. For debian-like linux distros, this should be enough to prepare for building: ```bash -apt install gcc libsodium-dev make autoconf +apt install gcc libc6-dev libsodium-dev make autoconf ``` ### Building From 309b86fd5937fda3c74dfccde884b5b49746ef51 Mon Sep 17 00:00:00 2001 From: cathugger Date: Mon, 19 Dec 2022 18:30:24 +0200 Subject: [PATCH 05/25] more helpful error messages --- main.c | 2 +- worker.c | 2 +- yaml.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/main.c b/main.c index 1943817..5a1fbde 100644 --- a/main.c +++ b/main.c @@ -214,7 +214,7 @@ static void savecheckpoint(void) if (syncwrite(checkpointfile,1,checkpoint,SEED_LEN) < 0) { pthread_mutex_lock(&fout_mutex); - fprintf(stderr,"ERROR: could not save checkpoint\n"); + fprintf(stderr,"ERROR: could not save checkpoint to \"%s\"\n",checkpointfile); pthread_mutex_unlock(&fout_mutex); } } diff --git a/worker.c b/worker.c index b9a6476..78376ce 100644 --- a/worker.c +++ b/worker.c @@ -102,7 +102,7 @@ static void onionready(char *sname,const u8 *secret,const u8 *pubonion) if (!yamloutput) { if (createdir(sname,1) != 0) { pthread_mutex_lock(&fout_mutex); - fprintf(stderr,"ERROR: could not create directory for key output\n"); + fprintf(stderr,"ERROR: could not create directory \"%s\" for key output\n",sname); pthread_mutex_unlock(&fout_mutex); return; } diff --git a/yaml.c b/yaml.c index c8778a6..56bd10e 100644 --- a/yaml.c +++ b/yaml.c @@ -274,7 +274,7 @@ int yamlin_parseandcreate( sigprocmask(SIG_BLOCK,&nset,&oset); #endif if (createdir(sname,1) != 0) { - fprintf(stderr,"ERROR: could not create directory for key output\n"); + fprintf(stderr,"ERROR: could not create directory \"%s\" for key output\n",sname); return 1; } From 68928c49849170e06f3c1f6c01ef0a12cd2385c2 Mon Sep 17 00:00:00 2001 From: cathugger Date: Sat, 14 Jan 2023 14:37:41 +0000 Subject: [PATCH 06/25] fix assembler compilation on MacOS --- ed25519/amd64-51-30k/consts.S | 4 ++++ ed25519/amd64-64-24k/consts.S | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/ed25519/amd64-51-30k/consts.S b/ed25519/amd64-51-30k/consts.S index b2ca1ab..5713447 100644 --- a/ed25519/amd64-51-30k/consts.S +++ b/ed25519/amd64-51-30k/consts.S @@ -1,4 +1,8 @@ +#ifndef __APPLE__ .section .rodata +#else +.const +#endif .globl CRYPTO_NAMESPACE(batch_REDMASK51) .globl CRYPTO_NAMESPACE(batch_121666_213) diff --git a/ed25519/amd64-64-24k/consts.S b/ed25519/amd64-64-24k/consts.S index ca9896f..db6bad5 100644 --- a/ed25519/amd64-64-24k/consts.S +++ b/ed25519/amd64-64-24k/consts.S @@ -1,4 +1,8 @@ +#ifndef __APPLE__ .section .rodata +#else +.const +#endif .globl CRYPTO_NAMESPACE(121666) .globl CRYPTO_NAMESPACE(MU0) From d612b74842af053c1970ee44c547e0c7332e2a53 Mon Sep 17 00:00:00 2001 From: cathugger Date: Sun, 26 Mar 2023 23:43:49 +0000 Subject: [PATCH 07/25] improve readme a bit --- README.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 7ba4f09..0d3430d 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ This tool generates vanity ed25519 ([hidden service version 3][v3], formely known as proposal 224) onion addresses. -### Requirements +### Requirements for building * C99 compatible compiler (gcc and clang should work) * libsodium (including headers) @@ -20,23 +20,26 @@ apt install gcc libc6-dev libsodium-dev make autoconf ### Building -`./autogen.sh` to generate configure script, if it's not there already. +Run `./autogen.sh` to generate a configure script, if there isn't one already. -`./configure` to generate makefile; in \*BSD platforms you probably want to use +Run `./configure` to generate a makefile. +On \*BSD platforms you may need to specify extra include/library paths: `./configure CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"`. On AMD64 platforms, you probably also want to pass something like -`--enable-amd64-51-30k` to configure script for faster key generation; +`--enable-amd64-51-30k` to the configure script invocation for faster key generation; run `./configure --help` to see all available options. Finally, `make` to start building (`gmake` in \*BSD platforms). ### Usage -Generator needs one or more filters to work. +mkp224o needs one or more filters to work. +You may specify them as command line arguments, +eg `./mkp224o test`, or load them from file with `-f` switch. -It makes directory with secret/public keys and hostname -for each discovered service. By default root is current +It makes directories with secret/public keys and hostnames +for each discovered service. By default, the working directory is the current directory, but that can be overridden with `-d` switch. Use `-s` switch to enable printing of statistics, which may be useful From 2b417046b682ef6adcee25158d99619d9cfd16d1 Mon Sep 17 00:00:00 2001 From: cathugger Date: Fri, 9 Jun 2023 17:16:46 +0300 Subject: [PATCH 08/25] remove slow/fast workers --- GNUmakefile.in | 6 +-- main.c | 24 +++------ worker.h | 3 -- worker_fast.inc.h | 107 ------------------------------------- worker_fast_pass.inc.h | 116 ----------------------------------------- worker_impl.inc.h | 3 -- worker_slow.inc.h | 94 --------------------------------- 7 files changed, 10 insertions(+), 343 deletions(-) delete mode 100644 worker_fast.inc.h delete mode 100644 worker_fast_pass.inc.h delete mode 100644 worker_slow.inc.h diff --git a/GNUmakefile.in b/GNUmakefile.in index ec4725b..f80b506 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -542,7 +542,7 @@ worker.c.o: ed25519/ed25519-donna/ed25519-donna-64bit-x86-32bit.h worker.c.o: ed25519/ed25519-donna/ed25519-donna-32bit-sse2.h worker.c.o: ed25519/ed25519-donna/ed25519-donna-64bit-sse2.h worker.c.o: ed25519/ed25519-donna/ed25519-donna-impl-sse2.h -worker.c.o: ed25519/ed25519-donna/ed25519-donna-impl-base.h worker_slow.inc.h -worker.c.o: worker_fast.inc.h worker_fast_pass.inc.h worker_batch.inc.h -worker.c.o: worker_batch_pass.inc.h ed25519/ed25519_impl_post.h +worker.c.o: ed25519/ed25519-donna/ed25519-donna-impl-base.h +worker.c.o: worker_batch.inc.h worker_batch_pass.inc.h +worker.c.o: ed25519/ed25519_impl_post.h yaml.c.o: types.h yaml.h ioutil.h base32.h base64.h common.h diff --git a/main.c b/main.c index 5a1fbde..c5d2844 100644 --- a/main.c +++ b/main.c @@ -110,10 +110,9 @@ static void printhelp(FILE *out,const char *progname) " -j NUMTHREADS same as -t\n" " -n NUMKEYS specify number of keys (default - 0 - unlimited)\n" " -N NUMWORDS specify number of words per key (default - 1)\n" - " -Z use \"slower\" key generation method (initial default)\n" - " -z use \"faster\" key generation method (later default)\n" - " -B use batching key generation method\n" - " (>10x faster than -z, current default)\n" + " -Z deprecated, does nothing\n" + " -z deprecated, does nothing\n" + " -B use batching key generation method (current default)\n" " -s print statistics each 10 seconds\n" " -S SECONDS print statistics every specified amount of seconds\n" " -T do not reset statistics counters when printing\n" @@ -257,8 +256,6 @@ VEC_STRUCT(threadvec,pthread_t); #include "filters_main.inc.h" enum worker_type { - WT_SLOW, - WT_FAST, WT_BATCH, }; @@ -417,9 +414,9 @@ int main(int argc,char **argv) e_additional(); } else if (*arg == 'Z') - wt = WT_SLOW; + /* ignored */ ; else if (*arg == 'z') - wt = WT_FAST; + /* ignored */ ; else if (*arg == 'B') wt = WT_BATCH; else if (*arg == 's') { @@ -665,17 +662,10 @@ int main(int argc,char **argv) tattrp, #ifdef PASSPHRASE deterministic - ? (wt == WT_BATCH - ? CRYPTO_NAMESPACE(worker_batch_pass) - : CRYPTO_NAMESPACE(worker_fast_pass)) + ? CRYPTO_NAMESPACE(worker_batch_pass) : #endif - wt == WT_BATCH - ? CRYPTO_NAMESPACE(worker_batch) - : - wt == WT_FAST - ? CRYPTO_NAMESPACE(worker_fast) - : CRYPTO_NAMESPACE(worker_slow), + CRYPTO_NAMESPACE(worker_batch), tp ); if (tret) { diff --git a/worker.h b/worker.h index 36912a0..2c30831 100644 --- a/worker.h +++ b/worker.h @@ -40,10 +40,7 @@ extern void worker_init(void); extern char *makesname(void); extern size_t worker_batch_memuse(void); -extern void *CRYPTO_NAMESPACE(worker_slow)(void *task); -extern void *CRYPTO_NAMESPACE(worker_fast)(void *task); extern void *CRYPTO_NAMESPACE(worker_batch)(void *task); #ifdef PASSPHRASE -extern void *CRYPTO_NAMESPACE(worker_fast_pass)(void *task); extern void *CRYPTO_NAMESPACE(worker_batch_pass)(void *task); #endif diff --git a/worker_fast.inc.h b/worker_fast.inc.h deleted file mode 100644 index b9ec7a0..0000000 --- a/worker_fast.inc.h +++ /dev/null @@ -1,107 +0,0 @@ - -void *CRYPTO_NAMESPACE(worker_fast)(void *task) -{ - union pubonionunion pubonion; - u8 * const pk = &pubonion.raw[PKPREFIX_SIZE]; - u8 secret[SKPREFIX_SIZE + SECRET_LEN]; - u8 * const sk = &secret[SKPREFIX_SIZE]; - u8 seed[SEED_LEN]; - u8 hashsrc[checksumstrlen + PUBLIC_LEN + 1]; - u8 wpk[PUBLIC_LEN + 1]; - ge_p3 ALIGN(16) ge_public; - char *sname; - - size_t counter; - size_t i; - -#ifdef STATISTICS - struct statstruct *st = (struct statstruct *)task; -#else - (void) task; -#endif - - PREFILTER - - memcpy(secret,skprefix,SKPREFIX_SIZE); - wpk[PUBLIC_LEN] = 0; - memset(&pubonion,0,sizeof(pubonion)); - memcpy(pubonion.raw,pkprefix,PKPREFIX_SIZE); - // write version later as it will be overwritten by hash - memcpy(hashsrc,checksumstr,checksumstrlen); - hashsrc[checksumstrlen + PUBLIC_LEN] = 0x03; // version - - sname = makesname(); - -initseed: - -#ifdef STATISTICS - ++st->numrestart.v; -#endif - - randombytes(seed,sizeof(seed)); - - ed25519_seckey_expand(sk,seed); - - ge_scalarmult_base(&ge_public,sk); - ge_p3_tobytes(pk,&ge_public); - - for (counter = 0;counter < SIZE_MAX-8;counter += 8) { - ge_p1p1 ALIGN(16) sum; - - if (unlikely(endwork)) - goto end; - - DOFILTER(i,pk,{ - if (numwords > 1) { - shiftpk(wpk,pk,filter_len(i)); - size_t j; - for (int w = 1;;) { - DOFILTER(j,wpk,goto secondfind); - goto next; - secondfind: - if (++w >= numwords) - break; - shiftpk(wpk,wpk,filter_len(j)); - } - } - // found! - // update secret key with counter - addsztoscalar32(sk,counter); - // sanity check - if ((sk[0] & 248) != sk[0] || ((sk[31] & 63) | 64) != sk[31]) - goto initseed; - - ADDNUMSUCCESS; - - // calc checksum - memcpy(&hashsrc[checksumstrlen],pk,PUBLIC_LEN); - FIPS202_SHA3_256(hashsrc,sizeof(hashsrc),&pk[PUBLIC_LEN]); - // version byte - pk[PUBLIC_LEN + 2] = 0x03; - // full name - strcpy(base32_to(&sname[direndpos],pk,PUBONION_LEN),".onion"); - onionready(sname,secret,pubonion.raw); - pk[PUBLIC_LEN] = 0; // what is this for? - // don't reuse same seed - goto initseed; - }); - next: - ge_add(&sum,&ge_public,&ge_eightpoint); - ge_p1p1_to_p3(&ge_public,&sum); - ge_p3_tobytes(pk,&ge_public); -#ifdef STATISTICS - ++st->numcalc.v; -#endif - } - goto initseed; - -end: - free(sname); - - POSTFILTER - - sodium_memzero(secret,sizeof(secret)); - sodium_memzero(seed,sizeof(seed)); - - return 0; -} diff --git a/worker_fast_pass.inc.h b/worker_fast_pass.inc.h deleted file mode 100644 index 793d600..0000000 --- a/worker_fast_pass.inc.h +++ /dev/null @@ -1,116 +0,0 @@ - -#ifdef PASSPHRASE -void *CRYPTO_NAMESPACE(worker_fast_pass)(void *task) -{ - union pubonionunion pubonion; - u8 * const pk = &pubonion.raw[PKPREFIX_SIZE]; - u8 secret[SKPREFIX_SIZE + SECRET_LEN]; - u8 * const sk = &secret[SKPREFIX_SIZE]; - u8 seed[SEED_LEN]; - u8 hashsrc[checksumstrlen + PUBLIC_LEN + 1]; - u8 wpk[PUBLIC_LEN + 1]; - ge_p3 ALIGN(16) ge_public; - char *sname; - - size_t counter,oldcounter; - size_t i; - -#ifdef STATISTICS - struct statstruct *st = (struct statstruct *)task; -#else - (void) task; -#endif - - PREFILTER - - memcpy(secret,skprefix,SKPREFIX_SIZE); - wpk[PUBLIC_LEN] = 0; - memset(&pubonion,0,sizeof(pubonion)); - memcpy(pubonion.raw,pkprefix,PKPREFIX_SIZE); - // write version later as it will be overwritten by hash - memcpy(hashsrc,checksumstr,checksumstrlen); - hashsrc[checksumstrlen + PUBLIC_LEN] = 0x03; // version - - sname = makesname(); - -initseed: - -#ifdef STATISTICS - ++st->numrestart.v; -#endif - - pthread_mutex_lock(&determseed_mutex); - for (int i = 0; i < SEED_LEN; i++) - if (++determseed[i]) - break; - memcpy(seed, determseed, SEED_LEN); - pthread_mutex_unlock(&determseed_mutex); - - ed25519_seckey_expand(sk,seed); - - ge_scalarmult_base(&ge_public,sk); - ge_p3_tobytes(pk,&ge_public); - - for (counter = oldcounter = 0;counter < DETERMINISTIC_LOOP_COUNT;counter += 8) { - ge_p1p1 ALIGN(16) sum; - - if (unlikely(endwork)) - goto end; - - DOFILTER(i,pk,{ - if (numwords > 1) { - shiftpk(wpk,pk,filter_len(i)); - size_t j; - for (int w = 1;;) { - DOFILTER(j,wpk,goto secondfind); - goto next; - secondfind: - if (++w >= numwords) - break; - shiftpk(wpk,wpk,filter_len(j)); - } - } - // found! - // update secret key with delta since last hit (if any) - addsztoscalar32(sk,counter-oldcounter); - oldcounter = counter; - // sanity check - if ((sk[0] & 248) != sk[0] || ((sk[31] & 63) | 64) != sk[31]) - goto initseed; - - // reseed right half of key to avoid reuse, it won't change public key anyway - reseedright(sk); - - ADDNUMSUCCESS; - - // calc checksum - memcpy(&hashsrc[checksumstrlen],pk,PUBLIC_LEN); - FIPS202_SHA3_256(hashsrc,sizeof(hashsrc),&pk[PUBLIC_LEN]); - // version byte - pk[PUBLIC_LEN + 2] = 0x03; - // full name - strcpy(base32_to(&sname[direndpos],pk,PUBONION_LEN),".onion"); - onionready(sname,secret,pubonion.raw); - pk[PUBLIC_LEN] = 0; // what is this for? - }); - next: - ge_add(&sum, &ge_public,&ge_eightpoint); - ge_p1p1_to_p3(&ge_public,&sum); - ge_p3_tobytes(pk,&ge_public); -#ifdef STATISTICS - ++st->numcalc.v; -#endif - } - goto initseed; - -end: - free(sname); - - POSTFILTER - - sodium_memzero(secret,sizeof(secret)); - sodium_memzero(seed,sizeof(seed)); - - return 0; -} -#endif // PASSPHRASE diff --git a/worker_impl.inc.h b/worker_impl.inc.h index fbd7b0f..cf922b9 100644 --- a/worker_impl.inc.h +++ b/worker_impl.inc.h @@ -6,9 +6,6 @@ static size_t CRYPTO_NAMESPACE(worker_batch_memuse)(void) return (sizeof(ge_p3) + sizeof(fe) + sizeof(bytes32)) * BATCHNUM; } -#include "worker_slow.inc.h" -#include "worker_fast.inc.h" -#include "worker_fast_pass.inc.h" #include "worker_batch.inc.h" #include "worker_batch_pass.inc.h" diff --git a/worker_slow.inc.h b/worker_slow.inc.h deleted file mode 100644 index ab75ef2..0000000 --- a/worker_slow.inc.h +++ /dev/null @@ -1,94 +0,0 @@ - -void *CRYPTO_NAMESPACE(worker_slow)(void *task) -{ - union pubonionunion pubonion; - u8 * const pk = &pubonion.raw[PKPREFIX_SIZE]; - u8 secret[SKPREFIX_SIZE + SECRET_LEN]; - u8 * const sk = &secret[SKPREFIX_SIZE]; - u8 seed[SEED_LEN]; - u8 hashsrc[checksumstrlen + PUBLIC_LEN + 1]; - u8 wpk[PUBLIC_LEN + 1]; - char *sname; - - size_t i; - -#ifdef STATISTICS - struct statstruct *st = (struct statstruct *)task; -#else - (void) task; -#endif - - PREFILTER - - memcpy(secret,skprefix,SKPREFIX_SIZE); - wpk[PUBLIC_LEN] = 0; - memset(&pubonion,0,sizeof(pubonion)); - memcpy(pubonion.raw,pkprefix,PKPREFIX_SIZE); - // write version later as it will be overwritten by hash - memcpy(hashsrc,checksumstr,checksumstrlen); - hashsrc[checksumstrlen + PUBLIC_LEN] = 0x03; // version - - sname = makesname(); - -initseed: - randombytes(seed,sizeof(seed)); - ed25519_seckey_expand(sk,seed); - -#ifdef STATISTICS - ++st->numrestart.v; -#endif - -again: - if (unlikely(endwork)) - goto end; - - ed25519_pubkey(pk,sk); - -#ifdef STATISTICS - ++st->numcalc.v; -#endif - - DOFILTER(i,pk,{ - if (numwords > 1) { - shiftpk(wpk,pk,filter_len(i)); - size_t j; - for (int w = 1;;) { - DOFILTER(j,wpk,goto secondfind); - goto next; - secondfind: - if (++w >= numwords) - break; - shiftpk(wpk,wpk,filter_len(j)); - } - } - // sanity check - if ((sk[0] & 248) != sk[0] || ((sk[31] & 63) | 64) != sk[31]) - goto initseed; - - ADDNUMSUCCESS; - - // calc checksum - memcpy(&hashsrc[checksumstrlen],pk,PUBLIC_LEN); - FIPS202_SHA3_256(hashsrc,sizeof(hashsrc),&pk[PUBLIC_LEN]); - // version byte - pk[PUBLIC_LEN + 2] = 0x03; - // base32 - strcpy(base32_to(&sname[direndpos],pk,PUBONION_LEN),".onion"); - onionready(sname,secret,pubonion.raw); - pk[PUBLIC_LEN] = 0; // what is this for? - goto initseed; - }); -next: - addsk32(sk); - goto again; - -end: - free(sname); - - POSTFILTER - - sodium_memzero(secret,sizeof(secret)); - sodium_memzero(seed,sizeof(seed)); - - return 0; -} From e9f6027a7cd36a1bb1e36ae016123c0f348c1ad2 Mon Sep 17 00:00:00 2001 From: dunsany <118174187+dunsany@users.noreply.github.com> Date: Wed, 26 Jul 2023 10:27:45 +0200 Subject: [PATCH 09/25] Fix digit typos in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0d3430d..9dc4d5f 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ performance-related tips. Then edit `torrc` and add new service with that folder.\ After reload/restart tor should pick it up. -* Generate addresses with `1-2` and `7-9` digits? +* How to generate addresses with `0-1` and `8-9` digits? Onion addresses use base32 encoding which does not include `0,1,8,9` numbers.\ From 6a2b5e60bf9ce970efb679b1670812e8ddaaad87 Mon Sep 17 00:00:00 2001 From: cathugger Date: Sun, 6 Aug 2023 05:13:37 +0300 Subject: [PATCH 10/25] fix checkpoint loading (use carry for add) --- main.c | 7 +++++-- worker.c | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/main.c b/main.c index c5d2844..164307c 100644 --- a/main.c +++ b/main.c @@ -612,8 +612,11 @@ int main(int argc,char **argv) fclose(checkout); // Apply checkpoint to determseed - for (int i = 0; i < SEED_LEN; i++) - determseed[i] += checkpoint[i]; + bool carry = 0; + for (int i = 0; i < SEED_LEN; i++) { + determseed[i] += checkpoint[i] + carry; + carry = determseed[i] < checkpoint[i]; + } } } } diff --git a/worker.c b/worker.c index 78376ce..0a08d27 100644 --- a/worker.c +++ b/worker.c @@ -150,6 +150,7 @@ union pubonionunion { } i; } ; +/* // little endian inc static void addsk32(u8 *sk) { @@ -160,6 +161,7 @@ static void addsk32(u8 *sk) if (!c) break; } } +*/ // 0123 4567 xxxx --3--> 3456 7xxx // 0123 4567 xxxx --1--> 1234 567x From ec788fec85a00b9c90214cc81148a87201fa31fd Mon Sep 17 00:00:00 2001 From: cathugger Date: Sun, 6 Aug 2023 19:07:51 +0300 Subject: [PATCH 11/25] revamp docker support don't use volume, use latest alpine so i won't need to bump it use multistage static build for minimal size with stripping correctly save git version details --- contrib/docker/.dockerignore | 1 - contrib/docker/Dockerfile | 31 ++++++++++++------------------- 2 files changed, 12 insertions(+), 20 deletions(-) delete mode 100644 contrib/docker/.dockerignore diff --git a/contrib/docker/.dockerignore b/contrib/docker/.dockerignore deleted file mode 100644 index 6b8710a..0000000 --- a/contrib/docker/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -.git diff --git a/contrib/docker/Dockerfile b/contrib/docker/Dockerfile index 97aaac3..afbcc41 100644 --- a/contrib/docker/Dockerfile +++ b/contrib/docker/Dockerfile @@ -1,21 +1,14 @@ -FROM alpine:3.12.0 +FROM alpine:latest AS builder +RUN apk add --no-cache gcc libc-dev libsodium-dev libsodium-static make autoconf git +WORKDIR /app +COPY . . +RUN ./autogen.sh +RUN ./configure --enable-amd64-51-30k CFLAGS="-O3 -march=x86-64 -mtune=generic -fomit-frame-pointer" LDFLAGS="-static" +RUN make +RUN strip mkp224o -LABEL maintainer="sstefin@bk.ru" +FROM scratch +WORKDIR /app +COPY --from=builder /app/mkp224o . -#Installing all the dependencies -RUN apk add --no-cache gcc libsodium-dev make autoconf build-base - -WORKDIR /mkp224o - -COPY . /mkp224o/ - -RUN ./autogen.sh \ - && ./configure \ - && make \ - && cp /mkp224o/mkp224o /usr/local/bin/ - -VOLUME /root/data - -WORKDIR /root/data - -ENTRYPOINT ["mkp224o"] +ENTRYPOINT ["./mkp224o"] From 42e4d3a5fcea3a7d5072e9b354265e2ced18367b Mon Sep 17 00:00:00 2001 From: Marni Date: Sun, 6 Aug 2023 20:22:54 +0200 Subject: [PATCH 12/25] Docker support (#99) * add Dockerfile * add basic documentation for docker image * change cmd to entrypoint in Dockerfile This is so that you can add args without docker assuming you're trying to override the command * Create docker-publish.yml github CI action This is taken from the marketplace, I didn't write this * correct docker image tag * fix checkpoint loading (use carry for add) * Fix digit typos in README * revamp docker support don't use volume, use latest alpine so i won't need to bump it use multistage static build for minimal size with stripping correctly save git version details * tweak workflows * try making cosign work * Revert "try making cosign work" This reverts commit a70723db665821147b7b2996c510679f3f5dddc1. * fix * remove root dockerfile --------- Co-authored-by: cathugger Co-authored-by: dunsany <118174187+dunsany@users.noreply.github.com> --- .github/workflows/docker-publish.yml | 85 ++++++++++++++++++++++++++++ README.md | 9 +++ 2 files changed, 94 insertions(+) create mode 100644 .github/workflows/docker-publish.yml diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..6193e82 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,85 @@ +name: Docker + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +env: + # Use docker.io for Docker Hub if empty + REGISTRY: ghcr.io + # github.repository as / + IMAGE_NAME: ${{ github.repository }} + + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + # This is used to complete the identity challenge + # with sigstore/fulcio when running outside of PRs. + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Install the cosign tool except on PR + # https://github.com/sigstore/cosign-installer + - name: Install cosign + if: github.event_name != 'pull_request' + uses: sigstore/cosign-installer@v3 + + - name: Setup Docker buildx + uses: docker/setup-buildx-action@v2 + + # Login against a Docker registry except on PR + # https://github.com/docker/login-action + - name: Log into registry ${{ env.REGISTRY }} + if: github.event_name != 'pull_request' + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Extract metadata (tags, labels) for Docker + # https://github.com/docker/metadata-action + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + # Build and push Docker image with Buildx (don't push on PR) + # https://github.com/docker/build-push-action + - name: Build and push Docker image + id: build-and-push + uses: docker/build-push-action@v4 + with: + file: ./contrib/docker/Dockerfile + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + + # Sign the resulting Docker image digest except on PRs. + # This will only write to the public Rekor transparency log when the Docker + # repository is public to avoid leaking data. If you would like to publish + # transparency data even for private images, pass --force to cosign below. + # https://github.com/sigstore/cosign + - name: Sign the published Docker image + if: ${{ github.event_name != 'pull_request' }} + # This step uses the identity token to provision an ephemeral certificate + # against the sigstore community Fulcio instance. + run: echo "${{ steps.meta.outputs.tags }}" | xargs -I {} cosign sign --yes {}@${{ steps.build-and-push.outputs.digest }} diff --git a/README.md b/README.md index 9dc4d5f..8185082 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,15 @@ performance-related tips. It appears that onionbalance supports loading usual `hs_ed25519_secret_key` key so it should work. +* Is there a docker image? + + Yes, if you do not wish to compile mkp224o yourself, you can use + the `ghcr.io/cathugger/mkp224o` image like so: + + ```bash + docker run --rm -it -v $PWD:/keys ghcr.io/cathugger/mkp224o:master -d /keys neko + ``` + ### Acknowledgements & Legal To the extent possible under law, the author(s) have dedicated all From 80e1bd0b471c66f93c36a8731230c139ff1e2d9b Mon Sep 17 00:00:00 2001 From: cathugger Date: Wed, 6 Sep 2023 01:00:04 +0300 Subject: [PATCH 13/25] near passkeys skip/warn modes & help tweak --- main.c | 73 +++++++++++++++++++++++++---------------- worker.c | 11 ++++++- worker.h | 2 ++ worker_batch.inc.h | 2 +- worker_batch_pass.inc.h | 18 ++++++++-- 5 files changed, 72 insertions(+), 34 deletions(-) diff --git a/main.c b/main.c index 164307c..3043de2 100644 --- a/main.c +++ b/main.c @@ -96,43 +96,49 @@ static void printhelp(FILE *out,const char *progname) " %s -f FILTERFILE [OPTION]\n" "Options:\n" " -f FILTERFILE specify filter file which contains filters separated\n" - " by newlines\n" - " -D deduplicate filters\n" - " -q do not print diagnostic output to stderr\n" - " -x do not print onion names\n" - " -v print more diagnostic data\n" - " -o FILENAME output onion names to specified file (append)\n" - " -O FILENAME output onion names to specified file (overwrite)\n" - " -F include directory names in onion names output\n" - " -d DIRNAME output directory\n" + " by newlines.\n" + " -D deduplicate filters.\n" + " -q do not print diagnostic output to stderr.\n" + " -x do not print onion names.\n" + " -v print more diagnostic data.\n" + " -o FILENAME output onion names to specified file (append).\n" + " -O FILENAME output onion names to specified file (overwrite).\n" + " -F include directory names in onion names output.\n" + " -d DIRNAME output directory.\n" " -t NUMTHREADS specify number of threads to utilise\n" - " (default - try detecting CPU core count)\n" - " -j NUMTHREADS same as -t\n" - " -n NUMKEYS specify number of keys (default - 0 - unlimited)\n" - " -N NUMWORDS specify number of words per key (default - 1)\n" - " -Z deprecated, does nothing\n" - " -z deprecated, does nothing\n" - " -B use batching key generation method (current default)\n" - " -s print statistics each 10 seconds\n" - " -S SECONDS print statistics every specified amount of seconds\n" - " -T do not reset statistics counters when printing\n" + " (default - try detecting CPU core count).\n" + " -j NUMTHREADS same as -t.\n" + " -n NUMKEYS specify number of keys (default - 0 - unlimited).\n" + " -N NUMWORDS specify number of words per key (default - 1).\n" + " -Z deprecated, does nothing.\n" + " -z deprecated, does nothing.\n" + " -B use batching key generation method (current default).\n" + " -s print statistics each 10 seconds.\n" + " -S SECONDS print statistics every specified amount of seconds.\n" + " -T do not reset statistics counters when printing.\n" " -y output generated keys in YAML format instead of\n" - " dumping them to filesystem\n" + " dumping them to filesystem.\n" " -Y [FILENAME [host.onion]]\n" " parse YAML encoded input and extract key(s) to\n" - " filesystem\n" + " filesystem.\n" #ifdef PASSPHRASE - " -p PASSPHRASE use passphrase to initialize the random seed with\n" + " -p PASSPHRASE use passphrase to initialize the random seed with.\n" " -P same as -p, but takes passphrase from PASSPHRASE\n" - " environment variable\n" + " environment variable.\n" " --checkpoint filename\n" " load/save checkpoint of progress to specified file\n" - " (requires passphrase)\n" + " (requires passphrase).\n" + " --skipnear skip near passphrase keys; you probably want this\n" + " because of improved safety unless you're trying to\n" + " regenerate an old key; possible future default.\n" + " --warnnear print warning about passphrase key being near another\n" + " (safety hazard); prefer --skipnear to this unless\n" + " you're regenerating an old key.\n" #endif " --rawyaml raw (unprefixed) public/secret keys for -y/-Y\n" - " (may be useful for tor controller API)\n" - " -h, --help, --usage print help to stdout and quit\n" - " -V, --version print version information to stdout and exit\n" + " (may be useful for tor controller API).\n" + " -h, --help, --usage print help to stdout and quit.\n" + " -V, --version print version information to stdout and exit.\n" ,progname,progname); fflush(out); } @@ -332,6 +338,10 @@ int main(int argc,char **argv) else e_additional(); } + else if (!strcmp(arg,"skipnear")) + pw_skipnear = 1; + else if (!strcmp(arg,"warnnear")) + pw_warnnear = 1; #endif // PASSPHRASE else { fprintf(stderr,"unrecognised argument: --%s\n",arg); @@ -597,8 +607,13 @@ int main(int argc,char **argv) #ifdef PASSPHRASE if (deterministic) { - if (!quietflag && numneedgenerate != 1) - fprintf(stderr,"CAUTION: avoid using keys generated with same password for unrelated services, as single leaked key may help attacker to regenerate related keys.\n"); + if (!quietflag && numneedgenerate != 1 && !pw_skipnear && !pw_warnnear) + fprintf(stderr, + // 0 1 2 3 4 5 6 7 + // 01234567890123456789012345678901234567890123456789012345678901234567890123456789 + "CAUTION: avoid using keys generated with the same password for unrelated\n" + " services, as single leaked key may help an attacker to regenerate\n" + " related keys; to silence this warning, pass --skipnear or --warnnear.\n"); if (checkpointfile) { memcpy(orig_determseed,determseed,sizeof(determseed)); // Read current checkpoint position if file exists diff --git a/worker.c b/worker.c index 0a08d27..1c954de 100644 --- a/worker.c +++ b/worker.c @@ -58,6 +58,8 @@ size_t workdirlen = 0; pthread_mutex_t determseed_mutex; u8 determseed[SEED_LEN]; +int pw_skipnear = 0; +int pw_warnnear = 0; #endif @@ -71,7 +73,7 @@ char *makesname(void) return sname; } -static void onionready(char *sname,const u8 *secret,const u8 *pubonion) +static void onionready(char *sname,const u8 *secret,const u8 *pubonion,int warnnear) { if (endwork) return; @@ -122,6 +124,13 @@ static void onionready(char *sname,const u8 *secret,const u8 *pubonion) } if (fout) { pthread_mutex_lock(&fout_mutex); +#ifdef PASSPHRASE + const char * const pwarn = " warn:near\n"; + if (warnnear) + strcpy(&sname[onionendpos],pwarn); + const size_t oprintlen = printlen; + const size_t printlen = oprintlen + (warnnear ? strlen(pwarn)-1 : 0); +#endif fwrite(&sname[printstartpos],printlen,1,fout); fflush(fout); pthread_mutex_unlock(&fout_mutex); diff --git a/worker.h b/worker.h index 2c30831..547b72a 100644 --- a/worker.h +++ b/worker.h @@ -33,6 +33,8 @@ VEC_STRUCT(statsvec,struct statstruct); #ifdef PASSPHRASE extern pthread_mutex_t determseed_mutex; extern u8 determseed[SEED_LEN]; +extern int pw_skipnear; +extern int pw_warnnear; #endif extern void worker_init(void); diff --git a/worker_batch.inc.h b/worker_batch.inc.h index 7eb5cd6..7bf778d 100644 --- a/worker_batch.inc.h +++ b/worker_batch.inc.h @@ -102,7 +102,7 @@ initseed: pk[PUBLIC_LEN + 2] = 0x03; // full name strcpy(base32_to(&sname[direndpos],pk,PUBONION_LEN),".onion"); - onionready(sname,secret,pubonion.raw); + onionready(sname,secret,pubonion.raw,0); pk[PUBLIC_LEN] = 0; // what is this for? // don't reuse same seed goto initseed; diff --git a/worker_batch_pass.inc.h b/worker_batch_pass.inc.h index 0fa49ff..3d31174 100644 --- a/worker_batch_pass.inc.h +++ b/worker_batch_pass.inc.h @@ -38,17 +38,21 @@ void *CRYPTO_NAMESPACE(worker_batch_pass)(void *task) sname = makesname(); + int seednear; + initseed: #ifdef STATISTICS ++st->numrestart.v; #endif + seednear = 0; + pthread_mutex_lock(&determseed_mutex); for (int i = 0; i < SEED_LEN; i++) if (++determseed[i]) break; - memcpy(seed, determseed, SEED_LEN); + memcpy(seed,determseed,SEED_LEN); pthread_mutex_unlock(&determseed_mutex); ed25519_seckey_expand(sk,seed); @@ -112,8 +116,12 @@ initseed: pk[PUBLIC_LEN + 2] = 0x03; // full name strcpy(base32_to(&sname[direndpos],pk,PUBONION_LEN),".onion"); - onionready(sname,secret,pubonion.raw); + onionready(sname,secret,pubonion.raw,seednear && pw_warnnear); pk[PUBLIC_LEN] = 0; // what is this for? + + if (pw_skipnear) + goto initseed; + seednear = 1; }); next: ; @@ -180,8 +188,12 @@ initseed: pk[PUBLIC_LEN + 2] = 0x03; // full name strcpy(base32_to(&sname[direndpos],pk,PUBONION_LEN),".onion"); - onionready(sname,secret,pubonion.raw); + onionready(sname,secret,pubonion.raw,seednear && pw_warnnear); pk[PUBLIC_LEN] = 0; // what is this for? + + if (pw_skipnear) + goto initseed; + seednear = 1; }); next2: ; From c7a8d7522917fbf2ec5bd5fe4794e00ab20eca48 Mon Sep 17 00:00:00 2001 From: cathugger Date: Wed, 6 Sep 2023 01:24:58 +0300 Subject: [PATCH 14/25] don't skipnear if warnnear is set --- main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index 3043de2..7f82c82 100644 --- a/main.c +++ b/main.c @@ -89,9 +89,9 @@ VEC_STRUCT(tstatsvec,struct tstatstruct); static void printhelp(FILE *out,const char *progname) { + fprintf(out, // 0 1 2 3 4 5 6 7 // 01234567890123456789012345678901234567890123456789012345678901234567890123456789 - fprintf(out, "Usage: %s FILTER [FILTER...] [OPTION]\n" " %s -f FILTERFILE [OPTION]\n" "Options:\n" @@ -614,6 +614,8 @@ int main(int argc,char **argv) "CAUTION: avoid using keys generated with the same password for unrelated\n" " services, as single leaked key may help an attacker to regenerate\n" " related keys; to silence this warning, pass --skipnear or --warnnear.\n"); + if (pw_warnnear) + pw_skipnear = 0; if (checkpointfile) { memcpy(orig_determseed,determseed,sizeof(determseed)); // Read current checkpoint position if file exists From 6c704d20c45e56da0e44917f31c2214502c2e86e Mon Sep 17 00:00:00 2001 From: cathugger Date: Wed, 6 Sep 2023 01:43:44 +0300 Subject: [PATCH 15/25] use "latest wins" logic for skipnear/warnnear args --- main.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index 7f82c82..7dbffee 100644 --- a/main.c +++ b/main.c @@ -338,10 +338,14 @@ int main(int argc,char **argv) else e_additional(); } - else if (!strcmp(arg,"skipnear")) + else if (!strcmp(arg,"skipnear")) { pw_skipnear = 1; - else if (!strcmp(arg,"warnnear")) + pw_warnnear = 0; + } + else if (!strcmp(arg,"warnnear")) { pw_warnnear = 1; + pw_skipnear = 0; + } #endif // PASSPHRASE else { fprintf(stderr,"unrecognised argument: --%s\n",arg); @@ -614,8 +618,6 @@ int main(int argc,char **argv) "CAUTION: avoid using keys generated with the same password for unrelated\n" " services, as single leaked key may help an attacker to regenerate\n" " related keys; to silence this warning, pass --skipnear or --warnnear.\n"); - if (pw_warnnear) - pw_skipnear = 0; if (checkpointfile) { memcpy(orig_determseed,determseed,sizeof(determseed)); // Read current checkpoint position if file exists From 4cc50f41ce3f4fdad161df5469f15730eeb7986a Mon Sep 17 00:00:00 2001 From: cathugger Date: Wed, 6 Sep 2023 02:15:13 +0300 Subject: [PATCH 16/25] onionready: always refer warnnear --- worker.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/worker.c b/worker.c index 1c954de..6c071db 100644 --- a/worker.c +++ b/worker.c @@ -130,6 +130,8 @@ static void onionready(char *sname,const u8 *secret,const u8 *pubonion,int warnn strcpy(&sname[onionendpos],pwarn); const size_t oprintlen = printlen; const size_t printlen = oprintlen + (warnnear ? strlen(pwarn)-1 : 0); +#else + (void) warnnear; #endif fwrite(&sname[printstartpos],printlen,1,fout); fflush(fout); From 1b00917e5296880a596cde82b0d7f564f40f11e0 Mon Sep 17 00:00:00 2001 From: cathugger Date: Wed, 6 Sep 2023 02:19:20 +0300 Subject: [PATCH 17/25] spaces/tabs fix --- main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index 7dbffee..10a51f6 100644 --- a/main.c +++ b/main.c @@ -90,8 +90,8 @@ VEC_STRUCT(tstatsvec,struct tstatstruct); static void printhelp(FILE *out,const char *progname) { fprintf(out, - // 0 1 2 3 4 5 6 7 - // 01234567890123456789012345678901234567890123456789012345678901234567890123456789 + // 0 1 2 3 4 5 6 7 + // 01234567890123456789012345678901234567890123456789012345678901234567890123456789 "Usage: %s FILTER [FILTER...] [OPTION]\n" " %s -f FILTERFILE [OPTION]\n" "Options:\n" @@ -613,8 +613,8 @@ int main(int argc,char **argv) if (deterministic) { if (!quietflag && numneedgenerate != 1 && !pw_skipnear && !pw_warnnear) fprintf(stderr, - // 0 1 2 3 4 5 6 7 - // 01234567890123456789012345678901234567890123456789012345678901234567890123456789 + // 0 1 2 3 4 5 6 7 + // 01234567890123456789012345678901234567890123456789012345678901234567890123456789 "CAUTION: avoid using keys generated with the same password for unrelated\n" " services, as single leaked key may help an attacker to regenerate\n" " related keys; to silence this warning, pass --skipnear or --warnnear.\n"); From 870c089a3c437005818a78b132f755f4796d6781 Mon Sep 17 00:00:00 2001 From: cathugger Date: Wed, 6 Sep 2023 02:24:14 +0300 Subject: [PATCH 18/25] better ruler fix --- main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index 10a51f6..213698a 100644 --- a/main.c +++ b/main.c @@ -90,8 +90,8 @@ VEC_STRUCT(tstatsvec,struct tstatstruct); static void printhelp(FILE *out,const char *progname) { fprintf(out, - // 0 1 2 3 4 5 6 7 - // 01234567890123456789012345678901234567890123456789012345678901234567890123456789 + // 1 2 3 4 5 6 7 + //1234567890123456789012345678901234567890123456789012345678901234567890123456789 "Usage: %s FILTER [FILTER...] [OPTION]\n" " %s -f FILTERFILE [OPTION]\n" "Options:\n" @@ -613,8 +613,8 @@ int main(int argc,char **argv) if (deterministic) { if (!quietflag && numneedgenerate != 1 && !pw_skipnear && !pw_warnnear) fprintf(stderr, - // 0 1 2 3 4 5 6 7 - // 01234567890123456789012345678901234567890123456789012345678901234567890123456789 + // 1 2 3 4 5 6 7 + //1234567890123456789012345678901234567890123456789012345678901234567890123456789 "CAUTION: avoid using keys generated with the same password for unrelated\n" " services, as single leaked key may help an attacker to regenerate\n" " related keys; to silence this warning, pass --skipnear or --warnnear.\n"); From 6d4034abf15f85e8df6f26e2accb208d71057e40 Mon Sep 17 00:00:00 2001 From: Yeonjun Kim Date: Mon, 23 Oct 2023 19:46:20 +0900 Subject: [PATCH 19/25] Update outdated URL in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8185082..645c789 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ along with this software. If not, see [CC0][]. * Passphrase-based generation code and idea used in `worker_batch()` contributed by [foobar2019][] -[v3]: https://gitweb.torproject.org/torspec.git/plain/rend-spec-v3.txt +[v3]: https://spec.torproject.org/rend-spec/index.html [OPTIMISATION]: ./OPTIMISATION.txt [#27]: https://github.com/cathugger/mkp224o/issues/27 [keccak.c]: https://github.com/XKCP/XKCP/blob/master/Standalone/CompactFIPS202/C/Keccak-more-compact.c From c72ddad656f19d695eb66f6122a52625d67c3a4c Mon Sep 17 00:00:00 2001 From: cathugger Date: Fri, 8 Dec 2023 17:32:51 +0000 Subject: [PATCH 20/25] README.md: attempt to use footnotes --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 645c789..bfa2f46 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## mkp224o - vanity address generator for ed25519 onion services -This tool generates vanity ed25519 ([hidden service version 3][v3], +This tool generates vanity ed25519 (hidden service version 3[^1][^2], formely known as proposal 224) onion addresses. ### Requirements for building @@ -131,7 +131,8 @@ along with this software. If not, see [CC0][]. * Passphrase-based generation code and idea used in `worker_batch()` contributed by [foobar2019][] -[v3]: https://spec.torproject.org/rend-spec/index.html +[^1]: https://spec.torproject.org/rend-spec/index.html +[^2]: https://gitlab.torproject.org/tpo/core/torspec/-/raw/main/attic/text_formats/rend-spec-v3.txt [OPTIMISATION]: ./OPTIMISATION.txt [#27]: https://github.com/cathugger/mkp224o/issues/27 [keccak.c]: https://github.com/XKCP/XKCP/blob/master/Standalone/CompactFIPS202/C/Keccak-more-compact.c From b0f394c17ac384b9367694a766e4fb1257f9b342 Mon Sep 17 00:00:00 2001 From: cathugger Date: Fri, 8 Dec 2023 17:34:42 +0000 Subject: [PATCH 21/25] README.md: attempt to fix --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bfa2f46..396fe2c 100644 --- a/README.md +++ b/README.md @@ -131,8 +131,6 @@ along with this software. If not, see [CC0][]. * Passphrase-based generation code and idea used in `worker_batch()` contributed by [foobar2019][] -[^1]: https://spec.torproject.org/rend-spec/index.html -[^2]: https://gitlab.torproject.org/tpo/core/torspec/-/raw/main/attic/text_formats/rend-spec-v3.txt [OPTIMISATION]: ./OPTIMISATION.txt [#27]: https://github.com/cathugger/mkp224o/issues/27 [keccak.c]: https://github.com/XKCP/XKCP/blob/master/Standalone/CompactFIPS202/C/Keccak-more-compact.c @@ -141,3 +139,5 @@ along with this software. If not, see [CC0][]. [ed25519-donna]: https://github.com/floodyberry/ed25519-donna [horse25519]: https://github.com/Yawning/horse25519 [foobar2019]: https://github.com/foobar2019 +[^1]: https://spec.torproject.org/rend-spec/index.html +[^2]: https://gitlab.torproject.org/tpo/core/torspec/-/raw/main/attic/text_formats/rend-spec-v3.txt From a3add1b889ef09ba2bae8928c748c6c2c850b1a9 Mon Sep 17 00:00:00 2001 From: cathugger Date: Sat, 20 Jan 2024 10:54:04 +0000 Subject: [PATCH 22/25] add packages needed to build release --- contrib/release-scripts/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 contrib/release-scripts/README.md diff --git a/contrib/release-scripts/README.md b/contrib/release-scripts/README.md new file mode 100644 index 0000000..9e9a0df --- /dev/null +++ b/contrib/release-scripts/README.md @@ -0,0 +1,2 @@ +packages that work on archlinux: +wine-wow64 mingw-w64-toolchain mingw-w64-ldd mingw-w64-pcre2 mingw-w64-libsodium zopfli From 3e7aaf8a3a9cbbed56872afeef88c7a9d538d51a Mon Sep 17 00:00:00 2001 From: cathugger Date: Sat, 20 Jan 2024 12:47:34 +0000 Subject: [PATCH 23/25] add dep --- contrib/release-scripts/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/release-scripts/README.md b/contrib/release-scripts/README.md index 9e9a0df..6ec2370 100644 --- a/contrib/release-scripts/README.md +++ b/contrib/release-scripts/README.md @@ -1,2 +1,2 @@ packages that work on archlinux: -wine-wow64 mingw-w64-toolchain mingw-w64-ldd mingw-w64-pcre2 mingw-w64-libsodium zopfli +wine-wow64 mingw-w64-toolchain mingw-w64-ldd mingw-w64-pcre2 mingw-w64-libsodium zip zopfli From fb5320a5374674a01ab904c1d018a77f3599ced8 Mon Sep 17 00:00:00 2001 From: cathugger Date: Mon, 22 Jan 2024 05:08:12 +0000 Subject: [PATCH 24/25] gpg TZ --- contrib/release-scripts/release.sh | 4 ++-- contrib/release-scripts/sign.sh | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/contrib/release-scripts/release.sh b/contrib/release-scripts/release.sh index 55fb703..caf57f4 100755 --- a/contrib/release-scripts/release.sh +++ b/contrib/release-scripts/release.sh @@ -72,8 +72,8 @@ export PATH=$OPATH cd "$D/out" tar --portability --no-acls --no-selinux --no-xattrs --owner root:0 --group=root:0 --sort=name -c -f $SV-src.tar $SV -zopfli -c $SV-src.tar > $SV-src.tar.gz -zstd -19 -f $SV-src.tar -o $SV-src.tar.zst +zopfli -i100 -c $SV-src.tar > $SV-src.tar.gz +zstd -19 -f $SV-src.tar -o $SV-src.tar.zst rm $SV-src.tar zip -9 -X -r $SV-w32.zip $SV-w32 diff --git a/contrib/release-scripts/sign.sh b/contrib/release-scripts/sign.sh index 597e89c..2253276 100755 --- a/contrib/release-scripts/sign.sh +++ b/contrib/release-scripts/sign.sh @@ -10,6 +10,8 @@ D=$(realpath "$0") D=$(dirname "$D") cd "$D" +export TZ=UTC + cd out gpg --detach-sign -u "$1" mkp224o-*-src.tar.gz From 5172c0fd71740ca0b11da8149a2575dcf331d7ab Mon Sep 17 00:00:00 2001 From: cathugger Date: Thu, 15 Feb 2024 21:48:15 +0000 Subject: [PATCH 25/25] make depends --- GNUmakefile.in | 258 ++++++++++++++++++++++++------------------------- 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/GNUmakefile.in b/GNUmakefile.in index f80b506..7516a1c 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -268,115 +268,115 @@ ed25519/amd64-51-30k/sign.c.o: ed25519/amd64-51-30k/ge25519.h ed25519/amd64-51-30k/sign.c.o: ed25519/amd64-51-30k/fe25519.h ed25519/amd64-51-30k/sign.c.o: ed25519/amd64-51-30k/compat.h ed25519/amd64-51-30k/sign.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/fe25519_batchinvert.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/fe25519_batchinvert.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/fe25519_getparity.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/fe25519_getparity.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/fe25519_invert.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/fe25519_invert.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/fe25519_iseq.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/fe25519_iseq.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/fe25519_iszero.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/fe25519_iszero.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/fe25519_neg.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/fe25519_neg.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/fe25519_pack.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/fe25519_pack.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/fe25519_pow2523.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/fe25519_pow2523.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/fe25519_setint.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/fe25519_setint.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/fe25519_unpack.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/fe25519_unpack.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/ge25519_add.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/ge25519_add.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/ge25519_add.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/ge25519_add.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/ge25519_base.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/ge25519_base.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/ge25519_base.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/ge25519_base.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/ge25519_batchpack.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/ge25519_batchpack.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/ge25519_batchpack.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/ge25519_batchpack.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/ge25519_double.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/ge25519_double.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/ge25519_double.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/ge25519_double.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/ge25519_double_scalarmult.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/ge25519_double_scalarmult.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/ge25519_double_scalarmult.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/ge25519_double_scalarmult.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/ge25519_double_scalarmult.c.o: ed25519/amd64-51-30k/ge25519_base_slide_multiples.data -ed25519/amd64-64-24k/ge25519_isneutral.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/ge25519_isneutral.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/ge25519_isneutral.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/ge25519_isneutral.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/ge25519_multi_scalarmult.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/ge25519_multi_scalarmult.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/ge25519_multi_scalarmult.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/ge25519_multi_scalarmult.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/ge25519_multi_scalarmult.c.o: ed25519/amd64-51-30k/index_heap.h -ed25519/amd64-64-24k/ge25519_pack.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/ge25519_pack.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/ge25519_pack.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/ge25519_pack.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/ge25519_scalarmult_base.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/ge25519_scalarmult_base.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/ge25519_scalarmult_base.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/ge25519_scalarmult_base.c.o: ed25519/amd64-51-30k/ge25519.h +ed25519/amd64-64-24k/fe25519_batchinvert.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/fe25519_batchinvert.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/fe25519_getparity.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/fe25519_getparity.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/fe25519_invert.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/fe25519_invert.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/fe25519_iseq.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/fe25519_iseq.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/fe25519_iszero.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/fe25519_iszero.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/fe25519_neg.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/fe25519_neg.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/fe25519_pack.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/fe25519_pack.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/fe25519_pow2523.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/fe25519_pow2523.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/fe25519_setint.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/fe25519_setint.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/fe25519_unpack.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/fe25519_unpack.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/ge25519_add.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/ge25519_add.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/ge25519_add.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/ge25519_add.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/ge25519_base.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/ge25519_base.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/ge25519_base.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/ge25519_base.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/ge25519_batchpack.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/ge25519_batchpack.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/ge25519_batchpack.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/ge25519_batchpack.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/ge25519_double.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/ge25519_double.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/ge25519_double.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/ge25519_double.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/ge25519_double_scalarmult.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/ge25519_double_scalarmult.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/ge25519_double_scalarmult.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/ge25519_double_scalarmult.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/ge25519_double_scalarmult.c.o: ed25519/amd64-64-24k/ge25519_base_slide_multiples.data +ed25519/amd64-64-24k/ge25519_isneutral.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/ge25519_isneutral.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/ge25519_isneutral.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/ge25519_isneutral.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/ge25519_multi_scalarmult.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/ge25519_multi_scalarmult.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/ge25519_multi_scalarmult.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/ge25519_multi_scalarmult.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/ge25519_multi_scalarmult.c.o: ed25519/amd64-64-24k/index_heap.h +ed25519/amd64-64-24k/ge25519_pack.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/ge25519_pack.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/ge25519_pack.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/ge25519_pack.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/ge25519_scalarmult_base.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/ge25519_scalarmult_base.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/ge25519_scalarmult_base.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/ge25519_scalarmult_base.c.o: ed25519/amd64-64-24k/ge25519.h ed25519/amd64-64-24k/ge25519_scalarmult_base.c.o: ed25519/amd64-64-24k/ge25519_base_niels.data -ed25519/amd64-64-24k/ge25519_unpackneg.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/ge25519_unpackneg.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/ge25519_unpackneg.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/ge25519_unpackneg.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/hram.c.o: ed25519/amd64-51-30k/crypto_hash_sha512.h -ed25519/amd64-64-24k/hram.c.o: ed25519/amd64-51-30k/hram.h -ed25519/amd64-64-24k/index_heap.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/index_heap.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/index_heap.c.o: ed25519/amd64-51-30k/index_heap.h -ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-51-30k/crypto_sign.h -ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-51-30k/ed25519.h -ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-51-30k/crypto_hash_sha512.h -ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-51-30k/randombytes.h -ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/open.c.o: ed25519/amd64-51-30k/crypto_sign.h -ed25519/amd64-64-24k/open.c.o: ed25519/amd64-51-30k/ed25519.h -ed25519/amd64-64-24k/open.c.o: ed25519/amd64-51-30k/crypto_verify_32.h -ed25519/amd64-64-24k/open.c.o: ed25519/amd64-51-30k/crypto_hash_sha512.h -ed25519/amd64-64-24k/open.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/open.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/open.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/open.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/sc25519_from32bytes.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/sc25519_from32bytes.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/sc25519_from64bytes.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/sc25519_from64bytes.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/sc25519_from_shortsc.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/sc25519_from_shortsc.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/sc25519_iszero.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/sc25519_iszero.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/sc25519_mul.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/sc25519_mul.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/sc25519_mul_shortsc.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/sc25519_mul_shortsc.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/sc25519_slide.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/sc25519_slide.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/sc25519_to32bytes.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/sc25519_to32bytes.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/sc25519_window4.c.o: ed25519/amd64-51-30k/sc25519.h -ed25519/amd64-64-24k/sc25519_window4.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-51-30k/crypto_sign.h -ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-51-30k/ed25519.h -ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-51-30k/crypto_hash_sha512.h -ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-51-30k/ge25519.h -ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-51-30k/fe25519.h -ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-51-30k/compat.h -ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-51-30k/sc25519.h +ed25519/amd64-64-24k/ge25519_unpackneg.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/ge25519_unpackneg.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/ge25519_unpackneg.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/ge25519_unpackneg.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/hram.c.o: ed25519/amd64-64-24k/crypto_hash_sha512.h +ed25519/amd64-64-24k/hram.c.o: ed25519/amd64-64-24k/hram.h +ed25519/amd64-64-24k/index_heap.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/index_heap.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/index_heap.c.o: ed25519/amd64-64-24k/index_heap.h +ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-64-24k/crypto_sign.h +ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-64-24k/ed25519.h +ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-64-24k/crypto_hash_sha512.h +ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-64-24k/randombytes.h +ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/keypair.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/open.c.o: ed25519/amd64-64-24k/crypto_sign.h +ed25519/amd64-64-24k/open.c.o: ed25519/amd64-64-24k/ed25519.h +ed25519/amd64-64-24k/open.c.o: ed25519/amd64-64-24k/crypto_verify_32.h +ed25519/amd64-64-24k/open.c.o: ed25519/amd64-64-24k/crypto_hash_sha512.h +ed25519/amd64-64-24k/open.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/open.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/open.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/open.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/sc25519_from32bytes.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/sc25519_from32bytes.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/sc25519_from64bytes.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/sc25519_from64bytes.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/sc25519_from_shortsc.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/sc25519_from_shortsc.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/sc25519_iszero.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/sc25519_iszero.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/sc25519_mul.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/sc25519_mul.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/sc25519_mul_shortsc.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/sc25519_mul_shortsc.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/sc25519_slide.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/sc25519_slide.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/sc25519_to32bytes.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/sc25519_to32bytes.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/sc25519_window4.c.o: ed25519/amd64-64-24k/sc25519.h +ed25519/amd64-64-24k/sc25519_window4.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-64-24k/crypto_sign.h +ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-64-24k/ed25519.h +ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-64-24k/crypto_hash_sha512.h +ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-64-24k/ge25519.h +ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-64-24k/fe25519.h +ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-64-24k/compat.h +ed25519/amd64-64-24k/sign.c.o: ed25519/amd64-64-24k/sc25519.h ed25519/ref10/fe_0.c.o: ed25519/ref10/fe.h ed25519/ref10/crypto_int32.h ed25519/ref10/fe_1.c.o: ed25519/ref10/fe.h ed25519/ref10/crypto_int32.h ed25519/ref10/fe_add.c.o: ed25519/ref10/fe.h ed25519/ref10/crypto_int32.h @@ -394,7 +394,7 @@ ed25519/ref10/fe_isnegative.c.o: ed25519/ref10/fe.h ed25519/ref10/fe_isnegative.c.o: ed25519/ref10/crypto_int32.h ed25519/ref10/fe_isnonzero.c.o: ed25519/ref10/fe.h ed25519/ref10/fe_isnonzero.c.o: ed25519/ref10/crypto_int32.h -ed25519/ref10/fe_isnonzero.c.o: ed25519/amd64-51-30k/crypto_verify_32.h +ed25519/ref10/fe_isnonzero.c.o: ed25519/ref10/crypto_verify_32.h ed25519/ref10/fe_mul.c.o: ed25519/ref10/fe.h ed25519/ref10/crypto_int32.h ed25519/ref10/fe_mul.c.o: ed25519/ref10/crypto_int64.h ed25519/ref10/fe_neg.c.o: ed25519/ref10/fe.h ed25519/ref10/crypto_int32.h @@ -453,29 +453,27 @@ ed25519/ref10/ge_sub.c.o: ed25519/ref10/ge.h ed25519/ref10/fe.h ed25519/ref10/ge_sub.c.o: ed25519/ref10/crypto_int32.h ed25519/ref10/ge_sub.h ed25519/ref10/ge_tobytes.c.o: ed25519/ref10/ge.h ed25519/ref10/fe.h ed25519/ref10/ge_tobytes.c.o: ed25519/ref10/crypto_int32.h -ed25519/ref10/keypair.c.o: ed25519/amd64-51-30k/randombytes.h -ed25519/ref10/keypair.c.o: ed25519/amd64-51-30k/crypto_sign.h -ed25519/ref10/keypair.c.o: ed25519/amd64-51-30k/ed25519.h -ed25519/ref10/keypair.c.o: ed25519/amd64-51-30k/crypto_hash_sha512.h +ed25519/ref10/keypair.c.o: ed25519/ref10/randombytes.h +ed25519/ref10/keypair.c.o: ed25519/ref10/crypto_sign.h +ed25519/ref10/keypair.c.o: ed25519/ref10/ed25519.h +ed25519/ref10/keypair.c.o: ed25519/ref10/crypto_hash_sha512.h ed25519/ref10/keypair.c.o: ed25519/ref10/ge.h ed25519/ref10/fe.h ed25519/ref10/keypair.c.o: ed25519/ref10/crypto_int32.h -ed25519/ref10/open.c.o: ed25519/amd64-51-30k/crypto_sign.h -ed25519/ref10/open.c.o: ed25519/amd64-51-30k/ed25519.h -ed25519/ref10/open.c.o: ed25519/amd64-51-30k/crypto_hash_sha512.h -ed25519/ref10/open.c.o: ed25519/amd64-51-30k/crypto_verify_32.h -ed25519/ref10/open.c.o: ed25519/ref10/ge.h ed25519/ref10/fe.h -ed25519/ref10/open.c.o: ed25519/ref10/crypto_int32.h ed25519/ref10/sc.h +ed25519/ref10/open.c.o: ed25519/ref10/crypto_sign.h ed25519/ref10/ed25519.h +ed25519/ref10/open.c.o: ed25519/ref10/crypto_hash_sha512.h +ed25519/ref10/open.c.o: ed25519/ref10/crypto_verify_32.h ed25519/ref10/ge.h +ed25519/ref10/open.c.o: ed25519/ref10/fe.h ed25519/ref10/crypto_int32.h +ed25519/ref10/open.c.o: ed25519/ref10/sc.h ed25519/ref10/sc_muladd.c.o: ed25519/ref10/sc.h ed25519/ref10/crypto_int64.h ed25519/ref10/sc_muladd.c.o: ed25519/ref10/crypto_uint32.h ed25519/ref10/sc_muladd.c.o: ed25519/ref10/crypto_uint64.h ed25519/ref10/sc_reduce.c.o: ed25519/ref10/sc.h ed25519/ref10/crypto_int64.h ed25519/ref10/sc_reduce.c.o: ed25519/ref10/crypto_uint32.h ed25519/ref10/sc_reduce.c.o: ed25519/ref10/crypto_uint64.h -ed25519/ref10/sign.c.o: ed25519/amd64-51-30k/crypto_sign.h -ed25519/ref10/sign.c.o: ed25519/amd64-51-30k/ed25519.h -ed25519/ref10/sign.c.o: ed25519/amd64-51-30k/crypto_hash_sha512.h -ed25519/ref10/sign.c.o: ed25519/ref10/ge.h ed25519/ref10/fe.h -ed25519/ref10/sign.c.o: ed25519/ref10/crypto_int32.h ed25519/ref10/sc.h +ed25519/ref10/sign.c.o: ed25519/ref10/crypto_sign.h ed25519/ref10/ed25519.h +ed25519/ref10/sign.c.o: ed25519/ref10/crypto_hash_sha512.h ed25519/ref10/ge.h +ed25519/ref10/sign.c.o: ed25519/ref10/fe.h ed25519/ref10/crypto_int32.h +ed25519/ref10/sign.c.o: ed25519/ref10/sc.h ioutil.c.o: types.h ioutil.h vec.h keccak.c.o: types.h keccak.h main.c.o: types.h vec.h base32.h cpucount.h keccak.h ioutil.h common.h yaml.h @@ -486,14 +484,16 @@ test_base32.c.o: types.h base32.h test_base64.c.o: types.h base64.h test_ed25519.c.o: types.h base16.h ed25519/ed25519.h test_ed25519.c.o: ed25519/ed25519_impl_pre.h ed25519/ref10/crypto_sign.h -test_ed25519.c.o: ed25519/amd64-51-30k/ed25519.h ed25519/ref10/ge.h +test_ed25519.c.o: ed25519/ref10/ed25519.h ed25519/ref10/ge.h test_ed25519.c.o: ed25519/ref10/fe.h ed25519/ref10/crypto_int32.h test_ed25519.c.o: ed25519/amd64-51-30k/crypto_sign.h +test_ed25519.c.o: ed25519/amd64-51-30k/ed25519.h test_ed25519.c.o: ed25519/amd64-51-30k/ge25519.h test_ed25519.c.o: ed25519/amd64-51-30k/fe25519.h test_ed25519.c.o: ed25519/amd64-51-30k/compat.h test_ed25519.c.o: ed25519/amd64-51-30k/sc25519.h test_ed25519.c.o: ed25519/amd64-64-24k/crypto_sign.h +test_ed25519.c.o: ed25519/amd64-64-24k/ed25519.h test_ed25519.c.o: ed25519/amd64-64-24k/ge25519.h test_ed25519.c.o: ed25519/ed25519-donna/ed25519-donna.h test_ed25519.c.o: ed25519/ed25519-donna/ed25519-donna-portable.h @@ -519,12 +519,12 @@ worker.c.o: types.h likely.h vec.h base32.h keccak.h ioutil.h common.h yaml.h worker.c.o: worker.h filters.h filters_inc.inc.h filters_worker.inc.h worker.c.o: filters_common.inc.h ed25519/ed25519.h worker_impl.inc.h worker.c.o: ed25519/ed25519_impl_pre.h ed25519/ref10/crypto_sign.h -worker.c.o: ed25519/amd64-51-30k/ed25519.h ed25519/ref10/ge.h -worker.c.o: ed25519/ref10/fe.h ed25519/ref10/crypto_int32.h -worker.c.o: ed25519/amd64-51-30k/crypto_sign.h ed25519/amd64-51-30k/ge25519.h +worker.c.o: ed25519/ref10/ed25519.h ed25519/ref10/ge.h ed25519/ref10/fe.h +worker.c.o: ed25519/ref10/crypto_int32.h ed25519/amd64-51-30k/crypto_sign.h +worker.c.o: ed25519/amd64-51-30k/ed25519.h ed25519/amd64-51-30k/ge25519.h worker.c.o: ed25519/amd64-51-30k/fe25519.h ed25519/amd64-51-30k/compat.h worker.c.o: ed25519/amd64-51-30k/sc25519.h ed25519/amd64-64-24k/crypto_sign.h -worker.c.o: ed25519/amd64-64-24k/ge25519.h +worker.c.o: ed25519/amd64-64-24k/ed25519.h ed25519/amd64-64-24k/ge25519.h worker.c.o: ed25519/ed25519-donna/ed25519-donna.h worker.c.o: ed25519/ed25519-donna/ed25519-donna-portable.h worker.c.o: ed25519/ed25519-donna/ed25519-donna-portable-identify.h