mirror of
https://github.com/status-im/c-kzg-4844.git
synced 2025-02-17 20:48:07 +00:00
nim-bindings: fix GCC-14 [-Wincompatible-pointer-types] issue (#430)
This commit is contained in:
parent
b87053224e
commit
d7511cd728
@ -130,7 +130,7 @@ proc toCommitment*(ctx: KzgCtx,
|
|||||||
blob: KzgBlob):
|
blob: KzgBlob):
|
||||||
Result[KzgCommitment, string] {.gcsafe.} =
|
Result[KzgCommitment, string] {.gcsafe.} =
|
||||||
var ret: KzgCommitment
|
var ret: KzgCommitment
|
||||||
let res = blob_to_kzg_commitment(ret, blob, ctx.val)
|
let res = blob_to_kzg_commitment(ret, blob.getPtr, ctx.val)
|
||||||
verify(res, ret)
|
verify(res, ret)
|
||||||
|
|
||||||
proc computeProof*(ctx: KzgCtx,
|
proc computeProof*(ctx: KzgCtx,
|
||||||
@ -140,8 +140,8 @@ proc computeProof*(ctx: KzgCtx,
|
|||||||
let res = compute_kzg_proof(
|
let res = compute_kzg_proof(
|
||||||
ret.proof,
|
ret.proof,
|
||||||
ret.y,
|
ret.y,
|
||||||
blob,
|
blob.getPtr,
|
||||||
z,
|
z.getPtr,
|
||||||
ctx.val)
|
ctx.val)
|
||||||
verify(res, ret)
|
verify(res, ret)
|
||||||
|
|
||||||
@ -151,8 +151,8 @@ proc computeProof*(ctx: KzgCtx,
|
|||||||
var proof: KzgProof
|
var proof: KzgProof
|
||||||
let res = compute_blob_kzg_proof(
|
let res = compute_blob_kzg_proof(
|
||||||
proof,
|
proof,
|
||||||
blob,
|
blob.getPtr,
|
||||||
commitmentBytes,
|
commitmentBytes.getPtr,
|
||||||
ctx.val)
|
ctx.val)
|
||||||
verify(res, proof)
|
verify(res, proof)
|
||||||
|
|
||||||
@ -164,10 +164,10 @@ proc verifyProof*(ctx: KzgCtx,
|
|||||||
var valid: bool
|
var valid: bool
|
||||||
let res = verify_kzg_proof(
|
let res = verify_kzg_proof(
|
||||||
valid,
|
valid,
|
||||||
commitment,
|
commitment.getPtr,
|
||||||
z,
|
z.getPtr,
|
||||||
y,
|
y.getPtr,
|
||||||
proof,
|
proof.getPtr,
|
||||||
ctx.val)
|
ctx.val)
|
||||||
verify(res, valid)
|
verify(res, valid)
|
||||||
|
|
||||||
@ -178,9 +178,9 @@ proc verifyProof*(ctx: KzgCtx,
|
|||||||
var valid: bool
|
var valid: bool
|
||||||
let res = verify_blob_kzg_proof(
|
let res = verify_blob_kzg_proof(
|
||||||
valid,
|
valid,
|
||||||
blob,
|
blob.getPtr,
|
||||||
commitment,
|
commitment.getPtr,
|
||||||
proof,
|
proof.getPtr,
|
||||||
ctx.val)
|
ctx.val)
|
||||||
verify(res, valid)
|
verify(res, valid)
|
||||||
|
|
||||||
|
@ -57,15 +57,21 @@ type
|
|||||||
header: "c_kzg_4844.h", byref.} = object
|
header: "c_kzg_4844.h", byref.} = object
|
||||||
|
|
||||||
# A basic blob data.
|
# A basic blob data.
|
||||||
KzgBlob* = array[KzgBlobSize, byte]
|
KzgBlob* {.importc: "Blob",
|
||||||
|
header: "c_kzg_4844.h".} = object
|
||||||
|
bytes*: array[KzgBlobSize, uint8]
|
||||||
|
|
||||||
# An array of 48 bytes. Represents an untrusted
|
# An array of 48 bytes. Represents an untrusted
|
||||||
# (potentially invalid) commitment/proof.
|
# (potentially invalid) commitment/proof.
|
||||||
KzgBytes48* = array[48, byte]
|
KzgBytes48* {.importc: "Bytes48",
|
||||||
|
header: "c_kzg_4844.h".} = object
|
||||||
|
bytes*: array[48, uint8]
|
||||||
|
|
||||||
# An array of 32 bytes. Represents an untrusted
|
# An array of 32 bytes. Represents an untrusted
|
||||||
# (potentially invalid) field element.
|
# (potentially invalid) field element.
|
||||||
KzgBytes32* = array[32, byte]
|
KzgBytes32* {.importc: "Bytes32",
|
||||||
|
header: "c_kzg_4844.h".} = object
|
||||||
|
bytes*: array[32, uint8]
|
||||||
|
|
||||||
# A trusted (valid) KZG commitment.
|
# A trusted (valid) KZG commitment.
|
||||||
KzgCommitment* = KzgBytes48
|
KzgCommitment* = KzgBytes48
|
||||||
@ -87,31 +93,31 @@ proc load_trusted_setup_file*(res: KzgSettings,
|
|||||||
proc free_trusted_setup*(s: KzgSettings) {.kzg_abi.}
|
proc free_trusted_setup*(s: KzgSettings) {.kzg_abi.}
|
||||||
|
|
||||||
proc blob_to_kzg_commitment*(res: var KzgCommitment,
|
proc blob_to_kzg_commitment*(res: var KzgCommitment,
|
||||||
blob: KzgBlob,
|
blob: ptr KzgBlob,
|
||||||
s: KzgSettings): KZG_RET {.kzg_abi.}
|
s: KzgSettings): KZG_RET {.kzg_abi.}
|
||||||
|
|
||||||
proc compute_kzg_proof*(res: var KzgProof,
|
proc compute_kzg_proof*(res: var KzgProof,
|
||||||
yOut: var KzgBytes32,
|
yOut: var KzgBytes32,
|
||||||
blob: KzgBlob,
|
blob: ptr KzgBlob,
|
||||||
zBytes: KzgBytes32,
|
zBytes: ptr KzgBytes32,
|
||||||
s: KzgSettings): KZG_RET {.kzg_abi.}
|
s: KzgSettings): KZG_RET {.kzg_abi.}
|
||||||
|
|
||||||
proc compute_blob_kzg_proof*(res: var KzgProof,
|
proc compute_blob_kzg_proof*(res: var KzgProof,
|
||||||
blob: KzgBlob,
|
blob: ptr KzgBlob,
|
||||||
commitmentBytes: KzgBytes48,
|
commitmentBytes: ptr KzgBytes48,
|
||||||
s: KzgSettings): KZG_RET {.kzg_abi.}
|
s: KzgSettings): KZG_RET {.kzg_abi.}
|
||||||
|
|
||||||
proc verify_kzg_proof*(res: var bool,
|
proc verify_kzg_proof*(res: var bool,
|
||||||
commitmentBytes: KzgBytes48,
|
commitmentBytes: ptr KzgBytes48,
|
||||||
zBytes: KzgBytes32,
|
zBytes: ptr KzgBytes32,
|
||||||
yBytes: KzgBytes32,
|
yBytes: ptr KzgBytes32,
|
||||||
proofBytes: KzgBytes48,
|
proofBytes: ptr KzgBytes48,
|
||||||
s: KzgSettings): KZG_RET {.kzg_abi.}
|
s: KzgSettings): KZG_RET {.kzg_abi.}
|
||||||
|
|
||||||
proc verify_blob_kzg_proof*(res: var bool,
|
proc verify_blob_kzg_proof*(res: var bool,
|
||||||
blob: KzgBlob,
|
blob: ptr KzgBlob,
|
||||||
commitmentsBytes: KzgBytes48,
|
commitmentsBytes: ptr KzgBytes48,
|
||||||
proofBytes: KzgBytes48,
|
proofBytes: ptr KzgBytes48,
|
||||||
s: KzgSettings): KZG_RET {.kzg_abi.}
|
s: KzgSettings): KZG_RET {.kzg_abi.}
|
||||||
|
|
||||||
proc verify_blob_kzg_proof_batch*(res: var bool,
|
proc verify_blob_kzg_proof_batch*(res: var bool,
|
||||||
|
@ -45,16 +45,16 @@ proc readSetup(filename: string): KzgSettings =
|
|||||||
proc createKateBlobs(s: KzgSettings, n: int): KateBlobs =
|
proc createKateBlobs(s: KzgSettings, n: int): KateBlobs =
|
||||||
for i in 0..<n:
|
for i in 0..<n:
|
||||||
var blob: KzgBlob
|
var blob: KzgBlob
|
||||||
discard urandom(blob)
|
discard urandom(blob.bytes)
|
||||||
for i in 0..<len(blob):
|
for i in 0..<blob.bytes.len:
|
||||||
# don't overflow modulus
|
# don't overflow modulus
|
||||||
if blob[i] > MAX_TOP_BYTE and i %% BYTES_PER_FIELD_ELEMENT == 0:
|
if blob.bytes[i] > MAX_TOP_BYTE and i %% BYTES_PER_FIELD_ELEMENT == 0:
|
||||||
blob[i] = MAX_TOP_BYTE
|
blob.bytes[i] = MAX_TOP_BYTE
|
||||||
result.blobs.add(blob)
|
result.blobs.add(blob)
|
||||||
|
|
||||||
for i in 0..<n:
|
for i in 0..<n:
|
||||||
var kate: KzgCommitment
|
var kate: KzgCommitment
|
||||||
doAssert blob_to_kzg_commitment(kate, result.blobs[i], s) == KZG_OK
|
doAssert blob_to_kzg_commitment(kate, result.blobs[i].addr, s) == KZG_OK
|
||||||
result.kates.add(kate)
|
result.kates.add(kate)
|
||||||
|
|
||||||
let
|
let
|
||||||
@ -69,7 +69,7 @@ suite "verify proof (abi)":
|
|||||||
var kp: array[nblobs, KzgProof]
|
var kp: array[nblobs, KzgProof]
|
||||||
|
|
||||||
for i in 0..<nblobs:
|
for i in 0..<nblobs:
|
||||||
let res = compute_blob_kzg_proof(kp[i], kb.blobs[i], kb.kates[i], kzgs)
|
let res = compute_blob_kzg_proof(kp[i], kb.blobs[i].addr, kb.kates[i].addr, kzgs)
|
||||||
check res == KZG_OK
|
check res == KZG_OK
|
||||||
|
|
||||||
var ok: bool
|
var ok: bool
|
||||||
@ -87,12 +87,12 @@ suite "verify proof (abi)":
|
|||||||
var kp: array[nblobs, KzgProof]
|
var kp: array[nblobs, KzgProof]
|
||||||
|
|
||||||
for i in 0..<nblobs:
|
for i in 0..<nblobs:
|
||||||
let res = compute_blob_kzg_proof(kp[i], kb.blobs[i], kb.kates[i], kzgs)
|
let res = compute_blob_kzg_proof(kp[i], kb.blobs[i].addr, kb.kates[i].addr, kzgs)
|
||||||
check res == KZG_OK
|
check res == KZG_OK
|
||||||
|
|
||||||
var other = kzgs.createKateBlobs(nblobs)
|
var other = kzgs.createKateBlobs(nblobs)
|
||||||
for i in 0..<nblobs:
|
for i in 0..<nblobs:
|
||||||
let res = compute_blob_kzg_proof(kp[i], other.blobs[i], other.kates[i], kzgs)
|
let res = compute_blob_kzg_proof(kp[i], other.blobs[i].addr, other.kates[i].addr, kzgs)
|
||||||
check res == KZG_OK
|
check res == KZG_OK
|
||||||
|
|
||||||
var ok: bool
|
var ok: bool
|
||||||
@ -107,24 +107,24 @@ suite "verify proof (abi)":
|
|||||||
|
|
||||||
test "verify blob proof":
|
test "verify blob proof":
|
||||||
var kp: KzgProof
|
var kp: KzgProof
|
||||||
var res = compute_blob_kzg_proof(kp, blob, commitment, kzgs)
|
var res = compute_blob_kzg_proof(kp, blob.addr, commitment.addr, kzgs)
|
||||||
check res == KZG_OK
|
check res == KZG_OK
|
||||||
|
|
||||||
var ok: bool
|
var ok: bool
|
||||||
res = verify_blob_kzg_proof(ok, blob, commitment, kp, kzgs)
|
res = verify_blob_kzg_proof(ok, blob.addr, commitment.addr, kp.addr, kzgs)
|
||||||
check res == KZG_OK
|
check res == KZG_OK
|
||||||
check ok
|
check ok
|
||||||
|
|
||||||
test "verify proof":
|
test "verify proof":
|
||||||
var kp: KzgProof
|
var kp: KzgProof
|
||||||
var ky: KzgBytes32
|
var ky: KzgBytes32
|
||||||
var res = compute_kzg_proof(kp, ky, blob, inputPoint, kzgs)
|
var res = compute_kzg_proof(kp, ky, blob.addr, inputPoint.addr, kzgs)
|
||||||
check res == KZG_OK
|
check res == KZG_OK
|
||||||
check kp == proof
|
check kp == proof
|
||||||
check ky == claimedValue
|
check ky == claimedValue
|
||||||
|
|
||||||
var ok: bool
|
var ok: bool
|
||||||
res = verify_kzg_proof(ok, commitment, inputPoint, claimedValue, kp, kzgs)
|
res = verify_kzg_proof(ok, commitment.addr, inputPoint.addr, claimedValue.addr, kp.addr, kzgs)
|
||||||
check res == KZG_OK
|
check res == KZG_OK
|
||||||
check ok
|
check ok
|
||||||
|
|
||||||
|
@ -8,11 +8,11 @@ import
|
|||||||
proc createKateBlobs(ctx: KzgCtx, n: int): KateBlobs =
|
proc createKateBlobs(ctx: KzgCtx, n: int): KateBlobs =
|
||||||
var blob: KzgBlob
|
var blob: KzgBlob
|
||||||
for i in 0..<n:
|
for i in 0..<n:
|
||||||
discard urandom(blob)
|
discard urandom(blob.bytes)
|
||||||
for i in 0..<len(blob):
|
for i in 0..<blob.bytes.len:
|
||||||
# don't overflow modulus
|
# don't overflow modulus
|
||||||
if blob[i] > MAX_TOP_BYTE and i %% BYTES_PER_FIELD_ELEMENT == 0:
|
if blob.bytes[i] > MAX_TOP_BYTE and i %% BYTES_PER_FIELD_ELEMENT == 0:
|
||||||
blob[i] = MAX_TOP_BYTE
|
blob.bytes[i] = MAX_TOP_BYTE
|
||||||
result.blobs.add(blob)
|
result.blobs.add(blob)
|
||||||
|
|
||||||
for i in 0..<n:
|
for i in 0..<n:
|
||||||
|
@ -8,11 +8,11 @@ import
|
|||||||
proc createKateBlobs(n: int): KateBlobs =
|
proc createKateBlobs(n: int): KateBlobs =
|
||||||
var blob: KzgBlob
|
var blob: KzgBlob
|
||||||
for i in 0..<n:
|
for i in 0..<n:
|
||||||
discard urandom(blob)
|
discard urandom(blob.bytes)
|
||||||
for i in 0..<len(blob):
|
for i in 0..<blob.bytes.len:
|
||||||
# don't overflow modulus
|
# don't overflow modulus
|
||||||
if blob[i] > MAX_TOP_BYTE and i %% BYTES_PER_FIELD_ELEMENT == 0:
|
if blob.bytes[i] > MAX_TOP_BYTE and i %% BYTES_PER_FIELD_ELEMENT == 0:
|
||||||
blob[i] = MAX_TOP_BYTE
|
blob.bytes[i] = MAX_TOP_BYTE
|
||||||
result.blobs.add(blob)
|
result.blobs.add(blob)
|
||||||
|
|
||||||
for i in 0..<n:
|
for i in 0..<n:
|
||||||
|
@ -29,9 +29,9 @@ proc loadYaml(filename: string): YamlNode =
|
|||||||
s.close()
|
s.close()
|
||||||
|
|
||||||
proc fromHex(T: type, x: string): T =
|
proc fromHex(T: type, x: string): T =
|
||||||
if (x.len - 2) div 2 > sizeof(T):
|
if (x.len - 2) div 2 > sizeof(result.bytes):
|
||||||
raise newException(ValueError, "invalid hex")
|
raise newException(ValueError, "invalid hex")
|
||||||
hexToByteArray(x, sizeof(T))
|
result.bytes = hexToByteArray(x, sizeof(result.bytes))
|
||||||
|
|
||||||
proc fromHex(T: type, x: YamlNode): T =
|
proc fromHex(T: type, x: YamlNode): T =
|
||||||
T.fromHex(x.content)
|
T.fromHex(x.content)
|
||||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user