summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Groffen <grobian@gentoo.org>2017-11-27 14:06:55 +0100
committerFabian Groffen <grobian@gentoo.org>2017-11-27 14:06:55 +0100
commit192190568f7ef7b98695c88b20d92ef1e90b516b (patch)
treeabdb8f0790b9b2d6e5ba6df4f7a61fefd14f4c64
parenthashgen: phase 1, add BLAKE2B hashing (diff)
downloadprefix-19219056.tar.gz
prefix-19219056.tar.bz2
prefix-19219056.zip
hashgen: activate new hash set
-rw-r--r--scripts/rsync-generation/hashgen.c65
1 files changed, 47 insertions, 18 deletions
diff --git a/scripts/rsync-generation/hashgen.c b/scripts/rsync-generation/hashgen.c
index fed99a3132..ddc52752b4 100644
--- a/scripts/rsync-generation/hashgen.c
+++ b/scripts/rsync-generation/hashgen.c
@@ -20,6 +20,15 @@
* ${CC} -o hashgen -fopenmp ${CFLAGS} -lssl -lcrypto -lb2 hashgen.c
*/
+enum hash_impls {
+ HASH_SHA256 = 1<<0,
+ HASH_SHA512 = 1<<1,
+ HASH_WHIRLPOOL = 1<<2,
+ HASH_BLAKE2B = 1<<3
+};
+/* default changed from sha256, sha512, whirlpool to blake2b, sha512 */
+static int hashes = HASH_BLAKE2B | HASH_SHA512;
+
static inline void
hex_hash(char *out, const unsigned char *buf, const int length)
{
@@ -61,19 +70,23 @@ write_hashes(const char *root, const char *name, const char *type, FILE *m)
{
#pragma omp section
{
- SHA256_Update(&s256, data, len);
+ if (hashes & HASH_SHA256)
+ SHA256_Update(&s256, data, len);
}
#pragma omp section
{
- SHA512_Update(&s512, data, len);
+ if (hashes & HASH_SHA512)
+ SHA512_Update(&s512, data, len);
}
#pragma omp section
{
- WHIRLPOOL_Update(&whrl, data, len);
+ if (hashes & HASH_WHIRLPOOL)
+ WHIRLPOOL_Update(&whrl, data, len);
}
#pragma omp section
{
- blake2b_update(&bl2b, data, len);
+ if (hashes & HASH_BLAKE2B)
+ blake2b_update(&bl2b, data, len);
}
}
}
@@ -81,33 +94,49 @@ write_hashes(const char *root, const char *name, const char *type, FILE *m)
#pragma omp parallel sections
{
{
- unsigned char sha256buf[SHA256_DIGEST_LENGTH];
- SHA256_Final(sha256buf, &s256);
- hex_hash(sha256, sha256buf, SHA256_DIGEST_LENGTH);
+ if (hashes & HASH_SHA256) {
+ unsigned char sha256buf[SHA256_DIGEST_LENGTH];
+ SHA256_Final(sha256buf, &s256);
+ hex_hash(sha256, sha256buf, SHA256_DIGEST_LENGTH);
+ }
}
#pragma omp section
{
- unsigned char sha512buf[SHA512_DIGEST_LENGTH];
- SHA512_Final(sha512buf, &s512);
- hex_hash(sha512, sha512buf, SHA512_DIGEST_LENGTH);
+ if (hashes & HASH_SHA512) {
+ unsigned char sha512buf[SHA512_DIGEST_LENGTH];
+ SHA512_Final(sha512buf, &s512);
+ hex_hash(sha512, sha512buf, SHA512_DIGEST_LENGTH);
+ }
}
#pragma omp section
{
- unsigned char whrlplbuf[WHIRLPOOL_DIGEST_LENGTH];
- WHIRLPOOL_Final(whrlplbuf, &whrl);
- hex_hash(whrlpl, whrlplbuf, WHIRLPOOL_DIGEST_LENGTH);
+ if (hashes & HASH_WHIRLPOOL) {
+ unsigned char whrlplbuf[WHIRLPOOL_DIGEST_LENGTH];
+ WHIRLPOOL_Final(whrlplbuf, &whrl);
+ hex_hash(whrlpl, whrlplbuf, WHIRLPOOL_DIGEST_LENGTH);
+ }
}
#pragma omp section
{
- unsigned char blak2bbuf[BLAKE2B_OUTBYTES];
- blake2b_final(&bl2b, blak2bbuf, BLAKE2B_OUTBYTES);
- hex_hash(blak2b, blak2bbuf, WHIRLPOOL_DIGEST_LENGTH);
+ if (hashes & HASH_BLAKE2B) {
+ unsigned char blak2bbuf[BLAKE2B_OUTBYTES];
+ blake2b_final(&bl2b, blak2bbuf, BLAKE2B_OUTBYTES);
+ hex_hash(blak2b, blak2bbuf, WHIRLPOOL_DIGEST_LENGTH);
+ }
}
}
fclose(f);
- fprintf(m, "%s %s %zd SHA256 %s SHA512 %s WHIRLPOOL %s BLAKE2B %s\n",
- type, name, flen, sha256, sha512, whrlpl, blak2b);
+ fprintf(m, "%s %s %zd",type, name, flen);
+ if (hashes & HASH_BLAKE2B)
+ fprintf(m, " BLAKE2B %s", blak2b);
+ if (hashes & HASH_SHA256)
+ fprintf(m, " SHA256 %s", sha256);
+ if (hashes & HASH_SHA512)
+ fprintf(m, " SHA512 %s", sha512);
+ if (hashes & HASH_WHIRLPOOL)
+ fprintf(m, " WHIRLPOOL %s", whrlpl);
+ fprintf(m, "\n");
}
static char