arnaucube
arnaucube/plonky2-crypto-gadgetsPublic Self-hosted repository
plonky2-crypto-gadgets/aes-gcm/README.md
aes-gcm/README.mdRaw
 1# plonky2-aes
 2
 3- [aes-gcm](/aes-gcm): Plonky2 circuits for AES & AES-GCM encryption system as described at
 4	- AES: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197-upd1.pdf
 5	- AES-GCM (Galois Counter Mode): https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf
 6
 7
 8> Warning: this code is unaudited.
 9
10Full example of usage at [examples](https://github.com/0xPARC/plonky2-aes/blob/main/examples) directory.
11```rust
12// circuit declaration
13let config = CircuitConfig::standard_recursion_zk_config();
14let mut builder = CircuitBuilder::<F, D>::new(config);
15let aes_targets = AesGcm128Target::<L>::new_virtual(&mut builder);
16aes_targets.build_circuit(&mut builder);
17let data = builder.build::<PoseidonGoldilocksConfig>();
18
19// set values to circuit
20let mut pw = PartialWitness::<F>::new();
21aes_targets.set_targets(&mut pw, key, nonce, pt, ct, tag)?;
22
23let proof = data.prove(pw)?;
24data.verify(proof)
25```