logos-storage-proofs/codex_proofs_ffi.nim
Jaremy Creechley 24930233f6
Feature/msgpack argument passing (#9)
* adding rmpv crate

* plumb in msgpack

* setting up mpack basics

* setting up mpack basics

* setting up mpack basics

* setting up mpack basics

* updates

* chunks

* chunks

* chunks

* add mpack proof func

* add mpack proof func - tests infra

* add mpack proof func - tests infra remove

* add mpack proof func - split mpack

* rework funcs

* rework funcs

* rework funcs

* rework funcs

* rework funcs

* rework funcs

* refactor

* refactor

* refactor

* refactor

* refactor

* refactor

* refactor

* refactor

* refactor - read orig for testing

* refactor - read orig for testing

* setting up tests

* setting up tests

* setting up tests

* setting up tests

* setting rest of data

* setting rest of data

* setting rest of data

* setting rest of data

* re-add original prove for comparison

* re-add original prove for comparison

* re-add original prove for comparison

* cleanup

* refactor

* refactor

* pass tests

* initial setup to build as a nim package

* initial setup

* update build setup

* update build setup

* update build setup

* add nim ffi and genffi build task

* add nim ffi and genffi build task

* add nim ffi and genffi build task

* update init to remove redundant pointers

* update init to remove redundant pointers

* update init to remove redundant pointers

* update init to remove redundant pointers

* save mpack

* save mpack

* update ffi

* update ffi

* add example ffi test

* add example ffi test

* updates

* fix tests

* adding git ignore

* rename

* run testament

* fix stuffs

* fix stuffs

* fix stuffs

* update build

* update build
2024-01-17 12:04:47 -08:00

58 lines
1.5 KiB
Nim

const EXT_ID_U256_BE* = 51
const EXT_ID_U256_LE* = 50
type StorageProofs* {.incompleteStruct.} = object
type Buffer* = object
data: ptr uint8
len: uint
type ProofCtx* = object
proof: Buffer
public_inputs: Buffer
## # Safety
#
# Use on a valid pointer to ProofCtx or panics
proc free_proof_ctx*(ctx: ptr ProofCtx) {.importc: "free_proof_ctx".}
## # Safety
#
# Use on a valid pointer to StorageProofs or panics
proc free_prover*(prover: ptr StorageProofs) {.importc: "free_prover".}
## # Safety
#
# Construct a StorageProofs object
proc init_storage_proofs*(r1cs: Buffer,
wasm: Buffer,
zkey: ptr Buffer): (ptr StorageProofs) {.importc: "init_storage_proofs".}
## # Safety
#
# Use after constructing a StorageProofs object with init
proc prove*(prover_ptr: ptr StorageProofs,
chunks: ptr Buffer,
siblings: ptr Buffer,
hashes: ptr Buffer,
path: ptr int32,
path_len: uint,
pubkey: ptr Buffer,
root: ptr Buffer,
salt: ptr Buffer): (ptr ProofCtx) {.importc: "prove".}
## # Safety
#
# Use after constructing a StorageProofs object with init
proc prove_mpack_ext*(prover_ptr: ptr StorageProofs,
args: ptr Buffer): (ptr ProofCtx) {.importc: "prove_mpack_ext".}
## # Safety
#
# Should be called on a valid proof and public inputs previously generated by prove
proc verify*(prover_ptr: ptr StorageProofs,
proof: ptr Buffer,
public_inputs: ptr Buffer): bool {.importc: "verify".}