1pub mod bls12381;
7pub mod bn254;
8
9#[cfg(feature = "ecdsa")]
10pub mod ecdsa;
11
12pub mod ed25519;
13pub mod io;
14pub mod secp256k1;
15pub mod secp256r1;
16pub mod unconstrained;
17pub mod utils;
18
19#[cfg(feature = "verify")]
20pub mod verify;
21
22extern "C" {
23 pub fn syscall_halt(exit_code: u8) -> !;
25
26 pub fn syscall_write(fd: u32, write_buf: *const u8, nbytes: usize);
28
29 pub fn syscall_read(fd: u32, read_buf: *mut u8, nbytes: usize);
31
32 pub fn syscall_sha256_extend(w: *mut [u32; 64]);
34
35 pub fn syscall_sha256_compress(w: *mut [u32; 64], state: *mut [u32; 8]);
37
38 pub fn syscall_ed_add(p: *mut [u32; 16], q: *const [u32; 16]);
40
41 pub fn syscall_ed_decompress(point: &mut [u8; 64]);
43
44 pub fn syscall_secp256k1_add(p: *mut [u32; 16], q: *const [u32; 16]);
46
47 pub fn syscall_secp256k1_double(p: *mut [u32; 16]);
49
50 pub fn syscall_secp256k1_decompress(point: &mut [u8; 64], is_odd: bool);
52
53 pub fn syscall_secp256r1_add(p: *mut [u32; 16], q: *const [u32; 16]);
55
56 pub fn syscall_secp256r1_double(p: *mut [u32; 16]);
58
59 pub fn syscall_secp256r1_decompress(point: &mut [u8; 64], is_odd: bool);
61
62 pub fn syscall_bn254_add(p: *mut [u32; 16], q: *const [u32; 16]);
64
65 pub fn syscall_bn254_double(p: *mut [u32; 16]);
67
68 pub fn syscall_bls12381_add(p: *mut [u32; 24], q: *const [u32; 24]);
70
71 pub fn syscall_bls12381_double(p: *mut [u32; 24]);
73
74 pub fn syscall_keccak_permute(state: *mut [u64; 25]);
76
77 pub fn syscall_uint256_mulmod(x: *mut [u32; 8], y: *const [u32; 8]);
79
80 pub fn syscall_u256x2048_mul(
82 x: *const [u32; 8],
83 y: *const [u32; 64],
84 lo: *mut [u32; 64],
85 hi: *mut [u32; 8],
86 );
87 pub fn syscall_enter_unconstrained() -> bool;
89
90 pub fn syscall_exit_unconstrained();
92
93 pub fn syscall_verify_sp1_proof(vk_digest: &[u32; 8], pv_digest: &[u8; 32]);
95
96 pub fn syscall_hint_len() -> usize;
98
99 pub fn syscall_hint_read(ptr: *mut u8, len: usize);
101
102 pub fn sys_alloc_aligned(bytes: usize, align: usize) -> *mut u8;
104
105 pub fn syscall_bls12381_decompress(point: &mut [u8; 96], is_odd: bool);
107
108 pub fn sys_bigint(
110 result: *mut [u32; 8],
111 op: u32,
112 x: *const [u32; 8],
113 y: *const [u32; 8],
114 modulus: *const [u32; 8],
115 );
116
117 pub fn syscall_bls12381_fp_addmod(p: *mut u32, q: *const u32);
119
120 pub fn syscall_bls12381_fp_submod(p: *mut u32, q: *const u32);
122
123 pub fn syscall_bls12381_fp_mulmod(p: *mut u32, q: *const u32);
125
126 pub fn syscall_bls12381_fp2_addmod(p: *mut u32, q: *const u32);
128
129 pub fn syscall_bls12381_fp2_submod(p: *mut u32, q: *const u32);
131
132 pub fn syscall_bls12381_fp2_mulmod(p: *mut u32, q: *const u32);
134
135 pub fn syscall_bn254_fp_addmod(p: *mut u32, q: *const u32);
137
138 pub fn syscall_bn254_fp_submod(p: *mut u32, q: *const u32);
140
141 pub fn syscall_bn254_fp_mulmod(p: *mut u32, q: *const u32);
143
144 pub fn syscall_bn254_fp2_addmod(p: *mut u32, q: *const u32);
146
147 pub fn syscall_bn254_fp2_submod(p: *mut u32, q: *const u32);
149
150 pub fn syscall_bn254_fp2_mulmod(p: *mut u32, q: *const u32);
152
153 pub fn read_vec_raw() -> ReadVecResult;
155}
156
157#[repr(C)]
158pub struct ReadVecResult {
159 pub ptr: *mut u8,
160 pub len: usize,
161 pub capacity: usize,
162}