Upgrade blst & remove sha256 patch (#85)

This commit is contained in:
Justin Traglia 2023-01-25 21:07:15 +01:00 committed by GitHub
parent 8907fbcfe2
commit 0a18868475
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 5 additions and 66 deletions

1
.gitmodules vendored
View File

@ -1,4 +1,3 @@
[submodule "blst"]
path = blst
url = https://github.com/supranational/blst
ignore = dirty # because we apply a patch

View File

@ -27,11 +27,7 @@ CLANG_FLAGS += -DFIELD_ELEMENTS_PER_BLOB=$(FIELD_ELEMENTS_PER_BLOB)
TARGETS=ckzg.c ../../src/c_kzg_4844.c ../../blst/$(BLST_OBJ)
.blst:
cd ../../blst &&\
git apply ../blst_sha.patch &&\
$(BLST_BUILDSCRIPT) &&\
git apply -R ../blst_sha.patch &&\
cd ../bindings/csharp
cd ../../blst && $(BLST_BUILDSCRIPT)
.ckzg:
$(CLANG_EXECUTABLE) -O -Wall -shared $(CLANG_FLAGS) ${addprefix -I,${INCLUDE_DIRS}} -o $(CKZG_LIBRARY_PATH) $(TARGETS)

2
blst

@ -1 +1 @@
Subproject commit 6382d67c72119d563975892ed49ba32e92d3d0da
Subproject commit ca03e11a3ff24d818ae390a1e7f435f15bf72aee

View File

@ -1,31 +0,0 @@
diff --git a/src/sha256.h b/src/sha256.h
index 77ddb6d..67ccf7a 100644
--- a/src/sha256.h
+++ b/src/sha256.h
@@ -49,7 +49,7 @@ static void sha256_init_h(unsigned int h[8])
h[7] = 0x5be0cd19U;
}
-static void sha256_init(SHA256_CTX *ctx)
+void sha256_init(SHA256_CTX *ctx)
{
sha256_init_h(ctx->h);
ctx->N = 0;
@@ -57,7 +57,7 @@ static void sha256_init(SHA256_CTX *ctx)
ctx->off = 0;
}
-static void sha256_update(SHA256_CTX *ctx, const void *_inp, size_t len)
+void sha256_update(SHA256_CTX *ctx, const void *_inp, size_t len)
{
size_t n;
const unsigned char *inp = _inp;
@@ -116,7 +116,7 @@ static void sha256_emit(unsigned char md[32], const unsigned int h[8])
}
#endif
-static void sha256_final(unsigned char md[32], SHA256_CTX *ctx)
+void sha256_final(unsigned char md[32], SHA256_CTX *ctx)
{
unsigned long long bits = ctx->N * 8;
size_t n = ctx->off;

View File

@ -16,11 +16,8 @@ all: c_kzg_4844.o lib
c_kzg_4844.o: c_kzg_4844.c Makefile
${CLANG_EXECUTABLE} -Wall -I$(INCLUDE_DIRS) -DFIELD_ELEMENTS_PER_BLOB=$(FIELD_ELEMENTS_PER_BLOB) $(CFLAGS) -c $<
# Will fail with "patch does not apply" if it has already been patched.
# Safe to ignore.
blst:
cd ../blst; \
git apply < ../blst_sha.patch; \
${BLST_BUILD_SCRIPT} && \
cp libblst.a ../lib && \
cp bindings/*.h ../inc

View File

@ -527,28 +527,6 @@ static void bytes_of_uint64(uint8_t out[8], uint64_t n) {
}
}
///////////////////////////////////////////////////////////////////////////////
// SHA-256 Hash Functions
///////////////////////////////////////////////////////////////////////////////
typedef struct {
unsigned int h[8];
unsigned long long N;
unsigned char buf[64];
size_t off;
} SHA256_CTX;
void sha256_init(SHA256_CTX *ctx);
void sha256_update(SHA256_CTX *ctx, const void *_inp, size_t len);
void sha256_final(unsigned char md[32], SHA256_CTX *ctx);
static void hash(uint8_t md[32], const uint8_t *input, size_t n) {
SHA256_CTX ctx;
sha256_init(&ctx);
sha256_update(&ctx, input, n);
sha256_final(md, &ctx);
}
///////////////////////////////////////////////////////////////////////////////
// Bit-reversal Permutation Functions
///////////////////////////////////////////////////////////////////////////////
@ -724,7 +702,7 @@ static C_KZG_RET compute_challenges(fr_t *eval_challenge_out, fr_t *r_powers_out
/* Now let's create challenges! */
uint8_t hashed_data[32] = {0};
hash(hashed_data, bytes, nb);
blst_sha256(hashed_data, bytes, nb);
/* We will use hash_input in the computation of both challenges */
uint8_t hash_input[33];
@ -733,7 +711,7 @@ static C_KZG_RET compute_challenges(fr_t *eval_challenge_out, fr_t *r_powers_out
Bytes32 r_bytes;
memcpy(hash_input, hashed_data, 32);
hash_input[32] = 0x0;
hash(r_bytes.bytes, hash_input, 33);
blst_sha256(r_bytes.bytes, hash_input, 33);
/* Compute r_powers */
fr_t r;
@ -743,7 +721,7 @@ static C_KZG_RET compute_challenges(fr_t *eval_challenge_out, fr_t *r_powers_out
/* Compute eval_challenge */
Bytes32 eval_challenge;
hash_input[32] = 0x1;
hash(eval_challenge.bytes, hash_input, 33);
blst_sha256(eval_challenge.bytes, hash_input, 33);
hash_to_bls_field(eval_challenge_out, &eval_challenge);
free(bytes);