Michael Vines
6872fc79ba
Derive Clone for AeCiphertext ( #23293 )
2022-02-22 22:47:26 -08:00
buffalu
70ebab2c82
Add rustfmt.toml and `cargo fmt` ( #23238 )
...
* fmt
* formatted
Co-authored-by: Lucas B <buffalu@jito.network>
2022-02-19 13:32:29 +08:00
samkim-crypto
b4100a9b5d
Add additional zkp for fee ( #23112 )
...
* zk-token-sdk: add equality proof for fee
* zk-token-sdk: tweak some naming conventions for readability
* zk-token-sdk: add verify withdraw withheld instruction
* zk-token-sdk: add test for withdraw withheld verification
* zk-token-sdk: more renaming of variables for readability
* zk-token-sdk: cargo fmt
* zk-token-sdk: minor
* zk-token-sdk: resolve bpf compilation warnings
* zk-token-sdk: minor update to doc
2022-02-17 12:45:07 -05:00
samkim-crypto
7873175764
zk-token-sdk: fix pod for zk-token transfer ( #22957 )
2022-02-08 12:09:50 -05:00
samkim-crypto
a47b76afcc
zk-token-sdk: add verify transfer with fee instruction ( #22924 )
2022-02-04 08:52:49 -05:00
samkim-crypto
65f8f43665
Zk instructions pass ( #22851 )
...
* zk-token-sdk: re-organize transcript
* zk-token-sdk: add pod ElGamal group encryption
* zk-token-sdk: add transcript domain separators for sigma proofs
* zk-token-sdk: clean up transfer tx decryption
* zk-token-sdk: resolve encoding issues for transfer
* zk-token-sdk: fix transfer test
* zk-token-sdk: clean up transcript for close account and withdraw instructions
* zk-token-sdk: add transfer with fee instruction
* zk-token-sdk: add transfer with fee instruction
* zk-token-sdk: add pod for cryptographic structs needed for fee
* zk-token-sdk: add pod for fee sigma proof
* zk-token-sdk: fix test for transfer with fee instruction
* zk-token-sdk: add range proof verification for transfer with fee
* zk-token-sdk: add transfer amount decryption for transfer-with-fee
* zk-token-sdk: add proof generation error for instruction
* zk-token-sdk: cargo fmt and clippy
* zk-token-sdk: fix bpf build
2022-02-01 14:11:28 -05:00
samkim-crypto
5cef4c0a4c
Sigma pass ( #22801 )
...
* zk-token-sdk: add zeroize and reference arithmetic to zero-balance proof
* zk-token-sdk: add zeroize and reference arithmetic to equality proof
* zk-token-sdk: add zeroize and reference arithmetic to validity proof
* zk-token-sdk: add aggregated validity proof
* zk-token-sdk: use subtle choice for fee
* zk-token-sdk: add test for fee proof
* zk-token-sdk: add documentation for sigma protocols
* zk-token-sdk: add edge case tests for equality proof
* zk-token-sdk: add edge case tests for zero-balance proof
* zk-token-sdk: add edge case tests for validity proof
* zk-token-sdk: add some docs for fee sigma proof
* zk-token-sdk: clippy
2022-01-27 19:53:15 -05:00
dependabot[bot]
66b44b48a4
chore: remove time dep ( #22665 )
...
* chore: bump time from 0.3.5 to 0.3.6
Bumps [time](https://github.com/time-rs/time ) from 0.3.5 to 0.3.6.
- [Release notes](https://github.com/time-rs/time/releases )
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md )
- [Commits](https://github.com/time-rs/time/compare/v0.3.5...v0.3.6 )
---
updated-dependencies:
- dependency-name: time
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* Remove separate time dependency
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2022-01-25 16:30:21 -07:00
samkim-crypto
d8cbb2a952
Elgamal pass ( #22632 )
...
* zk-token-sdk: change G and H to static and optimize pedersen arithmetic
* zk-token-sdk: remove unnecessary copy in elgamal arithmetic
* zk-token-sdk: fix elgamal tests for new syntax
* zk-token-sdk: use lazy-static for pedersen base
* zk-token-sdk: add dlog test for elgamal decryption
* zk-token-sdk: reflect changes in elgamal in the rest of the sdk
* zk-token-sdk: rustfmt and clippy
* zk-token-sdk: some documentation for elgamal and pedersen
* zk-token-sdk: minor remove whitespace
* zk-token-sdk: update lock files
* zk-token-sdk: change random() to new_rand()
* zk-token-sdk: add explanation for suppressing clippy::op_ref
2022-01-21 20:56:27 -05:00
Tyera Eulberg
7be533a770
Add zeroed default for ElGamalCiphertext ( #22639 )
2022-01-21 19:52:36 +00:00
samkim-crypto
41fb98c771
zk-token_sdk: define defaults for pod ElGamal/AES ciphertexts ( #22532 )
2022-01-20 16:27:31 -05:00
dependabot[bot]
0869f644fc
Bump merlin from 2.0.1 to 3.0.0 ( #22331 )
...
* Bump merlin from 2.0.1 to 3.0.0
Bumps [merlin](https://github.com/zkcrypto/merlin ) from 2.0.1 to 3.0.0.
- [Release notes](https://github.com/zkcrypto/merlin/releases )
- [Changelog](https://github.com/zkcrypto/merlin/blob/main/CHANGELOG.md )
- [Commits](https://github.com/zkcrypto/merlin/compare/2.0.1...3.0.0 )
---
updated-dependencies:
- dependency-name: merlin
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
* [auto-commit] Update all Cargo lock files
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot-buildkite <dependabot-buildkite@noreply.solana.com>
2022-01-10 11:18:15 -07:00
Tyera Eulberg
9cb27613c3
Don't accidentally commit farf ( #22349 )
2022-01-06 17:24:33 -07:00
Sam Kim
705084a25b
zk-token-sdk: rustfmt
2022-01-06 11:18:06 -05:00
samkim-crypto
f81f926a0c
zk-token-sdk: fix transfer verification / set up for fee proof ( #22337 )
2022-01-06 11:01:27 -05:00
samkim-crypto
bc654bf865
feat: add error types for each sigma protocol ( #22336 )
2022-01-06 08:10:37 -05:00
Michael Vines
005ca7759e
Remove stray printlns
2022-01-05 16:49:47 -08:00
Michael Vines
69e632a337
Adapt zk-token-{sdk,proof-program} for use in the monorepo
2022-01-05 08:51:18 -08:00
Sam Kim
1a254ec098
feat: use proper constructor syntax for inner product
2022-01-05 08:51:18 -08:00
Sam Kim
5b41d62f8a
feat: fix clippy for new error types
2022-01-05 08:51:18 -08:00
Sam Kim
0944abc0e2
feat: update error types for sdk
2022-01-05 08:51:18 -08:00
Sam Kim
1cbcda71cb
feat: add separate error types for sigma proofs
2022-01-05 08:51:18 -08:00
Sam Kim
7439d2424b
feat: add a separate TranscriptError
2022-01-05 08:51:18 -08:00
Sam Kim
a211fe1cf4
feat: add errors for range proof module
2022-01-05 08:51:18 -08:00
Sam Kim
e1d3883893
feat: clean up range proof constructor
2022-01-05 08:51:18 -08:00
Sam Kim
826c3bee4a
feat: add verification for fee proof
2022-01-05 08:51:18 -08:00
Sam Kim
e561fbc25a
feat: add test for fee proof
2022-01-05 08:51:18 -08:00
Sam Kim
bc7ac42f2a
feat: proof generation for max and equality proof
2022-01-05 08:51:18 -08:00
Sam Kim
601247d958
feat: add zk-proof certifying that a ciphertext encrypts specified max fee value
2022-01-05 08:51:18 -08:00
Michael Vines
beb95c4884
Allow publish
2022-01-05 08:51:18 -08:00
Sam Kim
08ef612361
refactor: add mod.rs for sigma_proofs
2022-01-05 08:51:18 -08:00
Sam Kim
584c63bcc4
refactor: CloseAccount now uses zero-balance-proof
2022-01-05 08:51:18 -08:00
Sam Kim
c26fa1d0e9
refactor: create pod struct for ZeroBalanceProof
2022-01-05 08:51:18 -08:00
Sam Kim
208621e3cf
refactor: create a separate zero-balance-proof for CloseAccount instruction
2022-01-05 08:51:18 -08:00
Sam Kim
c6cd0a5591
refactor: group equality and validity proofs in sigma_proofs module
2022-01-05 08:51:18 -08:00
Michael Vines
e011502875
Update to Rust 2021 edition
2022-01-05 08:51:18 -08:00
Michael Vines
8ee07cd5c6
Update to Solana 1.9.1
2022-01-05 08:51:18 -08:00
Michael Vines
31737406da
Adapt to changes to native program entrypoint
2022-01-05 08:51:18 -08:00
Michael Vines
93860e88d2
Update to Solana 1.9.0
2022-01-05 08:51:18 -08:00
Sam Kim
9a43fbe3b2
clean up authenticated encryption implementation and also rename aes to auth_encryption
2022-01-05 08:51:18 -08:00
Sam Kim
7a568482de
cargo fmt and fix clippy
2022-01-05 08:51:18 -08:00
Sam Kim
30871784e4
incorporate validity proof into transfer proof
2022-01-05 08:51:18 -08:00
Sam Kim
c7bf9958e7
add validity proof serialization and deserialization
2022-01-05 08:51:18 -08:00
Sam Kim
725781eaa7
add validity proof generation and verification
2022-01-05 08:51:18 -08:00
Sam Kim
dcc961ae00
fix clippy for the updated transfer
2022-01-05 08:51:18 -08:00
Sam Kim
ccdbe65c87
cleaning up transfer proof
2022-01-05 08:51:18 -08:00
Sam Kim
30e12aef9a
Update withdraw instruction to use equality proof
2022-01-05 08:51:18 -08:00
Sam Kim
6c329e2431
add equality proof struct
2022-01-05 08:51:18 -08:00
Sam Kim
f0db6020eb
updating close account zk proof
2022-01-05 08:51:18 -08:00
Michael Vines
aba8c2f4af
reformat imports
2022-01-05 08:51:18 -08:00
Michael Vines
c61775664e
Add decrypt helper function
2022-01-05 08:51:18 -08:00
Michael Vines
69fab16e83
ElGamalKeypair::new() now generates valid keypairs
2022-01-05 08:51:18 -08:00
Michael Vines
88ce934bd7
Derive thiserror::Error for ProofError
2022-01-05 08:51:18 -08:00
Michael Vines
2c51288afd
Add Copy to Role
2022-01-05 08:51:18 -08:00
Sam Kim
8d731f1a70
set ciphertext_lo and ciphertext_hi methods to private
2022-01-05 08:51:18 -08:00
Sam Kim
c59e8f7c8d
resolve conflict
2022-01-05 08:51:18 -08:00
Sam Kim
973287ad66
add decryption functionality to transfer data
2022-01-05 08:51:18 -08:00
Michael Vines
15aea0fe47
Avoid runtime discrete log table precomputation
2022-01-05 08:51:18 -08:00
Michael Vines
c1db2b4866
Wrap a struct around the discrete log precompute hashmap
2022-01-05 08:51:18 -08:00
Michael Vines
425a4a4082
cargo fmt
2022-01-05 08:51:18 -08:00
Michael Vines
fdb658fff4
Various program refinements
2022-01-05 08:51:18 -08:00
Michael Vines
c155519ae1
Generate AesKey/ElGamalSecretKey from an ed25519 signature instead of secret key
2022-01-05 08:51:18 -08:00
Sam Kim
221f499041
derive ElGamal keypair from the secret component of keypair
2022-01-05 08:51:18 -08:00
Sam Kim
89ddae29ef
derive ElGamal keypair from Ed25519 keypair instead of just the signing key
2022-01-05 08:51:18 -08:00
Sam Kim
defdf8da72
change AESCiphertext to AesCiphertext
2022-01-05 08:51:18 -08:00
Sam Kim
3721eda23e
serialization for aes
2022-01-05 08:51:18 -08:00
Sam Kim
c7fc430adb
use randomized authenticated encryption for aes
2022-01-05 08:51:18 -08:00
Sam Kim
77e79221a0
remove `UpdateAccountPk` instruction
2022-01-05 08:51:18 -08:00
samkim-crypto
b0e492bc06
Update sdk/src/encryption/aes.rs
...
Co-authored-by: Michael Vines <mvines@gmail.com>
2022-01-05 08:51:18 -08:00
Sam Kim
173d88d514
remove `OptionAESCiphertext`
2022-01-05 08:51:18 -08:00
Sam Kim
22114c523f
update demo program and bpf test for aes ciphertext removal
2022-01-05 08:51:18 -08:00
Sam Kim
88f952075d
remove aes ciphertext from the proof program
2022-01-05 08:51:18 -08:00
Sam Kim
c51a51d0ad
quick syntactical fixes from pr review
...
merge
2022-01-05 08:51:18 -08:00
Sam Kim
2359150b9c
incorporate aes ciphertext for zk-proof instructions
2022-01-05 08:51:18 -08:00
Sam Kim
6749c45c63
merge
2022-01-05 08:51:18 -08:00
Sam Kim
57103c515b
update applying pending balance for aes ciphertext
2022-01-05 08:51:18 -08:00
samkim-crypto
2d225de48c
pod for AESCiphertext
2022-01-05 08:51:18 -08:00
samkim-crypto
beba0eac55
Some clippy
2022-01-05 08:51:18 -08:00
Sam Kim
e0c168ef3f
add aes encryption
2022-01-05 08:51:18 -08:00
samkim-crypto
72ade5473a
Add blueprint for aes encryption
2022-01-05 08:51:18 -08:00
Michael Vines
abe6b27b34
clippy
2022-01-05 08:51:18 -08:00
Michael Vines
0ac6427abc
cargo fmt
2022-01-05 08:51:18 -08:00
Michael Vines
17f5dd734c
Fix BPF build
2022-01-05 08:51:18 -08:00
Sam Kim
a707e85c10
add key pair derivation from ed25519 signing key
2022-01-05 08:51:18 -08:00
Sam Kim
ecbdb6ba68
update cargo to include ed25519_dalek
2022-01-05 08:51:18 -08:00
Sam Kim
2eb326b0da
add keypair derivation
2022-01-05 08:51:18 -08:00
Sam Kim
f350fa7147
add key pair derivation from ed25519 signing key
...
merge
2022-01-05 08:51:18 -08:00
Sam Kim
0cc717340c
update cargo to include ed25519_dalek
2022-01-05 08:51:18 -08:00
Sam Kim
a368adcd30
add keypair derivation
...
merge
2022-01-05 08:51:18 -08:00
Sam Kim
500423626d
merge
2022-01-05 08:51:18 -08:00
Sam Kim
aea95e8ff3
update cargo to include ed25519_dalek
2022-01-05 08:51:18 -08:00
Sam Kim
0bd28f9620
merge
2022-01-05 08:51:18 -08:00
Sam Kim
65cf599786
merge
2022-01-05 08:51:18 -08:00
Sam Kim
9fdadb503d
merge
2022-01-05 08:51:18 -08:00
Sam Kim
ee6a13ef6f
update cargo to include ed25519_dalek
2022-01-05 08:51:18 -08:00
Sam Kim
30702dcdee
add keypair derivation
2022-01-05 08:51:18 -08:00
Sam Kim
43e368faf6
add ElGamal key derivation from Ed25519 signing key
2022-01-05 08:51:18 -08:00
Michael Vines
7aef523a41
sdk/ now builds for wasm32-unknown-unknown
2022-01-05 08:51:18 -08:00
Sam Kim
4b61e27d12
divide out elgamal algorithms with keypair
2022-01-05 08:51:18 -08:00
Michael Vines
a8ab615c89
Add inner instruction utility functions
2022-01-05 08:51:18 -08:00
Michael Vines
93eb49a3e3
Rename ElGamalKeypair fields
2022-01-05 08:51:18 -08:00
Michael Vines
c33e24de57
Rename ElGamal to ElGamalKeypair
2022-01-05 08:51:18 -08:00
Michael Vines
f272c025bd
Rename ElGamal::new() to ElGamal::default()
2022-01-05 08:51:18 -08:00
Michael Vines
6b59beda7b
Add fn to save/load ElGamal
2022-01-05 08:51:18 -08:00
Michael Vines
1daf676b37
Update to Solana 1.7.15
2022-01-05 08:51:18 -08:00
Michael Vines
2c1aa715b0
Adjust ElGamal::new() signature
2022-01-05 08:51:18 -08:00
samkim-crypto
2d62e4e6bd
update program processor for the single transfer instruction
2022-01-05 08:51:18 -08:00
samkim-crypto
09b8baa4b1
merge
2022-01-05 08:51:18 -08:00
Sam Kim
db69128825
Simplify range proof verification syntax for merged transfer
2022-01-05 08:51:18 -08:00
Sam Kim
a5d1efc207
Rust fmt and clippy
2022-01-05 08:51:18 -08:00
Sam Kim
25216705b3
Add UpdateAccountPk tests for edge cases
2022-01-05 08:51:18 -08:00
Sam Kim
1af1106b87
Add CloseAccount tests for edge cases
2022-01-05 08:51:18 -08:00
Sam Kim
73c06d9e33
Rename ElGamalPubkey::gen_decrypt_handle method to ElGamalPubkey::decrypt_handle
2022-01-05 08:51:18 -08:00
Michael Vines
20c6001836
derive Debug for pods for BPF target as well
2022-01-05 08:51:18 -08:00
Sam Kim
c150b4b197
Replace to_elgamal_ciphertext with From trait for ElGamalCiphertext
2022-01-05 08:51:18 -08:00
Sam Kim
a40e7fc59b
Rename Pedersen related structs and methods for consistency
2022-01-05 08:51:18 -08:00
Michael Vines
17cda46531
Merge transfer instructions
2022-01-05 08:51:18 -08:00
Michael Vines
42f7c0c7f6
Update tests
2022-01-05 08:51:18 -08:00
Michael Vines
20bce10204
add clippy
2022-01-05 08:51:18 -08:00
Sam Kim
9b73e351aa
minor name change
2022-01-05 08:51:18 -08:00
Sam Kim
d6a808f41a
simplify get_ciphertext methods
2022-01-05 08:51:18 -08:00
Sam Kim
93f2323e52
add ciphertext extraction methods for TransferData
2022-01-05 08:51:18 -08:00
Sam Kim
75896958b6
rename to_elgamal_ctxt to to_elgamal_ciphertext
2022-01-05 08:51:18 -08:00
Michael Vines
a622ee4b8d
Rename ElGamal::keygen to ElGamal::new
2022-01-05 08:51:18 -08:00
Michael Vines
94a96670e8
Update lib.rs
2022-01-05 08:51:18 -08:00
Michael Vines
8bb6f0dc6f
Rename ElGamalSK to ElGamalSecretKey
2022-01-05 08:51:18 -08:00
Michael Vines
5445e13828
Rename dlog.rs to discrete_log.rs
2022-01-05 08:51:18 -08:00
Michael Vines
23d3b540a1
Avoid explicit curve25519_dalek dependency in demo/
2022-01-05 08:51:18 -08:00
Sam Kim
1ef3a621a8
add decryption in demo
2022-01-05 08:51:18 -08:00
Sam Kim
d20d03cd7f
clean up ElGamal decryption
2022-01-05 08:51:18 -08:00
Michael Vines
409b55ad81
add some comments
2022-01-05 08:51:18 -08:00
Michael Vines
667e72144e
rename encode.rs to dlog.rs
2022-01-05 08:51:18 -08:00
Michael Vines
2f138ecb96
Fix tests
2022-01-05 08:51:18 -08:00
Michael Vines
48047b55ba
clippy
2022-01-05 08:51:18 -08:00
Michael Vines
f227504ea7
Add sol_zk_token_elgamal syscall declarations
2022-01-05 08:51:18 -08:00
Michael Vines
78799640ea
Rename ElGamalCT to ElGamalCiphertext, ElGamalPK to ElGamalPubkey
2022-01-05 08:51:18 -08:00
Michael Vines
f3e7e62813
Refactor sdk/src/pod.rs
2022-01-05 08:51:18 -08:00
Michael Vines
d01d425e4b
Rename crypto crate to sdk
2022-01-05 08:51:18 -08:00
Michael Vines
7da620f0b4
Merge sdk/ back into crypto/
2022-01-05 08:51:18 -08:00
Michael Vines
88b71c0732
Add demo cli
2022-01-05 08:51:18 -08:00
Michael Vines
df521bbfc8
Adjust crate names
2022-01-05 08:51:18 -08:00
Michael Vines
03a3a501f3
Groom Cargo.tomls
2022-01-05 08:51:18 -08:00
Michael Vines
ae5d254e73
Move solana-specific parts of crypto/ into sdk/
2022-01-05 08:51:18 -08:00