1pub mod bls12381;
7pub mod bn254;
8
9#[cfg(feature = "ecdsa")]
10pub mod ecdsa;
11
12pub mod ed25519;
13pub mod io;
14pub mod mprotect;
15pub mod secp256k1;
16pub mod secp256r1;
17pub mod unconstrained;
18pub mod utils;
19
20#[cfg(feature = "verify")]
21pub mod verify;
22
23extern "C" {
24 pub fn syscall_halt(exit_code: u8) -> !;
26
27 pub fn syscall_write(fd: u32, write_buf: *const u8, nbytes: usize);
29
30 pub fn syscall_read(fd: u32, read_buf: *mut u8, nbytes: usize);
32
33 pub fn syscall_sha256_extend(w: *mut [u64; 64]);
35
36 pub fn syscall_sha256_compress(w: *mut [u64; 64], state: *mut [u64; 8]);
38
39 pub fn syscall_ed_add(p: *mut [u64; 8], q: *const [u64; 8]);
41
42 pub fn syscall_ed_decompress(point: &mut [u64; 8]);
44
45 pub fn syscall_secp256k1_add(p: *mut [u64; 8], q: *const [u64; 8]);
47
48 pub fn syscall_secp256k1_double(p: *mut [u64; 8]);
50
51 pub fn syscall_secp256k1_decompress(point: &mut [u64; 8], is_odd: bool);
53
54 pub fn syscall_secp256r1_add(p: *mut [u64; 8], q: *const [u64; 8]);
56
57 pub fn syscall_secp256r1_double(p: *mut [u64; 8]);
59
60 pub fn syscall_secp256r1_decompress(point: &mut [u64; 8], is_odd: bool);
62
63 pub fn syscall_bn254_add(p: *mut [u64; 8], q: *const [u64; 8]);
65
66 pub fn syscall_bn254_double(p: *mut [u64; 8]);
68
69 pub fn syscall_bls12381_add(p: *mut [u64; 12], q: *const [u64; 12]);
71
72 pub fn syscall_bls12381_double(p: *mut [u64; 12]);
74
75 pub fn syscall_keccak_permute(state: *mut [u64; 25]);
77
78 pub fn syscall_uint256_mulmod(x: *mut [u64; 4], y: *const [u64; 4]);
80
81 pub fn syscall_u256x2048_mul(
83 x: *const [u64; 4],
84 y: *const [u64; 32],
85 lo: *mut [u64; 32],
86 hi: *mut [u64; 4],
87 );
88
89 pub fn syscall_uint256_add_with_carry(
91 a: *const [u64; 4],
92 b: *const [u64; 4],
93 c: *const [u64; 4],
94 d: *mut [u64; 4],
95 e: *mut [u64; 4],
96 );
97
98 pub fn syscall_uint256_mul_with_carry(
100 a: *const [u64; 4],
101 b: *const [u64; 4],
102 c: *const [u64; 4],
103 d: *mut [u64; 4],
104 e: *mut [u64; 4],
105 );
106
107 pub fn syscall_enter_unconstrained() -> bool;
109
110 pub fn syscall_exit_unconstrained();
112
113 pub fn syscall_verify_sp1_proof(vk_digest: &[u64; 4], pv_digest: &[u64; 4]);
115
116 pub fn syscall_hint_len() -> usize;
118
119 pub fn syscall_hint_read(ptr: *mut u8, len: usize);
121
122 pub fn sys_alloc_aligned(bytes: usize, align: usize) -> *mut u8;
124
125 pub fn syscall_bls12381_decompress(point: &mut [u64; 12], is_odd: bool);
127
128 pub fn sys_bigint(
130 result: *mut [u64; 4],
131 op: u64,
132 x: *const [u64; 4],
133 y: *const [u64; 4],
134 modulus: *const [u64; 4],
135 );
136
137 pub fn syscall_bls12381_fp_addmod(p: *mut u64, q: *const u64);
139
140 pub fn syscall_bls12381_fp_submod(p: *mut u64, q: *const u64);
142
143 pub fn syscall_bls12381_fp_mulmod(p: *mut u64, q: *const u64);
145
146 pub fn syscall_bls12381_fp2_addmod(p: *mut u64, q: *const u64);
148
149 pub fn syscall_bls12381_fp2_submod(p: *mut u64, q: *const u64);
151
152 pub fn syscall_bls12381_fp2_mulmod(p: *mut u64, q: *const u64);
154
155 pub fn syscall_bn254_fp_addmod(p: *mut u64, q: *const u64);
157
158 pub fn syscall_bn254_fp_submod(p: *mut u64, q: *const u64);
160
161 pub fn syscall_bn254_fp_mulmod(p: *mut u64, q: *const u64);
163
164 pub fn syscall_bn254_fp2_addmod(p: *mut u64, q: *const u64);
166
167 pub fn syscall_bn254_fp2_submod(p: *mut u64, q: *const u64);
169
170 pub fn syscall_bn254_fp2_mulmod(p: *mut u64, q: *const u64);
172
173 pub fn syscall_mprotect(addr: *const u8, prot: u8);
175
176 pub fn read_vec_raw() -> ReadVecResult;
178}
179
180#[repr(C)]
181pub struct ReadVecResult {
182 pub ptr: *mut u8,
183 pub len: usize,
184 pub capacity: usize,
185}