From 97e6161a99f8514988f2b4bffe1496e7774a2db3 Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Fri, 7 Oct 2022 23:03:13 -0600 Subject: [PATCH 01/13] Add TxSummaryUnblindingData, verifier, and tests Also makes transaction builder able to generate the tx summary unblinding data. This fills out the functionality of MCIP 52. --- The `TxSummaryUnblindingData`, together with the `TxSummary`, can be used to verify what is happening in the transaction according to the `TxSummary`. The `TxSummaryVerifier` takes the extended message digest, and the `TxSummary` and `TxSummaryUnblindingData` in a streaming fashion. Then it produces the verified `TxSummaryReport` which lists which entities observe which balance changes as a result of the transaction, as well as the fee and tombstone block of the transaction. This process also produces the digest which Ring MLSAG are supposed to sign. Some tests are added which confirm that this checking and verification is working, and that serialization is working. --- This PR has a small impact on the `UnsignedTx` object and associated protouf, but it is not very difficult for downstream to adapt to that. --- Cargo.lock | 437 +++++++++--------- account-keys/Cargo.toml | 10 +- account-keys/src/account_keys.rs | 15 +- account-keys/src/address_hash.rs | 9 +- api/proto/external.proto | 23 +- api/src/convert/signing_data.rs | 2 +- api/src/convert/unsigned_tx.rs | 70 ++- consensus/enclave/trusted/Cargo.lock | 174 ++++--- crypto/keys/src/ristretto.rs | 3 +- .../src/ring_signature/key_image.rs | 3 +- .../src/ring_signature/mlsag.rs | 4 +- fog/ingest/enclave/trusted/Cargo.lock | 170 +++---- fog/ledger/enclave/trusted/Cargo.lock | 168 +++---- fog/view/enclave/trusted/Cargo.lock | 184 ++++---- .../src/signed_contingent_input_builder.rs | 34 +- transaction/builder/src/test_utils.rs | 63 ++- .../builder/src/transaction_builder.rs | 58 ++- transaction/core/src/lib.rs | 2 +- transaction/core/src/tx.rs | 4 +- transaction/extra/Cargo.toml | 6 +- transaction/extra/src/lib.rs | 5 + .../extra/src/signed_contingent_input.rs | 7 +- .../extra/src/tx_summary_unblinding/data.rs | 52 +++ .../extra/src/tx_summary_unblinding/error.rs | 66 +++ .../extra/src/tx_summary_unblinding/mod.rs | 11 + .../extra/src/tx_summary_unblinding/report.rs | 111 +++++ .../src/tx_summary_unblinding/verifier.rs | 404 ++++++++++++++++ transaction/extra/src/unsigned_tx.rs | 72 ++- transaction/extra/tests/verifier.rs | 201 ++++++++ transaction/types/src/amount.rs | 6 + 30 files changed, 1689 insertions(+), 685 deletions(-) create mode 100644 transaction/extra/src/tx_summary_unblinding/data.rs create mode 100644 transaction/extra/src/tx_summary_unblinding/error.rs create mode 100644 transaction/extra/src/tx_summary_unblinding/mod.rs create mode 100644 transaction/extra/src/tx_summary_unblinding/report.rs create mode 100644 transaction/extra/src/tx_summary_unblinding/verifier.rs create mode 100644 transaction/extra/tests/verifier.rs diff --git a/Cargo.lock b/Cargo.lock index 66f4c0a781..6f56d586bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "508b352bb5c066aac251f6daf6b36eccd03e8a88e8081cd44959ea277a3af9a8" [[package]] name = "arc-swap" @@ -617,9 +617,9 @@ checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6" [[package]] name = "cc" -version = "1.0.74" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cexpr" @@ -847,7 +847,7 @@ dependencies = [ "rand 0.8.5", "sha2 0.10.6", "subtle", - "time 0.3.15", + "time 0.3.9", "version_check", ] @@ -1135,7 +1135,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3495912c9c1ccf2e18976439f4443f3fee0fd61f424ff99fde6a66b15ecb448f" dependencies = [ "cfg-if 1.0.0", - "hashbrown", + "hashbrown 0.12.3", "lock_api", "parking_lot_core 0.9.3", ] @@ -1737,7 +1737,7 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "go-grpc-gateway-testing" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -1828,6 +1828,12 @@ dependencies = [ "byteorder", ] +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" + [[package]] name = "hashbrown" version = "0.12.3" @@ -1870,9 +1876,6 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] [[package]] name = "hex_fmt" @@ -2056,12 +2059,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.11.2", "serde", ] @@ -2351,11 +2354,12 @@ dependencies = [ [[package]] name = "mc-account-keys" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "criterion", "curve25519-dalek", "displaydoc", + "hex_fmt", "hkdf", "mc-account-keys-types", "mc-core", @@ -2374,6 +2378,7 @@ dependencies = [ "rand 0.8.5", "rand_core 0.6.4", "rand_hc 0.3.1", + "serde", "subtle", "tempdir", "zeroize", @@ -2381,14 +2386,14 @@ dependencies = [ [[package]] name = "mc-account-keys-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-keys", ] [[package]] name = "mc-admin-http-gateway" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "grpcio", @@ -2403,7 +2408,7 @@ dependencies = [ [[package]] name = "mc-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "bs58", "cargo-emit", @@ -2446,7 +2451,7 @@ dependencies = [ [[package]] name = "mc-attest-ake" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead 0.4.3", "aes-gcm 0.9.4", @@ -2471,7 +2476,7 @@ dependencies = [ [[package]] name = "mc-attest-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead 0.4.3", "cargo-emit", @@ -2489,7 +2494,7 @@ dependencies = [ [[package]] name = "mc-attest-core" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "bincode", @@ -2523,7 +2528,7 @@ dependencies = [ [[package]] name = "mc-attest-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-ake", @@ -2536,7 +2541,7 @@ dependencies = [ [[package]] name = "mc-attest-net" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "displaydoc", @@ -2556,7 +2561,7 @@ dependencies = [ [[package]] name = "mc-attest-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -2567,7 +2572,7 @@ dependencies = [ [[package]] name = "mc-attest-untrusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-attest-core", "mc-attest-verifier", @@ -2577,7 +2582,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "cfg-if 1.0.0", @@ -2603,7 +2608,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "displaydoc", @@ -2617,7 +2622,7 @@ dependencies = [ [[package]] name = "mc-blockchain-test-utils" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-blockchain-types", "mc-common", @@ -2631,7 +2636,7 @@ dependencies = [ [[package]] name = "mc-blockchain-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "hex_fmt", @@ -2658,7 +2663,7 @@ dependencies = [ [[package]] name = "mc-blockchain-validators" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "hex", @@ -2676,13 +2681,13 @@ dependencies = [ [[package]] name = "mc-common" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "backtrace", "cfg-if 1.0.0", "chrono", "displaydoc", - "hashbrown", + "hashbrown 0.12.3", "hex", "hex_fmt", "hostname", @@ -2715,7 +2720,7 @@ dependencies = [ [[package]] name = "mc-connection" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes-gcm 0.9.4", "cookie", @@ -2746,7 +2751,7 @@ dependencies = [ [[package]] name = "mc-connection-test-utils" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-blockchain-types", "mc-connection", @@ -2758,7 +2763,7 @@ dependencies = [ [[package]] name = "mc-consensus-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "futures", @@ -2779,7 +2784,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes-gcm 0.9.4", "cargo-emit", @@ -2817,7 +2822,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "hex", @@ -2840,7 +2845,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -2848,7 +2853,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-impl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "hex", @@ -2885,7 +2890,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-measurement" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-attest-core", @@ -2898,7 +2903,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-mock" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-account-keys", "mc-attest-core", @@ -2921,7 +2926,7 @@ dependencies = [ [[package]] name = "mc-consensus-mint-client" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -2933,7 +2938,6 @@ dependencies = [ "mc-common", "mc-consensus-api", "mc-consensus-enclave-api", - "mc-consensus-mint-client-types", "mc-consensus-service-config", "mc-crypto-keys", "mc-crypto-multisig", @@ -2952,24 +2956,12 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", -] - -[[package]] -name = "mc-consensus-mint-client-types" -version = "2.1.0-pre0" -dependencies = [ - "displaydoc", - "hex", - "mc-consensus-service-config", - "mc-crypto-keys", - "mc-transaction-core", - "serde", - "serde_json", + "toml", ] [[package]] name = "mc-consensus-scp" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "crossbeam-channel", "maplit", @@ -2993,7 +2985,7 @@ dependencies = [ [[package]] name = "mc-consensus-scp-play" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "mc-common", @@ -3005,7 +2997,7 @@ dependencies = [ [[package]] name = "mc-consensus-scp-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-common", "mc-crypto-digestible", @@ -3021,7 +3013,7 @@ dependencies = [ [[package]] name = "mc-consensus-service" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "chrono", @@ -3087,7 +3079,7 @@ dependencies = [ [[package]] name = "mc-consensus-service-config" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "clap 4.0.18", @@ -3108,7 +3100,6 @@ dependencies = [ "pem", "serde", "serde_json", - "serde_with", "toml", ] @@ -3165,7 +3156,7 @@ dependencies = [ [[package]] name = "mc-crypto-ake-enclave" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes-gcm 0.9.4", "digest 0.10.5", @@ -3185,7 +3176,7 @@ dependencies = [ [[package]] name = "mc-crypto-box" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead 0.4.3", "digest 0.10.5", @@ -3201,7 +3192,7 @@ dependencies = [ [[package]] name = "mc-crypto-dalek" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", @@ -3230,7 +3221,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "curve25519-dalek", @@ -3244,7 +3235,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -3253,7 +3244,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive-test" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-digestible-test-utils", @@ -3261,7 +3252,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-signature" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "schnorrkel-og", @@ -3270,7 +3261,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-test-utils" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "serde_json", @@ -3278,7 +3269,7 @@ dependencies = [ [[package]] name = "mc-crypto-hashes" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "blake2", "digest 0.10.5", @@ -3287,7 +3278,7 @@ dependencies = [ [[package]] name = "mc-crypto-keys" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "curve25519-dalek", @@ -3323,7 +3314,7 @@ dependencies = [ [[package]] name = "mc-crypto-message-cipher" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes-gcm 0.9.4", "displaydoc", @@ -3337,7 +3328,7 @@ dependencies = [ [[package]] name = "mc-crypto-multisig" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-keys", @@ -3351,7 +3342,7 @@ dependencies = [ [[package]] name = "mc-crypto-noise" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead 0.4.3", "aes-gcm 0.9.4", @@ -3372,7 +3363,7 @@ dependencies = [ [[package]] name = "mc-crypto-rand" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "rand 0.8.5", @@ -3381,7 +3372,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -3411,7 +3402,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature-signer" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -3438,7 +3429,7 @@ dependencies = [ [[package]] name = "mc-crypto-x509-test-vectors" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "clap 4.0.18", @@ -3450,7 +3441,7 @@ dependencies = [ [[package]] name = "mc-crypto-x509-utils" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-crypto-keys", @@ -3461,7 +3452,7 @@ dependencies = [ [[package]] name = "mc-enclave-boundary" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-common", "mc-crypto-rand", @@ -3472,7 +3463,7 @@ dependencies = [ [[package]] name = "mc-fog-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -3504,7 +3495,7 @@ dependencies = [ [[package]] name = "mc-fog-distribution" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "crossbeam-channel", @@ -3538,7 +3529,7 @@ dependencies = [ [[package]] name = "mc-fog-enclave-connection" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes-gcm 0.9.4", "cookie", @@ -3562,7 +3553,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-client" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "assert_cmd", "clap 4.0.18", @@ -3601,7 +3592,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "criterion", @@ -3636,7 +3627,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -3653,7 +3644,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -3661,7 +3652,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-impl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aligned-cmov", "mc-account-keys", @@ -3694,7 +3685,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-measurement" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-attest-core", @@ -3707,7 +3698,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-report" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -3719,7 +3710,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-server" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "dirs", @@ -3777,7 +3768,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-server-test-utils" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-attest-net", "mc-blockchain-test-utils", @@ -3802,7 +3793,7 @@ dependencies = [ [[package]] name = "mc-fog-kex-rng" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "digest 0.10.5", "displaydoc", @@ -3818,7 +3809,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-connection" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "grpcio", @@ -3840,7 +3831,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-attest-core", @@ -3869,7 +3860,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -3887,7 +3878,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -3895,7 +3886,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-impl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aligned-cmov", "mc-attest-core", @@ -3918,7 +3909,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-measurement" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-attest-core", @@ -3931,7 +3922,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-server" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -3986,7 +3977,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-test-infra" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-attest-core", "mc-attest-enclave-api", @@ -4003,7 +3994,7 @@ dependencies = [ [[package]] name = "mc-fog-load-testing" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "grpcio", @@ -4031,14 +4022,14 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-fog-ocall-oram-storage-testing" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aligned-cmov", "mc-fog-ocall-oram-storage-trusted", @@ -4049,7 +4040,7 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes 0.7.5", "aligned-cmov", @@ -4066,7 +4057,7 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-untrusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "lazy_static", "mc-common", @@ -4074,7 +4065,7 @@ dependencies = [ [[package]] name = "mc-fog-overseer-server" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -4113,7 +4104,7 @@ dependencies = [ [[package]] name = "mc-fog-recovery-db-iface" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "chrono", "displaydoc", @@ -4129,7 +4120,7 @@ dependencies = [ [[package]] name = "mc-fog-report-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "futures", @@ -4148,7 +4139,7 @@ dependencies = [ [[package]] name = "mc-fog-report-api-test-utils" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-util-serial", "prost", @@ -4157,7 +4148,7 @@ dependencies = [ [[package]] name = "mc-fog-report-cli" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "clap 4.0.18", @@ -4181,7 +4172,7 @@ dependencies = [ [[package]] name = "mc-fog-report-connection" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "grpcio", @@ -4198,7 +4189,7 @@ dependencies = [ [[package]] name = "mc-fog-report-resolver" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-account-keys", "mc-attest-verifier", @@ -4213,7 +4204,7 @@ dependencies = [ [[package]] name = "mc-fog-report-server" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -4249,7 +4240,7 @@ dependencies = [ [[package]] name = "mc-fog-report-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-attest-core", "mc-crypto-digestible", @@ -4259,7 +4250,7 @@ dependencies = [ [[package]] name = "mc-fog-report-validation" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-account-keys", @@ -4272,7 +4263,7 @@ dependencies = [ [[package]] name = "mc-fog-report-validation-test-utils" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-account-keys", "mc-fog-report-validation", @@ -4280,7 +4271,7 @@ dependencies = [ [[package]] name = "mc-fog-sample-paykit" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "clap 4.0.18", @@ -4332,7 +4323,7 @@ dependencies = [ [[package]] name = "mc-fog-sig" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-account-keys", @@ -4353,7 +4344,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-authority" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-keys", "mc-util-from-random", @@ -4364,7 +4355,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-report" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -4379,7 +4370,7 @@ dependencies = [ [[package]] name = "mc-fog-sql-recovery-db" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "chrono", "clap 4.0.18", @@ -4413,7 +4404,7 @@ dependencies = [ [[package]] name = "mc-fog-sql-recovery-db-cleanup" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "chrono", "clap 4.0.18", @@ -4425,7 +4416,7 @@ dependencies = [ [[package]] name = "mc-fog-test-client" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -4459,7 +4450,7 @@ dependencies = [ [[package]] name = "mc-fog-test-infra" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "digest 0.10.5", @@ -4493,7 +4484,7 @@ dependencies = [ [[package]] name = "mc-fog-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "crc", "displaydoc", @@ -4513,7 +4504,7 @@ dependencies = [ [[package]] name = "mc-fog-uri" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-common", "mc-util-uri", @@ -4521,7 +4512,7 @@ dependencies = [ [[package]] name = "mc-fog-view-connection" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "grpcio", "mc-attest-core", @@ -4541,7 +4532,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "criterion", @@ -4576,7 +4567,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -4594,7 +4585,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -4602,7 +4593,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-impl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aligned-cmov", "mc-attest-core", @@ -4624,7 +4615,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-measurement" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-attest-core", @@ -4637,7 +4628,7 @@ dependencies = [ [[package]] name = "mc-fog-view-load-test" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "grpcio", @@ -4656,7 +4647,7 @@ dependencies = [ [[package]] name = "mc-fog-view-protocol" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-account-keys", @@ -4679,7 +4670,7 @@ dependencies = [ [[package]] name = "mc-fog-view-server" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -4730,7 +4721,7 @@ dependencies = [ [[package]] name = "mc-ledger-db" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "lazy_static", @@ -4759,7 +4750,7 @@ dependencies = [ [[package]] name = "mc-ledger-distribution" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "dirs", @@ -4782,7 +4773,7 @@ dependencies = [ [[package]] name = "mc-ledger-from-archive" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "mc-api", @@ -4793,7 +4784,7 @@ dependencies = [ [[package]] name = "mc-ledger-migration" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "lmdb-rkv", @@ -4806,7 +4797,7 @@ dependencies = [ [[package]] name = "mc-ledger-sync" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "crossbeam-channel", "displaydoc", @@ -4840,7 +4831,7 @@ dependencies = [ [[package]] name = "mc-mobilecoind" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes-gcm 0.9.4", "clap 4.0.18", @@ -4910,7 +4901,7 @@ dependencies = [ [[package]] name = "mc-mobilecoind-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "futures", @@ -4929,7 +4920,7 @@ dependencies = [ [[package]] name = "mc-mobilecoind-dev-faucet" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "async-channel", "clap 4.0.18", @@ -4961,7 +4952,7 @@ dependencies = [ [[package]] name = "mc-mobilecoind-json" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "grpcio", @@ -5038,7 +5029,7 @@ dependencies = [ [[package]] name = "mc-peers" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "crossbeam-channel", "displaydoc", @@ -5071,7 +5062,7 @@ dependencies = [ [[package]] name = "mc-peers-test-utils" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "grpcio", "hex", @@ -5095,7 +5086,7 @@ dependencies = [ [[package]] name = "mc-sgx-build" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cc", "lazy_static", @@ -5105,7 +5096,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-sgx-types", @@ -5113,7 +5104,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-sgx-debug-edl", @@ -5122,7 +5113,7 @@ dependencies = [ [[package]] name = "mc-sgx-css" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "sha2 0.10.6", @@ -5130,7 +5121,7 @@ dependencies = [ [[package]] name = "mc-sgx-css-dump" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "hex_fmt", @@ -5139,21 +5130,21 @@ dependencies = [ [[package]] name = "mc-sgx-debug-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-panic-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-report-cache-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -5164,7 +5155,7 @@ dependencies = [ [[package]] name = "mc-sgx-report-cache-untrusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -5180,7 +5171,7 @@ dependencies = [ [[package]] name = "mc-sgx-slog" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-common", @@ -5190,18 +5181,18 @@ dependencies = [ [[package]] name = "mc-sgx-slog-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-urts" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-common", "mc-sgx-build", @@ -5212,7 +5203,7 @@ dependencies = [ [[package]] name = "mc-test-vectors-account-keys" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "hex", "mc-account-keys", @@ -5224,7 +5215,7 @@ dependencies = [ [[package]] name = "mc-test-vectors-b58-encodings" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-account-keys", "mc-api", @@ -5234,7 +5225,7 @@ dependencies = [ [[package]] name = "mc-test-vectors-definitions" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-util-test-vector", "serde", @@ -5243,7 +5234,7 @@ dependencies = [ [[package]] name = "mc-test-vectors-memos" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "hex", "mc-account-keys", @@ -5258,7 +5249,7 @@ dependencies = [ [[package]] name = "mc-test-vectors-tx-out-records" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "hex", "mc-account-keys", @@ -5280,7 +5271,7 @@ dependencies = [ [[package]] name = "mc-transaction-builder" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "assert_matches", "cfg-if 1.0.0", @@ -5313,7 +5304,7 @@ dependencies = [ [[package]] name = "mc-transaction-core" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes 0.7.5", "assert_matches", @@ -5360,7 +5351,7 @@ dependencies = [ [[package]] name = "mc-transaction-core-test-utils" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-account-keys", "mc-crypto-keys", @@ -5375,7 +5366,7 @@ dependencies = [ [[package]] name = "mc-transaction-extra" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "assert_matches", "cfg-if 1.0.0", @@ -5391,12 +5382,15 @@ dependencies = [ "mc-crypto-ring-signature", "mc-crypto-ring-signature-signer", "mc-fog-report-validation-test-utils", + "mc-transaction-builder", "mc-transaction-core", "mc-transaction-types", "mc-util-from-random", "mc-util-repr-bytes", "mc-util-serial", "mc-util-test-helper", + "mc-util-vec-map", + "mc-util-zip-exact", "prost", "rand 0.8.5", "rand_core 0.6.4", @@ -5409,7 +5403,7 @@ dependencies = [ [[package]] name = "mc-transaction-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-crypto-digestible", @@ -5420,7 +5414,7 @@ dependencies = [ [[package]] name = "mc-util-b58-decoder" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "hex", @@ -5429,7 +5423,7 @@ dependencies = [ [[package]] name = "mc-util-build-enclave" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "cargo_metadata 0.15.1", @@ -5445,7 +5439,7 @@ dependencies = [ [[package]] name = "mc-util-build-grpc" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-util-build-script", "protoc-grpcio", @@ -5453,7 +5447,7 @@ dependencies = [ [[package]] name = "mc-util-build-info" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "json", @@ -5461,7 +5455,7 @@ dependencies = [ [[package]] name = "mc-util-build-script" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -5472,7 +5466,7 @@ dependencies = [ [[package]] name = "mc-util-build-sgx" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "cc", @@ -5483,7 +5477,7 @@ dependencies = [ [[package]] name = "mc-util-cli" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "mc-util-build-info", @@ -5491,7 +5485,7 @@ dependencies = [ [[package]] name = "mc-util-dump-ledger" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -5504,7 +5498,7 @@ dependencies = [ [[package]] name = "mc-util-encodings" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "displaydoc", @@ -5515,18 +5509,18 @@ dependencies = [ [[package]] name = "mc-util-ffi" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-util-from-random" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "rand_core 0.6.4", ] [[package]] name = "mc-util-generate-sample-ledger" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "mc-account-keys", @@ -5545,7 +5539,7 @@ dependencies = [ [[package]] name = "mc-util-grpc" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "clap 4.0.18", @@ -5579,7 +5573,7 @@ dependencies = [ [[package]] name = "mc-util-grpc-admin-tool" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "grpcio", @@ -5590,7 +5584,7 @@ dependencies = [ [[package]] name = "mc-util-grpc-token-generator" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "mc-common", @@ -5601,11 +5595,11 @@ dependencies = [ [[package]] name = "mc-util-host-cert" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-util-keyfile" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "clap 4.0.18", @@ -5634,7 +5628,7 @@ dependencies = [ [[package]] name = "mc-util-lmdb" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "lmdb-rkv", @@ -5644,7 +5638,7 @@ dependencies = [ [[package]] name = "mc-util-logger-macros" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -5653,7 +5647,7 @@ dependencies = [ [[package]] name = "mc-util-metered-channel" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "crossbeam-channel", "mc-util-metrics", @@ -5661,7 +5655,7 @@ dependencies = [ [[package]] name = "mc-util-metrics" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "chrono", "grpcio", @@ -5674,7 +5668,7 @@ dependencies = [ [[package]] name = "mc-util-parse" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "hex", "itertools", @@ -5683,7 +5677,7 @@ dependencies = [ [[package]] name = "mc-util-repr-bytes" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "generic-array", "hex_fmt", @@ -5694,7 +5688,7 @@ dependencies = [ [[package]] name = "mc-util-seeded-ed25519-key-gen" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "mc-crypto-keys", @@ -5707,7 +5701,7 @@ dependencies = [ [[package]] name = "mc-util-serial" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "prost", "protobuf", @@ -5719,7 +5713,7 @@ dependencies = [ [[package]] name = "mc-util-telemetry" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "displaydoc", @@ -5730,7 +5724,7 @@ dependencies = [ [[package]] name = "mc-util-test-helper" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "itertools", @@ -5743,7 +5737,7 @@ dependencies = [ [[package]] name = "mc-util-test-vector" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "serde", "serde_json", @@ -5751,7 +5745,7 @@ dependencies = [ [[package]] name = "mc-util-test-with-data" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -5760,7 +5754,7 @@ dependencies = [ [[package]] name = "mc-util-uri" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "displaydoc", @@ -5778,7 +5772,7 @@ dependencies = [ [[package]] name = "mc-util-vec-map" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "heapless", @@ -5786,14 +5780,14 @@ dependencies = [ [[package]] name = "mc-util-zip-exact" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "serde", ] [[package]] name = "mc-wasm-test" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "getrandom 0.2.8", "mc-account-keys", @@ -5808,7 +5802,7 @@ dependencies = [ [[package]] name = "mc-watcher" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -5852,7 +5846,7 @@ dependencies = [ [[package]] name = "mc-watcher-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "serde", @@ -6106,9 +6100,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.14.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ "hermit-abi", "libc", @@ -6643,9 +6637,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a" +checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" dependencies = [ "bytes 1.1.0", "prost-derive", @@ -6941,9 +6935,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" dependencies = [ "aho-corasick", "memchr", @@ -7097,7 +7091,7 @@ dependencies = [ "serde_json", "state", "tempfile", - "time 0.3.15", + "time 0.3.9", "tokio", "tokio-stream", "tokio-util 0.7.2", @@ -7144,7 +7138,7 @@ dependencies = [ "smallvec", "stable-pattern", "state", - "time 0.3.15", + "time 0.3.9", "tokio", "uncased", ] @@ -7560,7 +7554,7 @@ dependencies = [ "serde", "serde_json", "thiserror", - "time 0.3.15", + "time 0.3.9", "url", "uuid", ] @@ -7642,14 +7636,8 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "368f2d60d049ea019a84dcd6687b0d1e0030fe663ae105039bdf967ed5e6a9a7" dependencies = [ - "base64", - "chrono", - "hex", - "indexmap", "serde", - "serde_json", "serde_with_macros", - "time 0.3.15", ] [[package]] @@ -7884,7 +7872,7 @@ dependencies = [ "serde", "serde_json", "slog", - "time 0.3.15", + "time 0.3.9", ] [[package]] @@ -7919,7 +7907,7 @@ dependencies = [ "slog", "term", "thread_local", - "time 0.3.15", + "time 0.3.9", ] [[package]] @@ -8179,14 +8167,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.15" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c" +checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" dependencies = [ "itoa 1.0.1", "libc", "num_threads", - "serde", "time-macros", ] diff --git a/account-keys/Cargo.toml b/account-keys/Cargo.toml index 8bd038d91c..1a535bc634 100644 --- a/account-keys/Cargo.toml +++ b/account-keys/Cargo.toml @@ -16,7 +16,13 @@ default = ["std", "prost", "serde", "mc-util-serial", "mc-crypto-digestible/defa curve25519-dalek = { version = "4.0.0-pre.2", default-features = false, features = ["nightly"] } # External dependencies displaydoc = { version = "0.2", default-features = false } +hex_fmt = "0.3" hkdf = "0.12.3" +prost = { version = "0.11", optional = true, default-features = false, features = ["prost-derive"] } +rand_core = { version = "0.6", default-features = false } +serde = { version = "1.0", default-features = false } +subtle = { version = "2", default-features = false } +zeroize = { version = "1", default-features = false } # MobileCoin dependencies mc-account-keys-types = { path = "types" } @@ -28,10 +34,6 @@ mc-fog-sig-authority = { path = "../fog/sig/authority" } mc-util-from-random = { path = "../util/from-random" } mc-util-repr-bytes = { path = "../util/repr-bytes", default-features = false } mc-util-serial = { path = "../util/serial", optional = true } -prost = { version = "0.11", optional = true, default-features = false, features = ["prost-derive"] } -rand_core = { version = "0.6", default-features = false } -subtle = { version = "2", default-features = false } -zeroize = { version = "1", default-features = false } [dev-dependencies] criterion = "0.4" diff --git a/account-keys/src/account_keys.rs b/account-keys/src/account_keys.rs index dc1c5b0860..281ba46753 100644 --- a/account-keys/src/account_keys.rs +++ b/account-keys/src/account_keys.rs @@ -37,14 +37,27 @@ use mc_util_from_random::FromRandom; #[cfg(feature = "prost")] use prost::Message; use rand_core::{CryptoRng, RngCore}; +use serde::{Deserialize, Serialize}; use zeroize::Zeroize; pub use mc_core::consts::{ CHANGE_SUBADDRESS_INDEX, DEFAULT_SUBADDRESS_INDEX, GIFT_CODE_SUBADDRESS_INDEX, INVALID_SUBADDRESS_INDEX, }; + /// A MobileCoin user's public subaddress. -#[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Digestible)] +#[derive( + Clone, + Deserialize, + Digestible, + Eq, + Hash, + Ord, + PartialEq, + PartialOrd, + Serialize, + Zeroize, +)] #[cfg_attr(feature = "prost", derive(Message))] pub struct PublicAddress { /// The user's public subaddress view key 'C'. diff --git a/account-keys/src/address_hash.rs b/account-keys/src/address_hash.rs index c8a4ec2e75..daf87966e1 100644 --- a/account-keys/src/address_hash.rs +++ b/account-keys/src/address_hash.rs @@ -4,13 +4,14 @@ //! This is used in certain memos, as a compact representation of the address. use crate::account_keys::PublicAddress; +use hex_fmt::HexFmt; use mc_crypto_digestible::{Digestible, MerlinTranscript}; use subtle::{Choice, ConstantTimeEq}; /// Represents a "standard" public address hash created using merlin, /// used in memos as a compact representation of a MobileCoin public address. /// This hash is collision resistant. -#[derive(Default, Debug, Clone, Eq, Hash, PartialEq, Ord, PartialOrd)] +#[derive(Clone, Default, Debug, Eq, Hash, PartialEq, Ord, PartialOrd)] pub struct ShortAddressHash([u8; 16]); impl From<[u8; 16]> for ShortAddressHash { @@ -43,3 +44,9 @@ impl ConstantTimeEq for ShortAddressHash { self.0.ct_eq(&other.0) } } + +impl core::fmt::Display for ShortAddressHash { + fn fmt(&self, formatter: &mut core::fmt::Formatter) -> core::fmt::Result { + write!(formatter, "{}", HexFmt(self.0.as_ref())) + } +} diff --git a/api/proto/external.proto b/api/proto/external.proto index 68d30653f2..4ea30caa3c 100644 --- a/api/proto/external.proto +++ b/api/proto/external.proto @@ -614,10 +614,31 @@ message UnsignedTx { repeated InputRing rings = 2; /// The amount and blinding factors of each of the outputs we are creating. - repeated OutputSecret output_secrets = 3; + repeated OutputSecret output_secrets = 3 [deprecated = true]; /// The block version that this transaction is valid for. uint32 block_version = 4; + + /// The unblinding data for each of the outputs we are creating. + repeated TxOutSummaryUnblindingData tx_out_unblinding_data = 5; +} + +message TxOutSummaryUnblindingData { + /// An unmasked amount, corresponding to the MaskedAmount field + /// The block version appears in the TxSummaryUnblindingData. + UnmaskedAmount unmasked_amount = 1; + + /// The public address to which this TxOut is addressed. + /// If this output comes from an SCI then we may not know the public + /// address. + PublicAddress address = 2; + + /// The tx_private_key generated for this TxOut. This is an entropy source + /// which introduces randomness into the cryptonote stealth addresses + /// (tx_public_key and tx_target_key) of the TxOut. + /// + /// If this output comes from an SCI then we may not know this. + RistrettoPrivate tx_private_key = 3; } /// A structure that contains all the data required to sign a transaction that diff --git a/api/src/convert/signing_data.rs b/api/src/convert/signing_data.rs index b18da24ca3..acd7a7ca31 100644 --- a/api/src/convert/signing_data.rs +++ b/api/src/convert/signing_data.rs @@ -107,7 +107,7 @@ mod tests { .build_unsigned::() .unwrap(); - let (signing_data, _, _) = unsigned_tx.get_signing_data(&mut rng).unwrap(); + let (signing_data, _, _, _) = unsigned_tx.get_signing_data(&mut rng).unwrap(); // Converting mc_transaction_core::ring_ct::SigningData -> external::SigningData // -> mc_transaction_core::ring_ct::SigningData should be the identity diff --git a/api/src/convert/unsigned_tx.rs b/api/src/convert/unsigned_tx.rs index 5aafaa3ffc..b135f9b096 100644 --- a/api/src/convert/unsigned_tx.rs +++ b/api/src/convert/unsigned_tx.rs @@ -4,7 +4,7 @@ use crate::{external, ConversionError}; use mc_blockchain_types::BlockVersion; -use mc_transaction_extra::UnsignedTx; +use mc_transaction_extra::{TxOutSummaryUnblindingData, UnmaskedAmount, UnsignedTx}; impl From<&UnsignedTx> for external::UnsignedTx { fn from(source: &UnsignedTx) -> Self { @@ -13,11 +13,11 @@ impl From<&UnsignedTx> for external::UnsignedTx { unsigned_tx.set_rings(protobuf::RepeatedField::from_vec( source.rings.iter().map(|input| input.into()).collect(), )); - unsigned_tx.set_output_secrets(protobuf::RepeatedField::from_vec( + unsigned_tx.set_tx_out_unblinding_data(protobuf::RepeatedField::from_vec( source - .output_secrets + .tx_out_unblinding_data .iter() - .map(|output| output.into()) + .map(Into::into) .collect(), )); unsigned_tx.set_block_version(*source.block_version); @@ -36,16 +36,72 @@ impl TryFrom<&external::UnsignedTx> for UnsignedTx { .iter() .map(|input| input.try_into()) .collect::>()?, - output_secrets: source - .get_output_secrets() + tx_out_unblinding_data: source + .tx_out_unblinding_data .iter() - .map(|output| output.try_into()) + .map(|data| data.try_into()) .collect::>()?, block_version: BlockVersion::try_from(source.get_block_version())?, }) } } +impl From<&TxOutSummaryUnblindingData> for external::TxOutSummaryUnblindingData { + fn from(src: &TxOutSummaryUnblindingData) -> Self { + let mut data = external::TxOutSummaryUnblindingData::new(); + data.set_unmasked_amount((&src.unmasked_amount).into()); + if let Some(address) = &src.address { + data.set_address(address.into()); + } + if let Some(tx_private_key) = &src.tx_private_key { + data.set_tx_private_key(tx_private_key.into()); + } + data + } +} + +impl TryFrom<&external::TxOutSummaryUnblindingData> for TxOutSummaryUnblindingData { + type Error = ConversionError; + + fn try_from(source: &external::TxOutSummaryUnblindingData) -> Result { + Ok(TxOutSummaryUnblindingData { + unmasked_amount: source + .unmasked_amount + .as_ref() + .ok_or_else(|| ConversionError::MissingField("unmasked_amount".into()))? + .try_into()?, + address: source.address.as_ref().map(TryInto::try_into).transpose()?, + tx_private_key: source + .tx_private_key + .as_ref() + .map(TryInto::try_into) + .transpose()?, + }) + } +} + +impl From<&UnmaskedAmount> for external::UnmaskedAmount { + fn from(src: &UnmaskedAmount) -> Self { + let mut data = external::UnmaskedAmount::new(); + data.set_value(src.value); + data.set_token_id(src.token_id); + data.set_blinding((&src.blinding).into()); + data + } +} + +impl TryFrom<&external::UnmaskedAmount> for UnmaskedAmount { + type Error = ConversionError; + + fn try_from(source: &external::UnmaskedAmount) -> Result { + Ok(UnmaskedAmount { + value: source.get_value(), + token_id: source.get_token_id(), + blinding: source.get_blinding().try_into()?, + }) + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/consensus/enclave/trusted/Cargo.lock b/consensus/enclave/trusted/Cargo.lock index 146dcc38fe..08488a06cd 100644 --- a/consensus/enclave/trusted/Cargo.lock +++ b/consensus/enclave/trusted/Cargo.lock @@ -49,9 +49,9 @@ dependencies = [ [[package]] name = "android_system_properties" -version = "0.1.5" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e" dependencies = [ "libc", ] @@ -67,9 +67,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" [[package]] name = "arrayref" @@ -102,9 +102,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "base64" -version = "0.13.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bindgen" @@ -202,9 +202,9 @@ checksum = "1582e1c9e755dd6ad6b224dcffb135d199399a4568d454bd89fe515ca8425695" [[package]] name = "cc" -version = "1.0.74" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cexpr" @@ -540,9 +540,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iana-time-zone" -version = "0.1.50" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd911b35d940d2bd0bea0f9100068e5b97b51a1cbe13d13382f132e0365257a0" +checksum = "ad2bfd338099682614d3ee3fe0cd72e0b6a41ca6a87f6a74a3bd593c91650501" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -686,10 +686,11 @@ dependencies = [ [[package]] name = "mc-account-keys" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", + "hex_fmt", "hkdf", "mc-account-keys-types", "mc-core", @@ -702,20 +703,21 @@ dependencies = [ "mc-util-serial", "prost", "rand_core", + "serde", "subtle", "zeroize", ] [[package]] name = "mc-account-keys-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-keys", ] [[package]] name = "mc-attest-ake" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "cargo-emit", @@ -734,7 +736,7 @@ dependencies = [ [[package]] name = "mc-attest-core" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "bitflags", @@ -763,7 +765,7 @@ dependencies = [ [[package]] name = "mc-attest-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-ake", @@ -776,7 +778,7 @@ dependencies = [ [[package]] name = "mc-attest-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -787,7 +789,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "cfg-if 1.0.0", @@ -812,7 +814,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "displaydoc", @@ -826,7 +828,7 @@ dependencies = [ [[package]] name = "mc-blockchain-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "hex_fmt", @@ -849,14 +851,13 @@ dependencies = [ [[package]] name = "mc-common" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "displaydoc", "hashbrown", "hex", "hex_fmt", - "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-keys", "mc-crypto-rand", @@ -871,7 +872,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "hex", @@ -893,7 +894,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -901,7 +902,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-impl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "hex", @@ -933,7 +934,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "lazy_static", @@ -964,7 +965,7 @@ dependencies = [ [[package]] name = "mc-consensus-scp-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-common", "mc-crypto-digestible", @@ -984,7 +985,6 @@ dependencies = [ "glob", "hkdf", "mc-core-types", - "mc-crypto-dalek", "mc-crypto-hashes", "mc-crypto-keys", "sha2", @@ -1002,7 +1002,7 @@ dependencies = [ [[package]] name = "mc-crypto-ake-enclave" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes-gcm", "digest", @@ -1022,7 +1022,7 @@ dependencies = [ [[package]] name = "mc-crypto-box" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "digest", @@ -1036,38 +1036,21 @@ dependencies = [ [[package]] name = "mc-crypto-dalek" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", - "mc-crypto-dalek-backend-simd", - "mc-crypto-dalek-backend-u64", "x25519-dalek", ] -[[package]] -name = "mc-crypto-dalek-backend-simd" -version = "2.0.0" -dependencies = [ - "curve25519-dalek", -] - -[[package]] -name = "mc-crypto-dalek-backend-u64" -version = "2.0.0" -dependencies = [ - "curve25519-dalek", -] - [[package]] name = "mc-crypto-digestible" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "curve25519-dalek", "ed25519-dalek", "generic-array", - "mc-crypto-dalek", "mc-crypto-digestible-derive", "merlin", "x25519-dalek", @@ -1075,7 +1058,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -1084,7 +1067,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-signature" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "schnorrkel-og", @@ -1093,7 +1076,7 @@ dependencies = [ [[package]] name = "mc-crypto-hashes" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "blake2", "digest", @@ -1102,7 +1085,7 @@ dependencies = [ [[package]] name = "mc-crypto-keys" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "curve25519-dalek", @@ -1131,7 +1114,7 @@ dependencies = [ [[package]] name = "mc-crypto-message-cipher" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes-gcm", "displaydoc", @@ -1144,7 +1127,7 @@ dependencies = [ [[package]] name = "mc-crypto-multisig" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-keys", @@ -1154,7 +1137,7 @@ dependencies = [ [[package]] name = "mc-crypto-noise" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "aes-gcm", @@ -1174,7 +1157,7 @@ dependencies = [ [[package]] name = "mc-crypto-rand" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "rand", @@ -1183,13 +1166,13 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", - "ed25519-dalek", + "hex_fmt", + "mc-account-keys", "mc-account-keys-types", - "mc-core-types", "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", @@ -1207,7 +1190,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature-signer" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1228,7 +1211,7 @@ dependencies = [ [[package]] name = "mc-enclave-boundary" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-common", "mc-crypto-rand", @@ -1239,7 +1222,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-authority" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-keys", "signature", @@ -1262,11 +1245,11 @@ dependencies = [ [[package]] name = "mc-sgx-alloc" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-build" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cc", "lazy_static", @@ -1276,7 +1259,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-sgx-alloc", @@ -1289,7 +1272,7 @@ dependencies = [ [[package]] name = "mc-sgx-css" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "sha2", @@ -1297,29 +1280,29 @@ dependencies = [ [[package]] name = "mc-sgx-debug" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-enclave-id" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-types", ] [[package]] name = "mc-sgx-panic" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-panic-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-report-cache-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1330,7 +1313,7 @@ dependencies = [ [[package]] name = "mc-sgx-service" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-build", "mc-sgx-types", @@ -1338,7 +1321,7 @@ dependencies = [ [[package]] name = "mc-sgx-slog" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-common", @@ -1348,14 +1331,14 @@ dependencies = [ [[package]] name = "mc-sgx-slog-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-sync" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-panic", "mc-sgx-types", @@ -1363,11 +1346,11 @@ dependencies = [ [[package]] name = "mc-sgx-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-transaction-core" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes", "bulletproofs-og", @@ -1381,7 +1364,6 @@ dependencies = [ "mc-account-keys", "mc-common", "mc-crypto-box", - "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", "mc-crypto-keys", @@ -1404,7 +1386,7 @@ dependencies = [ [[package]] name = "mc-transaction-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-crypto-digestible", @@ -1415,7 +1397,7 @@ dependencies = [ [[package]] name = "mc-util-build-script" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -1426,7 +1408,7 @@ dependencies = [ [[package]] name = "mc-util-build-sgx" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "cc", @@ -1437,7 +1419,7 @@ dependencies = [ [[package]] name = "mc-util-encodings" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "displaydoc", @@ -1448,14 +1430,14 @@ dependencies = [ [[package]] name = "mc-util-from-random" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "rand_core", ] [[package]] name = "mc-util-repr-bytes" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "generic-array", "hex_fmt", @@ -1465,7 +1447,7 @@ dependencies = [ [[package]] name = "mc-util-serial" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "prost", "serde", @@ -1474,7 +1456,7 @@ dependencies = [ [[package]] name = "mc-util-zip-exact" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "serde", ] @@ -1582,9 +1564,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "polyval" @@ -1615,9 +1597,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a" +checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" dependencies = [ "bytes", "prost-derive", @@ -1757,9 +1739,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.147" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" dependencies = [ "serde_derive", ] @@ -1784,9 +1766,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.147" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" dependencies = [ "proc-macro2", "quote", @@ -1806,9 +1788,9 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.6" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" +checksum = "e2904bea16a1ae962b483322a1c7b81d976029203aea1f461e51cd7705db7ba9" dependencies = [ "digest", "keccak", diff --git a/crypto/keys/src/ristretto.rs b/crypto/keys/src/ristretto.rs index bd58932dc7..1a7eec5ed7 100644 --- a/crypto/keys/src/ristretto.rs +++ b/crypto/keys/src/ristretto.rs @@ -49,7 +49,8 @@ use subtle::{Choice, ConstantTimeEq}; use zeroize::Zeroize; /// A Ristretto-format private scalar -#[derive(Clone, Copy, Default, Zeroize)] +#[derive(Clone, Copy, Default, Digestible, Zeroize)] +#[digestible(transparent)] pub struct RistrettoPrivate(pub(crate) Scalar); impl Eq for RistrettoPrivate {} diff --git a/crypto/ring-signature/src/ring_signature/key_image.rs b/crypto/ring-signature/src/ring_signature/key_image.rs index 3f48d2a588..e065b920dd 100644 --- a/crypto/ring-signature/src/ring_signature/key_image.rs +++ b/crypto/ring-signature/src/ring_signature/key_image.rs @@ -14,8 +14,9 @@ use mc_util_repr_bytes::derive_prost_message_from_repr_bytes; #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; +use zeroize::Zeroize; -#[derive(Copy, Clone, Default, Digestible)] +#[derive(Clone, Copy, Default, Digestible, Zeroize)] #[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] #[digestible(transparent)] /// The "image" of a private key `x`: I = x * Hp(x * G) = x * Hp(P). diff --git a/crypto/ring-signature/src/ring_signature/mlsag.rs b/crypto/ring-signature/src/ring_signature/mlsag.rs index 3cbd015dbc..40e88bd7e7 100644 --- a/crypto/ring-signature/src/ring_signature/mlsag.rs +++ b/crypto/ring-signature/src/ring_signature/mlsag.rs @@ -10,7 +10,7 @@ use mc_crypto_keys::{CompressedRistrettoPublic, RistrettoPrivate, RistrettoPubli use prost::Message; use rand_core::CryptoRngCore; use serde::{Deserialize, Serialize}; -use zeroize::Zeroizing; +use zeroize::{Zeroize, Zeroizing}; use crate::{ domain_separators::RING_MLSAG_CHALLENGE_DOMAIN_TAG, @@ -34,7 +34,7 @@ pub struct ReducedTxOut { /// MLSAG for a ring of public keys and amount commitments. /// Note: Serialize and Deserialize appear to be cruft left over from /// sdk_json_interface. -#[derive(Clone, Digestible, PartialEq, Eq, Serialize, Deserialize, Message)] +#[derive(Clone, Digestible, PartialEq, Eq, Serialize, Deserialize, Message, Zeroize)] pub struct RingMLSAG { /// The initial challenge `c[0]`. #[prost(message, required, tag = "1")] diff --git a/fog/ingest/enclave/trusted/Cargo.lock b/fog/ingest/enclave/trusted/Cargo.lock index f2bf2a45fb..638bed79f8 100644 --- a/fog/ingest/enclave/trusted/Cargo.lock +++ b/fog/ingest/enclave/trusted/Cargo.lock @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" [[package]] name = "arrayref" @@ -131,9 +131,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bindgen" @@ -231,9 +231,9 @@ checksum = "1582e1c9e755dd6ad6b224dcffb135d199399a4568d454bd89fe515ca8425695" [[package]] name = "cc" -version = "1.0.74" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cexpr" @@ -706,10 +706,11 @@ dependencies = [ [[package]] name = "mc-account-keys" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", + "hex_fmt", "hkdf", "mc-account-keys-types", "mc-core", @@ -722,20 +723,21 @@ dependencies = [ "mc-util-serial", "prost", "rand_core", + "serde", "subtle", "zeroize", ] [[package]] name = "mc-account-keys-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-keys", ] [[package]] name = "mc-attest-ake" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "cargo-emit", @@ -754,7 +756,7 @@ dependencies = [ [[package]] name = "mc-attest-core" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "bitflags", @@ -783,7 +785,7 @@ dependencies = [ [[package]] name = "mc-attest-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-ake", @@ -796,7 +798,7 @@ dependencies = [ [[package]] name = "mc-attest-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -807,7 +809,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "cfg-if 1.0.0", @@ -832,7 +834,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "displaydoc", @@ -846,7 +848,7 @@ dependencies = [ [[package]] name = "mc-blockchain-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "hex_fmt", @@ -869,14 +871,13 @@ dependencies = [ [[package]] name = "mc-common" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "displaydoc", "hashbrown", "hex", "hex_fmt", - "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-keys", "mc-crypto-rand", @@ -891,7 +892,7 @@ dependencies = [ [[package]] name = "mc-consensus-scp-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-common", "mc-crypto-digestible", @@ -911,7 +912,6 @@ dependencies = [ "glob", "hkdf", "mc-core-types", - "mc-crypto-dalek", "mc-crypto-hashes", "mc-crypto-keys", "sha2", @@ -929,7 +929,7 @@ dependencies = [ [[package]] name = "mc-crypto-ake-enclave" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes-gcm", "digest", @@ -949,7 +949,7 @@ dependencies = [ [[package]] name = "mc-crypto-box" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "digest", @@ -963,38 +963,21 @@ dependencies = [ [[package]] name = "mc-crypto-dalek" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", - "mc-crypto-dalek-backend-simd", - "mc-crypto-dalek-backend-u64", "x25519-dalek", ] -[[package]] -name = "mc-crypto-dalek-backend-simd" -version = "2.0.0" -dependencies = [ - "curve25519-dalek", -] - -[[package]] -name = "mc-crypto-dalek-backend-u64" -version = "2.0.0" -dependencies = [ - "curve25519-dalek", -] - [[package]] name = "mc-crypto-digestible" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "curve25519-dalek", "ed25519-dalek", "generic-array", - "mc-crypto-dalek", "mc-crypto-digestible-derive", "merlin", "x25519-dalek", @@ -1002,7 +985,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -1011,7 +994,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-signature" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "schnorrkel-og", @@ -1020,7 +1003,7 @@ dependencies = [ [[package]] name = "mc-crypto-hashes" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "blake2", "digest", @@ -1029,7 +1012,7 @@ dependencies = [ [[package]] name = "mc-crypto-keys" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "curve25519-dalek", @@ -1058,7 +1041,7 @@ dependencies = [ [[package]] name = "mc-crypto-multisig" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-keys", @@ -1068,7 +1051,7 @@ dependencies = [ [[package]] name = "mc-crypto-noise" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "aes-gcm", @@ -1088,7 +1071,7 @@ dependencies = [ [[package]] name = "mc-crypto-rand" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "rand", @@ -1097,13 +1080,13 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", - "ed25519-dalek", + "hex_fmt", + "mc-account-keys", "mc-account-keys-types", - "mc-core-types", "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", @@ -1121,7 +1104,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature-signer" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1142,7 +1125,7 @@ dependencies = [ [[package]] name = "mc-enclave-boundary" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-common", "mc-crypto-rand", @@ -1153,7 +1136,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1170,7 +1153,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -1178,7 +1161,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-impl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aligned-cmov", "mc-attest-core", @@ -1207,7 +1190,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "lazy_static", @@ -1238,7 +1221,7 @@ dependencies = [ [[package]] name = "mc-fog-kex-rng" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "digest", "displaydoc", @@ -1253,14 +1236,14 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-fog-ocall-oram-storage-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes", "aligned-cmov", @@ -1276,7 +1259,7 @@ dependencies = [ [[package]] name = "mc-fog-recovery-db-iface" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "chrono", "displaydoc", @@ -1292,7 +1275,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-authority" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-keys", "signature", @@ -1300,7 +1283,7 @@ dependencies = [ [[package]] name = "mc-fog-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "crc", "displaydoc", @@ -1366,11 +1349,11 @@ dependencies = [ [[package]] name = "mc-sgx-alloc" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-build" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cc", "lazy_static", @@ -1380,7 +1363,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-sgx-alloc", @@ -1393,7 +1376,7 @@ dependencies = [ [[package]] name = "mc-sgx-css" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "sha2", @@ -1401,36 +1384,36 @@ dependencies = [ [[package]] name = "mc-sgx-debug" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-debug-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-enclave-id" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-types", ] [[package]] name = "mc-sgx-panic" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-panic-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-report-cache-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1441,7 +1424,7 @@ dependencies = [ [[package]] name = "mc-sgx-service" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-build", "mc-sgx-types", @@ -1449,7 +1432,7 @@ dependencies = [ [[package]] name = "mc-sgx-slog" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-common", @@ -1459,14 +1442,14 @@ dependencies = [ [[package]] name = "mc-sgx-slog-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-sync" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-panic", "mc-sgx-types", @@ -1474,11 +1457,11 @@ dependencies = [ [[package]] name = "mc-sgx-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-transaction-core" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes", "bulletproofs-og", @@ -1492,7 +1475,6 @@ dependencies = [ "mc-account-keys", "mc-common", "mc-crypto-box", - "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", "mc-crypto-keys", @@ -1515,7 +1497,7 @@ dependencies = [ [[package]] name = "mc-transaction-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-crypto-digestible", @@ -1526,7 +1508,7 @@ dependencies = [ [[package]] name = "mc-util-build-script" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -1537,7 +1519,7 @@ dependencies = [ [[package]] name = "mc-util-build-sgx" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "cc", @@ -1548,7 +1530,7 @@ dependencies = [ [[package]] name = "mc-util-encodings" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "displaydoc", @@ -1559,14 +1541,14 @@ dependencies = [ [[package]] name = "mc-util-from-random" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "rand_core", ] [[package]] name = "mc-util-repr-bytes" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "generic-array", "hex_fmt", @@ -1576,7 +1558,7 @@ dependencies = [ [[package]] name = "mc-util-serial" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "prost", "serde", @@ -1585,14 +1567,14 @@ dependencies = [ [[package]] name = "mc-util-zip-exact" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "serde", ] [[package]] name = "mc-watcher-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "serde", @@ -1692,9 +1674,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "polyval" @@ -1868,9 +1850,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.147" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" dependencies = [ "serde_derive", ] @@ -1895,9 +1877,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.147" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" dependencies = [ "proc-macro2", "quote", diff --git a/fog/ledger/enclave/trusted/Cargo.lock b/fog/ledger/enclave/trusted/Cargo.lock index 3bcecf0a18..cb697abe45 100644 --- a/fog/ledger/enclave/trusted/Cargo.lock +++ b/fog/ledger/enclave/trusted/Cargo.lock @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" [[package]] name = "arrayref" @@ -132,9 +132,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bindgen" @@ -232,9 +232,9 @@ checksum = "1582e1c9e755dd6ad6b224dcffb135d199399a4568d454bd89fe515ca8425695" [[package]] name = "cc" -version = "1.0.74" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cexpr" @@ -710,10 +710,11 @@ dependencies = [ [[package]] name = "mc-account-keys" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", + "hex_fmt", "hkdf", "mc-account-keys-types", "mc-core", @@ -726,20 +727,21 @@ dependencies = [ "mc-util-serial", "prost", "rand_core", + "serde", "subtle", "zeroize", ] [[package]] name = "mc-account-keys-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-keys", ] [[package]] name = "mc-attest-ake" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "cargo-emit", @@ -758,7 +760,7 @@ dependencies = [ [[package]] name = "mc-attest-core" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "bitflags", @@ -787,7 +789,7 @@ dependencies = [ [[package]] name = "mc-attest-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-ake", @@ -800,7 +802,7 @@ dependencies = [ [[package]] name = "mc-attest-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -811,7 +813,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "cfg-if", @@ -836,7 +838,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "displaydoc", @@ -850,14 +852,13 @@ dependencies = [ [[package]] name = "mc-common" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if", "displaydoc", "hashbrown", "hex", "hex_fmt", - "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-keys", "mc-crypto-rand", @@ -880,7 +881,6 @@ dependencies = [ "glob", "hkdf", "mc-core-types", - "mc-crypto-dalek", "mc-crypto-hashes", "mc-crypto-keys", "sha2", @@ -898,7 +898,7 @@ dependencies = [ [[package]] name = "mc-crypto-ake-enclave" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes-gcm", "digest", @@ -918,7 +918,7 @@ dependencies = [ [[package]] name = "mc-crypto-box" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "digest", @@ -932,38 +932,21 @@ dependencies = [ [[package]] name = "mc-crypto-dalek" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", - "mc-crypto-dalek-backend-simd", - "mc-crypto-dalek-backend-u64", "x25519-dalek", ] -[[package]] -name = "mc-crypto-dalek-backend-simd" -version = "2.0.0" -dependencies = [ - "curve25519-dalek", -] - -[[package]] -name = "mc-crypto-dalek-backend-u64" -version = "2.0.0" -dependencies = [ - "curve25519-dalek", -] - [[package]] name = "mc-crypto-digestible" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if", "curve25519-dalek", "ed25519-dalek", "generic-array", - "mc-crypto-dalek", "mc-crypto-digestible-derive", "merlin", "x25519-dalek", @@ -971,7 +954,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -980,7 +963,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-signature" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "schnorrkel-og", @@ -989,7 +972,7 @@ dependencies = [ [[package]] name = "mc-crypto-hashes" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "blake2", "digest", @@ -998,7 +981,7 @@ dependencies = [ [[package]] name = "mc-crypto-keys" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "curve25519-dalek", @@ -1027,7 +1010,7 @@ dependencies = [ [[package]] name = "mc-crypto-multisig" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-keys", @@ -1037,7 +1020,7 @@ dependencies = [ [[package]] name = "mc-crypto-noise" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "aes-gcm", @@ -1057,7 +1040,7 @@ dependencies = [ [[package]] name = "mc-crypto-rand" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if", "rand", @@ -1066,13 +1049,13 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", - "ed25519-dalek", + "hex_fmt", + "mc-account-keys", "mc-account-keys-types", - "mc-core-types", "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", @@ -1090,7 +1073,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature-signer" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1111,7 +1094,7 @@ dependencies = [ [[package]] name = "mc-enclave-boundary" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-common", "mc-crypto-rand", @@ -1122,7 +1105,7 @@ dependencies = [ [[package]] name = "mc-fog-kex-rng" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "digest", "displaydoc", @@ -1137,7 +1120,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1155,7 +1138,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -1163,7 +1146,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-impl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aligned-cmov", "mc-attest-core", @@ -1186,7 +1169,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "lazy_static", @@ -1217,14 +1200,14 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-fog-ocall-oram-storage-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes", "aligned-cmov", @@ -1240,7 +1223,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-authority" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-keys", "signature", @@ -1248,7 +1231,7 @@ dependencies = [ [[package]] name = "mc-fog-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "crc", "displaydoc", @@ -1314,11 +1297,11 @@ dependencies = [ [[package]] name = "mc-sgx-alloc" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-build" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cc", "lazy_static", @@ -1328,7 +1311,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if", "mc-sgx-alloc", @@ -1341,7 +1324,7 @@ dependencies = [ [[package]] name = "mc-sgx-css" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "sha2", @@ -1349,36 +1332,36 @@ dependencies = [ [[package]] name = "mc-sgx-debug" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-debug-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-enclave-id" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-types", ] [[package]] name = "mc-sgx-panic" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-panic-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-report-cache-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1389,7 +1372,7 @@ dependencies = [ [[package]] name = "mc-sgx-service" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-build", "mc-sgx-types", @@ -1397,7 +1380,7 @@ dependencies = [ [[package]] name = "mc-sgx-slog" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if", "mc-common", @@ -1407,14 +1390,14 @@ dependencies = [ [[package]] name = "mc-sgx-slog-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-sync" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-panic", "mc-sgx-types", @@ -1422,11 +1405,11 @@ dependencies = [ [[package]] name = "mc-sgx-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-transaction-core" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes", "bulletproofs-og", @@ -1440,7 +1423,6 @@ dependencies = [ "mc-account-keys", "mc-common", "mc-crypto-box", - "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", "mc-crypto-keys", @@ -1463,7 +1445,7 @@ dependencies = [ [[package]] name = "mc-transaction-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-crypto-digestible", @@ -1474,7 +1456,7 @@ dependencies = [ [[package]] name = "mc-util-build-script" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -1485,7 +1467,7 @@ dependencies = [ [[package]] name = "mc-util-build-sgx" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "cc", @@ -1496,7 +1478,7 @@ dependencies = [ [[package]] name = "mc-util-encodings" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "displaydoc", @@ -1507,14 +1489,14 @@ dependencies = [ [[package]] name = "mc-util-from-random" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "rand_core", ] [[package]] name = "mc-util-repr-bytes" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "generic-array", "hex_fmt", @@ -1524,7 +1506,7 @@ dependencies = [ [[package]] name = "mc-util-serial" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "prost", "serde", @@ -1533,14 +1515,14 @@ dependencies = [ [[package]] name = "mc-util-zip-exact" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "serde", ] [[package]] name = "mc-watcher-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "serde", @@ -1640,9 +1622,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "polyval" @@ -1673,9 +1655,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a" +checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" dependencies = [ "bytes", "prost-derive", @@ -1815,9 +1797,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.147" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" dependencies = [ "serde_derive", ] @@ -1842,9 +1824,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.147" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" dependencies = [ "proc-macro2", "quote", diff --git a/fog/view/enclave/trusted/Cargo.lock b/fog/view/enclave/trusted/Cargo.lock index e08434d4a8..fbf6aa835b 100644 --- a/fog/view/enclave/trusted/Cargo.lock +++ b/fog/view/enclave/trusted/Cargo.lock @@ -69,9 +69,9 @@ dependencies = [ [[package]] name = "android_system_properties" -version = "0.1.5" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e" dependencies = [ "libc", ] @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" [[package]] name = "arrayref" @@ -132,9 +132,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bindgen" @@ -232,9 +232,9 @@ checksum = "1582e1c9e755dd6ad6b224dcffb135d199399a4568d454bd89fe515ca8425695" [[package]] name = "cc" -version = "1.0.74" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cexpr" @@ -570,9 +570,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iana-time-zone" -version = "0.1.50" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd911b35d940d2bd0bea0f9100068e5b97b51a1cbe13d13382f132e0365257a0" +checksum = "ad2bfd338099682614d3ee3fe0cd72e0b6a41ca6a87f6a74a3bd593c91650501" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -716,10 +716,11 @@ dependencies = [ [[package]] name = "mc-account-keys" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", + "hex_fmt", "hkdf", "mc-account-keys-types", "mc-core", @@ -732,20 +733,21 @@ dependencies = [ "mc-util-serial", "prost", "rand_core", + "serde", "subtle", "zeroize", ] [[package]] name = "mc-account-keys-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-keys", ] [[package]] name = "mc-attest-ake" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "cargo-emit", @@ -764,7 +766,7 @@ dependencies = [ [[package]] name = "mc-attest-core" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "bitflags", @@ -793,7 +795,7 @@ dependencies = [ [[package]] name = "mc-attest-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-ake", @@ -806,7 +808,7 @@ dependencies = [ [[package]] name = "mc-attest-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -817,7 +819,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "cfg-if 1.0.0", @@ -842,7 +844,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "displaydoc", @@ -856,7 +858,7 @@ dependencies = [ [[package]] name = "mc-blockchain-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "hex_fmt", @@ -879,14 +881,13 @@ dependencies = [ [[package]] name = "mc-common" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "displaydoc", "hashbrown", "hex", "hex_fmt", - "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-keys", "mc-crypto-rand", @@ -901,7 +902,7 @@ dependencies = [ [[package]] name = "mc-consensus-scp-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-common", "mc-crypto-digestible", @@ -921,7 +922,6 @@ dependencies = [ "glob", "hkdf", "mc-core-types", - "mc-crypto-dalek", "mc-crypto-hashes", "mc-crypto-keys", "sha2", @@ -939,7 +939,7 @@ dependencies = [ [[package]] name = "mc-crypto-ake-enclave" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes-gcm", "digest", @@ -959,7 +959,7 @@ dependencies = [ [[package]] name = "mc-crypto-box" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "digest", @@ -973,38 +973,21 @@ dependencies = [ [[package]] name = "mc-crypto-dalek" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", - "mc-crypto-dalek-backend-simd", - "mc-crypto-dalek-backend-u64", "x25519-dalek", ] -[[package]] -name = "mc-crypto-dalek-backend-simd" -version = "2.0.0" -dependencies = [ - "curve25519-dalek", -] - -[[package]] -name = "mc-crypto-dalek-backend-u64" -version = "2.0.0" -dependencies = [ - "curve25519-dalek", -] - [[package]] name = "mc-crypto-digestible" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "curve25519-dalek", "ed25519-dalek", "generic-array", - "mc-crypto-dalek", "mc-crypto-digestible-derive", "merlin", "x25519-dalek", @@ -1012,7 +995,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -1021,7 +1004,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-signature" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "schnorrkel-og", @@ -1030,7 +1013,7 @@ dependencies = [ [[package]] name = "mc-crypto-hashes" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "blake2", "digest", @@ -1039,7 +1022,7 @@ dependencies = [ [[package]] name = "mc-crypto-keys" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "curve25519-dalek", @@ -1068,7 +1051,7 @@ dependencies = [ [[package]] name = "mc-crypto-multisig" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-keys", @@ -1078,7 +1061,7 @@ dependencies = [ [[package]] name = "mc-crypto-noise" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aead", "aes-gcm", @@ -1098,7 +1081,7 @@ dependencies = [ [[package]] name = "mc-crypto-rand" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "rand", @@ -1107,13 +1090,13 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", - "ed25519-dalek", + "hex_fmt", + "mc-account-keys", "mc-account-keys-types", - "mc-core-types", "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", @@ -1131,7 +1114,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature-signer" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1152,7 +1135,7 @@ dependencies = [ [[package]] name = "mc-enclave-boundary" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-common", "mc-crypto-rand", @@ -1163,7 +1146,7 @@ dependencies = [ [[package]] name = "mc-fog-kex-rng" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "digest", "displaydoc", @@ -1178,14 +1161,14 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-fog-ocall-oram-storage-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes", "aligned-cmov", @@ -1201,7 +1184,7 @@ dependencies = [ [[package]] name = "mc-fog-recovery-db-iface" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "chrono", "displaydoc", @@ -1217,7 +1200,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-authority" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-crypto-keys", "signature", @@ -1225,7 +1208,7 @@ dependencies = [ [[package]] name = "mc-fog-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "crc", "displaydoc", @@ -1239,7 +1222,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1257,7 +1240,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -1265,7 +1248,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-impl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aligned-cmov", "mc-attest-core", @@ -1287,7 +1270,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-trusted" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "lazy_static", @@ -1376,11 +1359,11 @@ dependencies = [ [[package]] name = "mc-sgx-alloc" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-build" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cc", "lazy_static", @@ -1390,7 +1373,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-sgx-alloc", @@ -1403,7 +1386,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "mc-sgx-debug-edl", @@ -1412,7 +1395,7 @@ dependencies = [ [[package]] name = "mc-sgx-css" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "sha2", @@ -1420,36 +1403,36 @@ dependencies = [ [[package]] name = "mc-sgx-debug" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-debug-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-enclave-id" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-types", ] [[package]] name = "mc-sgx-panic" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-sgx-panic-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-report-cache-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1460,7 +1443,7 @@ dependencies = [ [[package]] name = "mc-sgx-service" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-build", "mc-sgx-types", @@ -1468,7 +1451,7 @@ dependencies = [ [[package]] name = "mc-sgx-slog" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-common", @@ -1478,14 +1461,14 @@ dependencies = [ [[package]] name = "mc-sgx-slog-edl" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-sync" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "mc-sgx-panic", "mc-sgx-types", @@ -1493,11 +1476,11 @@ dependencies = [ [[package]] name = "mc-sgx-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" [[package]] name = "mc-transaction-core" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "aes", "bulletproofs-og", @@ -1511,7 +1494,6 @@ dependencies = [ "mc-account-keys", "mc-common", "mc-crypto-box", - "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", "mc-crypto-keys", @@ -1534,7 +1516,7 @@ dependencies = [ [[package]] name = "mc-transaction-types" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "mc-crypto-digestible", @@ -1545,7 +1527,7 @@ dependencies = [ [[package]] name = "mc-util-build-script" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -1556,7 +1538,7 @@ dependencies = [ [[package]] name = "mc-util-build-sgx" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "cargo-emit", "cc", @@ -1567,7 +1549,7 @@ dependencies = [ [[package]] name = "mc-util-encodings" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "base64", "displaydoc", @@ -1578,14 +1560,14 @@ dependencies = [ [[package]] name = "mc-util-from-random" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "rand_core", ] [[package]] name = "mc-util-repr-bytes" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "generic-array", "hex_fmt", @@ -1595,7 +1577,7 @@ dependencies = [ [[package]] name = "mc-util-serial" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "prost", "serde", @@ -1604,14 +1586,14 @@ dependencies = [ [[package]] name = "mc-util-zip-exact" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "serde", ] [[package]] name = "mc-watcher-api" -version = "4.0.0-pre0" +version = "2.1.0-pre0" dependencies = [ "displaydoc", "serde", @@ -1711,9 +1693,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "polyval" @@ -1744,9 +1726,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a" +checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" dependencies = [ "bytes", "prost-derive", @@ -1887,9 +1869,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.147" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" dependencies = [ "serde_derive", ] @@ -1914,9 +1896,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.147" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" dependencies = [ "proc-macro2", "quote", diff --git a/transaction/builder/src/signed_contingent_input_builder.rs b/transaction/builder/src/signed_contingent_input_builder.rs index 2ee1a7ac8c..f28ad7d4b7 100644 --- a/transaction/builder/src/signed_contingent_input_builder.rs +++ b/transaction/builder/src/signed_contingent_input_builder.rs @@ -249,14 +249,15 @@ impl SignedContingentInputBuilder { let (hint, pubkey_expiry) = crate::transaction_builder::create_fog_hint(fog_hint_address, &self.fog_resolver, rng)?; - let (tx_out, shared_secret) = crate::transaction_builder::create_output_with_fog_hint( - self.block_version, - amount, - recipient, - hint, - memo_fn, - rng, - )?; + let (tx_out, shared_secret, _tx_private_key) = + crate::transaction_builder::create_output_with_fog_hint( + self.block_version, + amount, + recipient, + hint, + memo_fn, + rng, + )?; let (amount, blinding) = tx_out .get_masked_amount() @@ -411,14 +412,15 @@ impl SignedContingentInputBuilder { let (hint, pubkey_expiry) = crate::transaction_builder::create_fog_hint(fog_hint_address, &self.fog_resolver, rng)?; - let (tx_out, shared_secret) = crate::transaction_builder::create_output_with_fog_hint( - self.block_version, - amount, - recipient, - hint, - memo_fn, - rng, - )?; + let (tx_out, shared_secret, _tx_private_key) = + crate::transaction_builder::create_output_with_fog_hint( + self.block_version, + amount, + recipient, + hint, + memo_fn, + rng, + )?; self.impose_tombstone_block_limit(pubkey_expiry); let amount_shared_secret = diff --git a/transaction/builder/src/test_utils.rs b/transaction/builder/src/test_utils.rs index f3cf615378..55979b3db3 100644 --- a/transaction/builder/src/test_utils.rs +++ b/transaction/builder/src/test_utils.rs @@ -3,8 +3,8 @@ //! Utilities that help with testing the transaction builder and related objects use crate::{ - EmptyMemoBuilder, InputCredentials, MemoBuilder, ReservedSubaddresses, TransactionBuilder, - TxBuilderError, + DefaultTxOutputsOrdering, EmptyMemoBuilder, InputCredentials, MemoBuilder, + ReservedSubaddresses, TransactionBuilder, TxBuilderError, }; use alloc::vec::Vec; use mc_account_keys::{AccountKey, PublicAddress, DEFAULT_SUBADDRESS_INDEX}; @@ -12,11 +12,14 @@ use mc_crypto_keys::RistrettoPublic; use mc_crypto_ring_signature_signer::{NoKeysRingSigner, OneTimeKeyDeriveData}; use mc_fog_report_validation::FogPubkeyResolver; use mc_transaction_core::{ + constants::RING_SIZE, + membership_proofs::Range, onetime_keys::*, tokens::Mob, - tx::{Tx, TxOut, TxOutMembershipProof}, + tx::{Tx, TxOut, TxOutMembershipElement, TxOutMembershipProof}, Amount, BlockVersion, MemoContext, MemoPayload, NewMemoError, Token, TokenId, }; +use mc_transaction_extra::UnsignedTx; use mc_util_from_random::FromRandom; use rand::{rngs::StdRng, CryptoRng, RngCore, SeedableRng}; @@ -41,14 +44,15 @@ pub fn create_output( ) -> Result<(TxOut, RistrettoPublic), TxBuilderError> { let (hint, _pubkey_expiry) = crate::transaction_builder::create_fog_hint(recipient, fog_resolver, rng)?; - crate::transaction_builder::create_output_with_fog_hint( + let (tx_out, shared_secret, _) = crate::transaction_builder::create_output_with_fog_hint( block_version, amount, recipient, hint, |_| Ok(MemoPayload::default()), rng, - ) + )?; + Ok((tx_out, shared_secret)) } /// Creates a ring of of TxOuts. @@ -121,7 +125,7 @@ pub fn get_input_credentials( fog_resolver: &FPR, rng: &mut RNG, ) -> InputCredentials { - let (ring, real_index) = get_ring(block_version, amount, 3, account, fog_resolver, rng); + let (ring, real_index) = get_ring(block_version, amount, RING_SIZE, account, fog_resolver, rng); let real_output = ring[real_index].clone(); let onetime_private_key = recover_onetime_private_key( @@ -136,9 +140,17 @@ pub fn get_input_credentials( .map(|_tx_out| { // TransactionBuilder does not validate membership proofs, but does require one // for each ring member. - TxOutMembershipProof::default() + TxOutMembershipProof::new( + real_index as u64, + ring.len() as u64, + (0..32) + .map(|_| TxOutMembershipElement::new(Range::new(0, 1).unwrap(), [2u8; 32])) + .collect(), + ) }) .collect(); + assert_eq!(membership_proofs.len(), RING_SIZE); + assert_eq!(membership_proofs[0].elements.len(), 32); InputCredentials::new( ring, @@ -151,7 +163,7 @@ pub fn get_input_credentials( } /// Uses TransactionBuilder to build a generic transaction for testing. -pub fn get_transaction( +pub fn get_unsigned_transaction( block_version: BlockVersion, token_id: TokenId, num_inputs: usize, @@ -160,7 +172,7 @@ pub fn get_transaction recipient: &AccountKey, fog_resolver: FPR, rng: &mut RNG, -) -> Result { +) -> Result { let mut transaction_builder = TransactionBuilder::new( block_version, Amount::new(Mob::MINIMUM_FEE, token_id), @@ -171,6 +183,10 @@ pub fn get_transaction let input_value = 1000; let output_value = 10; + // Set the fee so that sum(inputs) = sum(outputs) + fee. + let fee = num_inputs as u64 * input_value - num_outputs as u64 * output_value; + transaction_builder.set_fee(fee).unwrap(); + // Inputs for _i in 0..num_inputs { let input_credentials = get_input_credentials( @@ -196,12 +212,31 @@ pub fn get_transaction ) .unwrap(); } + transaction_builder.build_unsigned::() +} - // Set the fee so that sum(inputs) = sum(outputs) + fee. - let fee = num_inputs as u64 * input_value - num_outputs as u64 * output_value; - transaction_builder.set_fee(fee).unwrap(); - - transaction_builder.build(&NoKeysRingSigner {}, rng) +/// Uses TransactionBuilder to build a generic transaction for testing. +pub fn get_transaction( + block_version: BlockVersion, + token_id: TokenId, + num_inputs: usize, + num_outputs: usize, + sender: &AccountKey, + recipient: &AccountKey, + fog_resolver: FPR, + rng: &mut RNG, +) -> Result { + let unsigned_tx = get_unsigned_transaction( + block_version, + token_id, + num_inputs, + num_outputs, + sender, + recipient, + fog_resolver, + rng, + )?; + Ok(unsigned_tx.sign(&NoKeysRingSigner {}, None, rng)?) } /// Build simulated change memo with amount diff --git a/transaction/builder/src/transaction_builder.rs b/transaction/builder/src/transaction_builder.rs index 7e183b02bc..f8d881cf4f 100644 --- a/transaction/builder/src/transaction_builder.rs +++ b/transaction/builder/src/transaction_builder.rs @@ -29,7 +29,8 @@ use mc_transaction_core::{ RevealedTxOutError, Token, TokenId, }; use mc_transaction_extra::{ - SignedContingentInput, SignedContingentInputError, TxOutConfirmationNumber, UnsignedTx, + SignedContingentInput, SignedContingentInputError, TxOutConfirmationNumber, + TxOutSummaryUnblindingData, UnsignedTx, }; use mc_util_from_random::FromRandom; use rand_core::{CryptoRng, RngCore}; @@ -79,7 +80,7 @@ pub struct TransactionBuilder { /// The input materials used to form the transaction. input_materials: Vec, /// The outputs created by the transaction, and associated output secrets. - outputs_and_secrets: Vec<(TxOut, OutputSecret)>, + outputs_and_secrets: Vec<(TxOut, TxOutSummaryUnblindingData)>, /// The tombstone_block value, a block index in which the transaction /// expires, and can no longer be added to the blockchain tombstone_block: u64, @@ -313,8 +314,14 @@ impl TransactionBuilder { blinding, }; + let unblinding_data = TxOutSummaryUnblindingData { + unmasked_amount: output_secret.into(), + address: None, + tx_private_key: None, + }; + self.outputs_and_secrets - .push((fractional_tx_out, output_secret)); + .push((fractional_tx_out, unblinding_data)); Ok(fractional_amount) }, @@ -334,8 +341,14 @@ impl TransactionBuilder { blinding: partial_fill_change_blinding, }; + let unblinding_data = TxOutSummaryUnblindingData { + unmasked_amount: output_secret.into(), + address: None, + tx_private_key: None, + }; + self.outputs_and_secrets - .push((fractional_change, output_secret)); + .push((fractional_change, unblinding_data)); } self.add_presigned_input_helper(sci)?; @@ -385,8 +398,14 @@ impl TransactionBuilder { .any(|(output, _sec)| output == required_output) { // If not, add it + let unblinding_data = TxOutSummaryUnblindingData { + unmasked_amount: unmasked_amount.clone(), + address: None, + tx_private_key: None, + }; + self.outputs_and_secrets - .push((required_output.clone(), unmasked_amount.clone().into())); + .push((required_output.clone(), unblinding_data)); } } // 2. Max tombstone block @@ -606,7 +625,7 @@ impl TransactionBuilder { )); } - let (tx_out, shared_secret) = + let (tx_out, shared_secret, tx_private_key) = create_output_with_fog_hint(self.block_version, amount, recipient, hint, memo_fn, rng)?; let (amount, blinding) = tx_out @@ -616,10 +635,16 @@ impl TransactionBuilder { .expect("TransactionBuilder created an invalid Amount"); let output_secret = OutputSecret { amount, blinding }; + let unblinding_data = TxOutSummaryUnblindingData { + unmasked_amount: output_secret.into(), + address: Some(recipient.clone()), + tx_private_key: Some(tx_private_key), + }; + self.impose_tombstone_block_limit(pubkey_expiry); self.outputs_and_secrets - .push((tx_out.clone(), output_secret)); + .push((tx_out.clone(), unblinding_data)); let confirmation = TxOutConfirmationNumber::from(&shared_secret); @@ -769,7 +794,7 @@ impl TransactionBuilder { self.outputs_and_secrets .sort_by(|(a, _), (b, _)| O::cmp(&a.public_key, &b.public_key)); - let (outputs, output_secrets): (Vec, Vec<_>) = + let (outputs, tx_out_unblinding_data): (Vec, Vec<_>) = self.outputs_and_secrets.drain(..).unzip(); let tx_prefix = TxPrefix::new(inputs, outputs, self.fee, self.tombstone_block); @@ -783,7 +808,7 @@ impl TransactionBuilder { Ok(UnsignedTx { tx_prefix, rings: input_rings, - output_secrets, + tx_out_unblinding_data, block_version: self.block_version, }) } @@ -839,6 +864,11 @@ impl TransactionBuilder { /// * `fog_hint` - The encrypted fog hint to use /// * `memo_fn` - The memo function to use -- see TxOut::new_with_memo docu /// * `rng` - +/// +/// # Returns +/// * TxOut +/// * tx_out_shared_secret +/// * tx_private_key pub(crate) fn create_output_with_fog_hint( block_version: BlockVersion, amount: Amount, @@ -846,19 +876,19 @@ pub(crate) fn create_output_with_fog_hint( fog_hint: EncryptedFogHint, memo_fn: impl FnOnce(MemoContext) -> Result, rng: &mut RNG, -) -> Result<(TxOut, RistrettoPublic), TxBuilderError> { - let private_key = RistrettoPrivate::from_random(rng); +) -> Result<(TxOut, RistrettoPublic, RistrettoPrivate), TxBuilderError> { + let tx_private_key = RistrettoPrivate::from_random(rng); let tx_out = TxOut::new_with_memo( block_version, amount, recipient, - &private_key, + &tx_private_key, fog_hint, memo_fn, )?; - let shared_secret = create_shared_secret(recipient.view_public_key(), &private_key); - Ok((tx_out, shared_secret)) + let shared_secret = create_shared_secret(recipient.view_public_key(), &tx_private_key); + Ok((tx_out, shared_secret, tx_private_key)) } /// Create a fog hint, using the fog_resolver collection in self. diff --git a/transaction/core/src/lib.rs b/transaction/core/src/lib.rs index f7d9da19c4..03836f7d24 100644 --- a/transaction/core/src/lib.rs +++ b/transaction/core/src/lib.rs @@ -16,7 +16,6 @@ extern crate std; extern crate lazy_static; mod amount; -mod domain_separators; mod fee_map; mod input_rules; mod memo; @@ -25,6 +24,7 @@ mod token; mod tx_error; pub mod constants; +pub mod domain_separators; pub mod encrypted_fog_hint; pub mod fog_hint; pub mod membership_proofs; diff --git a/transaction/core/src/tx.rs b/transaction/core/src/tx.rs index 0ededda711..828b363bc7 100644 --- a/transaction/core/src/tx.rs +++ b/transaction/core/src/tx.rs @@ -244,7 +244,7 @@ impl TxPrefix { } /// An "input" to a transaction. -#[derive(Clone, Deserialize, Eq, PartialEq, Serialize, Message, Digestible)] +#[derive(Clone, Deserialize, Digestible, Eq, PartialEq, Message, Serialize, Zeroize)] pub struct TxIn { /// A "ring" of outputs containing the single output that is being spent. /// It would be nice to use [TxOut; RING_SIZE] here, but Prost only works @@ -571,8 +571,8 @@ pub struct TxOutMembershipElement { #[prost(message, required, tag = "1")] pub range: Range, - #[prost(message, required, tag = "2")] /// The internal hash value. + #[prost(message, required, tag = "2")] pub hash: TxOutMembershipHash, } diff --git a/transaction/extra/Cargo.toml b/transaction/extra/Cargo.toml index e4d0783c79..3344f4846d 100644 --- a/transaction/extra/Cargo.toml +++ b/transaction/extra/Cargo.toml @@ -20,7 +20,7 @@ zeroize = "1" # MobileCoin dependencies mc-account-keys = { path = "../../account-keys" } mc-crypto-dalek = { path = "../../crypto/dalek" } -mc-crypto-digestible = { path = "../../crypto/digestible" } +mc-crypto-digestible = { path = "../../crypto/digestible", features = ["dalek"] } mc-crypto-hashes = { path = "../../crypto/hashes" } mc-crypto-keys = { path = "../../crypto/keys", default-features = false } mc-crypto-ring-signature = { path = "../../crypto/ring-signature" } @@ -30,6 +30,8 @@ mc-transaction-types = { path = "../../transaction/types" } mc-util-from-random = { path = "../../util/from-random" } mc-util-repr-bytes = { path = "../../util/repr-bytes" } mc-util-serial = { path = "../../util/serial" } +mc-util-vec-map = { path = "../../util/vec-map" } +mc-util-zip-exact = { path = "../../util/zip-exact" } curve25519-dalek = { version = "4.0.0-pre.2", default-features = false, features = ["nightly"] } @@ -39,4 +41,6 @@ maplit = "1.0" yaml-rust = "0.4" mc-fog-report-validation-test-utils = { path = "../../fog/report/validation/test-utils" } +mc-transaction-builder = { path = "../../transaction/builder", features = ["test-only"] } +mc-util-from-random = { path = "../../util/from-random" } mc-util-test-helper = { path = "../../util/test-helper" } diff --git a/transaction/extra/src/lib.rs b/transaction/extra/src/lib.rs index a0ff3e8d09..7a193d89eb 100644 --- a/transaction/extra/src/lib.rs +++ b/transaction/extra/src/lib.rs @@ -16,6 +16,7 @@ mod memo; mod signed_contingent_input; mod tx_out_confirmation_number; mod tx_out_gift_code; +mod tx_summary_unblinding; mod unsigned_tx; pub use memo::{ @@ -30,6 +31,10 @@ pub use signed_contingent_input::{ }; pub use tx_out_confirmation_number::TxOutConfirmationNumber; pub use tx_out_gift_code::TxOutGiftCode; +pub use tx_summary_unblinding::{ + verify_tx_summary, TxOutSummaryUnblindingData, TxSummaryStreamingVerifier, + TxSummaryUnblindingData, TxSummaryUnblindingReport, +}; pub use unsigned_tx::UnsignedTx; // Re-export this to help the exported macros work diff --git a/transaction/extra/src/signed_contingent_input.rs b/transaction/extra/src/signed_contingent_input.rs index fe7ddc9753..f1db493619 100644 --- a/transaction/extra/src/signed_contingent_input.rs +++ b/transaction/extra/src/signed_contingent_input.rs @@ -4,6 +4,7 @@ use alloc::vec::Vec; use displaydoc::Display; +use mc_crypto_digestible::Digestible; use mc_crypto_ring_signature::{ Commitment, CompressedCommitment, CurveScalar, Error as RingSignatureError, KeyImage, RingMLSAG, }; @@ -13,9 +14,11 @@ use mc_transaction_core::{ Amount, AmountError, RevealedTxOutError, TokenId, TxOutConversionError, }; use prost::Message; +use serde::{Deserialize, Serialize}; +use zeroize::Zeroize; /// The "unmasked" data of an amount commitment -#[derive(Clone, Eq, Message, PartialEq)] +#[derive(Clone, Deserialize, Digestible, Eq, Message, PartialEq, Serialize, Zeroize)] pub struct UnmaskedAmount { /// The value of the amount commitment #[prost(fixed64, tag = 1)] @@ -33,7 +36,7 @@ pub struct UnmaskedAmount { /// A signed contingent input is a "transaction fragment" which can be /// incorporated into a transaction signed by a counterparty. See MCIP #31 for /// motivation. -#[derive(Clone, Eq, Message, PartialEq)] +#[derive(Clone, Digestible, Eq, Message, PartialEq, Zeroize)] pub struct SignedContingentInput { /// The block version rules we used when making the signature #[prost(uint32, required, tag = 1)] diff --git a/transaction/extra/src/tx_summary_unblinding/data.rs b/transaction/extra/src/tx_summary_unblinding/data.rs new file mode 100644 index 0000000000..dc646bc077 --- /dev/null +++ b/transaction/extra/src/tx_summary_unblinding/data.rs @@ -0,0 +1,52 @@ +// Copyright (c) 2018-2022 The MobileCoin Foundation + +use crate::UnmaskedAmount; +use alloc::vec::Vec; +use mc_account_keys::PublicAddress; +use mc_crypto_digestible::Digestible; +use mc_crypto_keys::RistrettoPrivate; +use prost::Message; +use serde::{Deserialize, Serialize}; +use zeroize::Zeroize; + +/// Unblinding data correpsonding to a TxSummary. This reveals the amounts of +/// all inputs and outputs in a way that can be confirmed against the TxSummary. +#[derive(Clone, Deserialize, Digestible, Eq, Message, PartialEq, Serialize, Zeroize)] +pub struct TxSummaryUnblindingData { + /// The block version targetted by the outputs of this Tx + #[prost(uint32, tag = "1")] + pub block_version: u32, + + /// A TxOutSummaryUnblindingData, one for each transaction output + #[prost(message, repeated, tag = "2")] + pub outputs: Vec, + + /// An unmasked amount, one for each transaction input, corresponding to + /// the pseudo-output commitment + #[prost(message, repeated, tag = "3")] + pub inputs: Vec, +} + +/// Unblinding data corresponding to a TxOutSummary. This reveals the amount +/// and, usually, the Public Address to which this TxOut is addressed. +#[derive(Clone, Deserialize, Digestible, Eq, Message, PartialEq, Serialize, Zeroize)] +pub struct TxOutSummaryUnblindingData { + /// An unmasked amount, corresponding to the MaskedAmount field + /// The block vesion appears in the TxSummaryUnblindingData. + #[prost(message, required, tag = "1")] + pub unmasked_amount: UnmaskedAmount, + + /// The public address to which this TxOut is addressed. + /// If this output comes from an SCI then we may not know the public + /// address. + #[prost(message, optional, tag = "2")] + pub address: Option, + + /// The tx_private_key generated for this TxOut. This is an entropy source + /// which introduces randomness into the cryptonote stealth addresses + /// (tx_public_key and tx_target_key) of the TxOut. + /// + /// If this output comes from an SCI then we may not know this. + #[prost(message, optional, tag = "3")] + pub tx_private_key: Option, +} diff --git a/transaction/extra/src/tx_summary_unblinding/error.rs b/transaction/extra/src/tx_summary_unblinding/error.rs new file mode 100644 index 0000000000..0df947b393 --- /dev/null +++ b/transaction/extra/src/tx_summary_unblinding/error.rs @@ -0,0 +1,66 @@ +// Copyright (c) 2018-2022 The MobileCoin Foundation + +use displaydoc::Display; +use mc_crypto_keys::KeyError; +use mc_transaction_core::AmountError; +use mc_transaction_types::BlockVersionError; +use mc_util_zip_exact::ZipExactError; + +/// An error which can occur when verifying a TxSummary against unblinding data +#[derive(Clone, Debug, Display)] +pub enum Error { + /// Unexpected Output + UnexpectedOutput, + /// Unexpected Input + UnexpectedInput, + /// Still expecting more outputs + StillExpectingMoreOutputs, + /// Still expecting more inputs + StillExpectingMoreInputs, + /// Amount verification failed + AmountVerificationFailed, + /// Address verification failed + AddressVerificationFailed, + /// Missing Tx private key + MissingTxPrivateKey, + /// Missing data required to verify TxOut recipient + MissingDataRequiredToVerifyTxOutRecipient, + /// Numeric overflow + NumericOverflow, + /// Buffer overflow + BufferOverflow, + /// Block version + BlockVersion(BlockVersionError), + /// Missing masked amount + MissingMaskedAmount, + /// Key error: {0} + Key(KeyError), + /// Amount error: {0} + Amount(AmountError), + /// ZipExact error: {0} + ZipExact(ZipExactError), +} + +impl From for Error { + fn from(src: BlockVersionError) -> Error { + Error::BlockVersion(src) + } +} + +impl From for Error { + fn from(src: KeyError) -> Error { + Error::Key(src) + } +} + +impl From for Error { + fn from(src: AmountError) -> Error { + Error::Amount(src) + } +} + +impl From for Error { + fn from(src: ZipExactError) -> Error { + Error::ZipExact(src) + } +} diff --git a/transaction/extra/src/tx_summary_unblinding/mod.rs b/transaction/extra/src/tx_summary_unblinding/mod.rs new file mode 100644 index 0000000000..e50fc879a1 --- /dev/null +++ b/transaction/extra/src/tx_summary_unblinding/mod.rs @@ -0,0 +1,11 @@ +// Copyright (c) 2018-2022 The MobileCoin Foundation + +mod data; +mod error; +mod report; +mod verifier; + +pub use data::{TxOutSummaryUnblindingData, TxSummaryUnblindingData}; +pub use error::Error; +pub use report::{TransactionEntity, TxSummaryUnblindingReport}; +pub use verifier::{verify_tx_summary, TxSummaryStreamingVerifier}; diff --git a/transaction/extra/src/tx_summary_unblinding/report.rs b/transaction/extra/src/tx_summary_unblinding/report.rs new file mode 100644 index 0000000000..6bb2d4bda7 --- /dev/null +++ b/transaction/extra/src/tx_summary_unblinding/report.rs @@ -0,0 +1,111 @@ +// Copyright (c) 2018-2022 The MobileCoin Foundation + +//! A TxSummaryUnblindingReport, containing the set of verified information +//! about a transaction. + +use super::Error; +use core::fmt::Display; +use displaydoc::Display; +use mc_account_keys::ShortAddressHash; +use mc_transaction_core::{ + constants::{MAX_INPUTS, MAX_OUTPUTS}, + Amount, TokenId, +}; +use mc_util_vec_map::VecMap; + +/// An entity with whom a transaction can interact, and who can be identified +/// by the TxSummary verification process +#[derive(Clone, Debug, Display, Eq, Ord, PartialEq, PartialOrd)] +pub enum TransactionEntity { + /// Self + Ourself, + /// Address hash {0} + Address(ShortAddressHash), + /// Swap counterparty + Swap, +} + +const MAX_RECORDS: usize = MAX_OUTPUTS as usize + MAX_INPUTS as usize; + +/// A report of the parties and balance changes due to a transaction. +/// This can be produced for a given TxSummary and TxSummaryUnblindingData. +#[derive(Clone, Debug, Default)] +pub struct TxSummaryUnblindingReport { + /// The set of balance changes that we have observed + // Note: We can save about 210 bytes on the stack if we store TokenId as + // a [u8; 8] to avoid alignment requirements. TBD if that's worth it. + pub balance_changes: VecMap<(TransactionEntity, TokenId), i64, MAX_RECORDS>, + /// The network fee that we pay + pub network_fee: Amount, + /// The tombstone block associated to this transaction + pub tombstone_block: u64, +} + +impl TxSummaryUnblindingReport { + /// Add value to the balance report, for some entity + pub fn balance_add( + &mut self, + entity: TransactionEntity, + token_id: TokenId, + value: u64, + ) -> Result<(), Error> { + let value = i64::try_from(value).map_err(|_| Error::NumericOverflow)?; + let stored = self + .balance_changes + .get_mut_or_insert_with(&(entity, token_id), || 0) + .map_err(|_| Error::BufferOverflow)?; + *stored = stored.checked_add(value).ok_or(Error::NumericOverflow)?; + Ok(()) + } + + /// Subtract value from the balance report, for some entity + pub fn balance_subtract( + &mut self, + entity: TransactionEntity, + token_id: TokenId, + value: u64, + ) -> Result<(), Error> { + let value = i64::try_from(value).map_err(|_| Error::NumericOverflow)?; + let stored = self + .balance_changes + .get_mut_or_insert_with(&(entity, token_id), || 0) + .map_err(|_| Error::BufferOverflow)?; + *stored = stored.checked_sub(value).ok_or(Error::NumericOverflow)?; + Ok(()) + } + + /// This should be done before displaying the report + pub fn sort(&mut self) { + self.balance_changes.sort(); + } +} + +// This is a proof-of-concept, it doesn't map token id's to their symbol when +// displaying. +impl Display for TxSummaryUnblindingReport { + fn fmt(&self, formatter: &mut core::fmt::Formatter) -> core::fmt::Result { + let mut current_entity = None; + for ((entity, tok), val) in self.balance_changes.iter() { + if Some(entity) != current_entity.as_ref() { + writeln!(formatter, "{}:", entity)?; + current_entity = Some(entity.clone()); + } + writeln!(formatter, "\t{}: {}", *tok, val)?; + } + writeln!( + formatter, + "Network fee: {}: {}", + *self.network_fee.token_id, self.network_fee.value + )?; + writeln!(formatter, "Tombstone block: {}", self.tombstone_block) + } +} + +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn test_report_size_size() { + assert_eq!(core::mem::size_of::(), 1320); + } +} diff --git a/transaction/extra/src/tx_summary_unblinding/verifier.rs b/transaction/extra/src/tx_summary_unblinding/verifier.rs new file mode 100644 index 0000000000..2461aabfac --- /dev/null +++ b/transaction/extra/src/tx_summary_unblinding/verifier.rs @@ -0,0 +1,404 @@ +// Copyright (c) 2018-2022 The MobileCoin Foundation + +//! This module provides support for a "streaming" verifier which consumes an +//! extended-message digest, a TxSummary and a TxSummaryUnblindingData, +//! in a piece-wise fashion, and produces an extended-message-and-tx-summary +//! digest, as well as a verified TxSummaryReport which contains the balance +//! deltas for all parties to the transaction. +//! +//! The streaming verifier itself occupies about 1200 bytes on the stack. +//! To take the largest "step" (verifying an output) requires +//! approximately 300 bytes + Fog url length + +use super::{ + Error, TransactionEntity, TxOutSummaryUnblindingData, TxSummaryUnblindingData, + TxSummaryUnblindingReport, +}; +use crate::UnmaskedAmount; +use mc_account_keys::{PublicAddress, ShortAddressHash}; +use mc_crypto_digestible::{DigestTranscript, Digestible, MerlinTranscript}; +use mc_crypto_keys::{RistrettoPrivate, RistrettoPublic}; +use mc_crypto_ring_signature::onetime_keys::{ + create_shared_secret, create_tx_out_public_key, create_tx_out_target_key, +}; +use mc_transaction_core::{ + domain_separators::EXTENDED_MESSAGE_AND_TX_SUMMARY_DOMAIN_TAG, Amount, AmountError, + BlockVersion, CompressedCommitment, MaskedAmount, TxInSummary, TxOutSummary, TxSummary, +}; +use mc_util_zip_exact::zip_exact; + +/// Exercise the functionality of the streaming verifier, and return its +/// results. +/// +/// This is mainly useful for testing / demonstration purposes, since the more +/// interesting use-case is when the streaming verifier is on a small remote +/// device and doesn't have the full TxSummary or TxSummaryUnblindingData on +/// hand. +pub fn verify_tx_summary( + extended_message_digest: &[u8; 32], + tx_summary: &TxSummary, + unblinding_data: &TxSummaryUnblindingData, + view_private_key: RistrettoPrivate, +) -> Result<([u8; 32], TxSummaryUnblindingReport), Error> { + let mut verifier = TxSummaryStreamingVerifier::new( + extended_message_digest, + unblinding_data.block_version.try_into()?, + tx_summary.outputs.len(), + tx_summary.inputs.len(), + view_private_key, + ); + for (tx_out_summary, tx_out_unblinding_data) in + zip_exact(tx_summary.outputs.iter(), unblinding_data.outputs.iter())? + { + verifier.digest_output(tx_out_summary, tx_out_unblinding_data)?; + } + for (tx_in_summary, tx_in_unblinding_data) in + zip_exact(tx_summary.inputs.iter(), unblinding_data.inputs.iter())? + { + verifier.digest_input(tx_in_summary, tx_in_unblinding_data)?; + } + let (digest, report) = verifier.finalize( + Amount::new(tx_summary.fee, tx_summary.fee_token_id.into()), + tx_summary.tombstone_block, + ); + + // In a debug build, confirm the digest by computing it in a non-streaming way + // + // Note: this needs to be kept in sync with the compute_mlsag_signing_digest + // function in transaction_core::ring_ct::rct_bulletproofs + #[cfg(debug)] + { + let mut transcript = + MerlinTranscript::new(EXTENDED_MESSAGE_AND_TX_SUMMARY_DOMAIN_TAG.as_bytes()); + extended_message.append_to_transcript(b"extended_message", &mut transcript); + tx_summary.append_to_transcript(b"tx_summary", &mut transcript); + + // Extract digest + let mut output = [0u8; 32]; + transcript.extract_digest(&mut output); + + assert_eq!( + output, digest, + "streaming verifier did not compute correct digest" + ); + } + Ok((digest, report)) +} + +/// An object intended for hardware wallets to use, with a dual purpose. +/// +/// * Compute the "extended-message-and-tx-summary" digest in a "streaming" way +/// that does not require sending the entire TxSummary at once. Only one input +/// or output needs to be sent at a time. +/// * Simultaneously, stream the TxSummaryUnblindingData, so e.g. every +/// TxOutSummary sent is paired with a TxOutSummaryUnblindingData. Verify this +/// unblinding data against the summary. Then, store a report of the balance +/// change for this party. Return the TxSummaryUnblindingReport along with the +/// final digest, which is fully-verified to be accurate. +/// +/// The TxSummaryUnblindingReport can be displayed to the hardware wallet user, +/// and then if they approve, Ring MLSAGs can be signed over the digest produced +/// by this verifier, knowing what the significance of signing these is. +/// +/// Note: The TxSummaryUnblindingReport makes assumptions about the details +/// of how a TxSummary and its constituents digested. These are currently +/// implementation details of the mc-crypto-digestible scheme. +/// If TxSummary digestible annotations are changed then this object's +/// implementation needs to change also. +pub struct TxSummaryStreamingVerifier { + // The account view private key of the transaction signer. + // This is used to identify outputs addressed to ourselves regardless of subaddress + view_private_key: RistrettoPrivate, + // The block version that this transaction is targetting + block_version: BlockVersion, + // The merlin transcript which we maintain in order to produce the digest + // at the end. + transcript: MerlinTranscript, + // The report which we produce about what balance changes occur for what + // parties + report: TxSummaryUnblindingReport, + // The total number of outputs expected + expected_num_outputs: usize, + // The total number of inputs expected + expected_num_inputs: usize, + // The count of outputs we have already seen + output_count: usize, + // The count of inputs we have already seen + input_count: usize, +} + +impl TxSummaryStreamingVerifier { + /// Start a new streaming verifier. This takes a few small arguments from + /// TxSummary and TxSummaryUnblindingData which are needed before we can + /// consume outputs and inputs. This also takes the view private key of + /// the signer, which is used to identify outputs that went to the signer. + /// + /// Arguments: + /// * extended_message_digest of the Tx + /// * block_version of the outputs of the Tx + /// * expected_num_outputs of the Tx + /// * expected_num_inputs of the Tx + /// * view_private_key of the signer, to identify self-payment outputs + /// + /// Returns: + /// * A properly initialized TxSummaryStreamingVerifier + pub fn new( + extended_message_digest: &[u8; 32], + block_version: BlockVersion, + expected_num_outputs: usize, + expected_num_inputs: usize, + view_private_key: RistrettoPrivate, + ) -> Self { + let mut transcript = + MerlinTranscript::new(EXTENDED_MESSAGE_AND_TX_SUMMARY_DOMAIN_TAG.as_bytes()); + extended_message_digest.append_to_transcript(b"extended_message", &mut transcript); + + // Append start of TxSummary object + transcript.append_agg_header(b"tx_summary", b"TxSummary"); + // Append start of TxSummary.outputs list + transcript.append_seq_header(b"outputs", expected_num_outputs); + + // Default initialize the report + let report = TxSummaryUnblindingReport::default(); + Self { + view_private_key, + block_version, + transcript, + report, + expected_num_outputs, + expected_num_inputs, + output_count: 0, + input_count: 0, + } + } + + /// Stream the next TxOutSummary and matching unblinding data to the + /// streaming verifier, which will verify and then digest it. + pub fn digest_output( + &mut self, + tx_out_summary: &TxOutSummary, + unblinding_data: &TxOutSummaryUnblindingData, + ) -> Result<(), Error> { + if self.output_count >= self.expected_num_outputs { + return Err(Error::UnexpectedOutput); + } + + // Now try to verify the recipient. This is either ourselves, or someone else + // with the listed address, or this is associated to an SCI. + if let Some(amount) = self.view_key_match(tx_out_summary)? { + // If we view-key matched the output, then it belongs to one of our subaddresses + self.report + .balance_add(TransactionEntity::Ourself, amount.token_id, amount.value)?; + } else if let Some(address) = unblinding_data.address.as_ref() { + let amount = Amount::new( + unblinding_data.unmasked_amount.value, + unblinding_data.unmasked_amount.token_id.into(), + ); + // In this case, we are given the address of who is supposed to have received + // this. + let tx_private_key = unblinding_data + .tx_private_key + .as_ref() + .ok_or(Error::MissingTxPrivateKey)?; + // Let's try to verify that the TxOutSummary is as expected + let expected = + Self::expected_tx_out_summary(self.block_version, amount, address, tx_private_key)?; + if &expected == tx_out_summary { + let address_hash = ShortAddressHash::from(address); + self.report.balance_add( + TransactionEntity::Address(address_hash), + amount.token_id, + amount.value, + )?; + } else { + return Err(Error::AddressVerificationFailed); + } + } else { + if !tx_out_summary.associated_to_input_rules { + return Err(Error::MissingDataRequiredToVerifyTxOutRecipient); + } + + // First try to verify the amount commitment + let value = unblinding_data.unmasked_amount.value; + let token_id = unblinding_data.unmasked_amount.token_id; + let blinding_factor = unblinding_data.unmasked_amount.blinding; + let generator = mc_crypto_ring_signature::generators(token_id); + let expected_commitment = + CompressedCommitment::new(value, blinding_factor.into(), &generator); + if &expected_commitment + != tx_out_summary + .masked_amount + .as_ref() + .ok_or(Error::MissingMaskedAmount)? + .commitment() + { + return Err(Error::AmountVerificationFailed); + } + let amount = Amount::new(value, token_id.into()); + self.report + .balance_add(TransactionEntity::Swap, amount.token_id, amount.value)?; + } + + // We've now verified the tx_out_summary and added it to the report. + // Now we need to add it to the digest + // (See mc-crypto-digestible sources for details around b"") + tx_out_summary.append_to_transcript(b"", &mut self.transcript); + self.output_count += 1; + + // If there should be no more outputs, then we should add the preamble for the + // inputs to the digest. + if self.output_count == self.expected_num_outputs { + self.transcript + .append_seq_header(b"inputs", self.expected_num_inputs); + } + + Ok(()) + } + + /// Stream the next TxInSummary and matching unblinding data to the + /// streaming verifier, which will verify and then digest it. + pub fn digest_input( + &mut self, + tx_in_summary: &TxInSummary, + tx_in_summary_unblinding_data: &UnmaskedAmount, + ) -> Result<(), Error> { + if self.output_count != self.expected_num_outputs { + return Err(Error::StillExpectingMoreOutputs); + } + if self.input_count >= self.expected_num_inputs { + return Err(Error::UnexpectedInput); + } + + // First try to verify the amount + let value = tx_in_summary_unblinding_data.value; + let token_id = tx_in_summary_unblinding_data.token_id; + let blinding_factor = tx_in_summary_unblinding_data.blinding; + let generator = mc_crypto_ring_signature::generators(token_id); + let expected_commitment = + CompressedCommitment::new(value, blinding_factor.into(), &generator); + if expected_commitment != tx_in_summary.pseudo_output_commitment { + return Err(Error::AmountVerificationFailed); + } + let amount = Amount::new(value, token_id.into()); + + // Now understand whose input this is. There are two cases + if !tx_in_summary.input_rules_digest.is_empty() { + self.report + .balance_subtract(TransactionEntity::Swap, amount.token_id, amount.value)?; + } else { + self.report.balance_subtract( + TransactionEntity::Ourself, + amount.token_id, + amount.value, + )?; + } + + // We've now verified the tx_in_summary and added it to the report. + // Now we need to add it to the digest + // (See mc-crypto-digestible sources for details around b"") + tx_in_summary.append_to_transcript(b"", &mut self.transcript); + self.input_count += 1; + + Ok(()) + } + + /// Finalize the streaming verifier, after all outputs and then all inputs + /// have been streamed. Pass in the remaining small bits of TxSummary. + /// + /// Arguments: + /// * fee (from TxSummary) + /// * tombstone_block (from Txsummary) + /// + /// Returns: + /// * extended-message-and-tx-summary digest + /// * TxSummaryUnblindingReport, which details all balance changes for all + /// parties to this Tx. + pub fn finalize( + mut self, + fee: Amount, + tombstone_block: u64, + ) -> ([u8; 32], TxSummaryUnblindingReport) { + self.report.network_fee = fee; + self.report.tombstone_block = tombstone_block; + self.report.sort(); + + fee.value.append_to_transcript(b"fee", &mut self.transcript); + (*fee.token_id).append_to_transcript(b"fee_token_id", &mut self.transcript); + tombstone_block.append_to_transcript(b"tombstone_block", &mut self.transcript); + + // Append the closer of the TxSummary object + self.transcript + .append_agg_closer(b"tx_summary", b"TxSummary"); + + // Extract the digest + let mut digest = [0u8; 32]; + self.transcript.extract_digest(&mut digest); + + (digest, self.report) + } + + // Internal: Check if TxOutSummary matches to our view private key + // + // Returns: + // Ok(Some(amount)) - if view key matching succeeded, and reveals the amount + // Ok(None) - if view key matching failed but no other errors occurred + // Err - if some structural issue with the TxOutSummary prevented view key + // matching attempt + fn view_key_match(&self, tx_out_summary: &TxOutSummary) -> Result, Error> { + let tx_out_shared_secret = mc_crypto_ring_signature::get_tx_out_shared_secret( + &self.view_private_key, + &RistrettoPublic::try_from(&tx_out_summary.public_key)?, + ); + + match tx_out_summary + .masked_amount + .as_ref() + .ok_or(Error::MissingMaskedAmount)? + .get_value(&tx_out_shared_secret) + { + Ok((amount, _scalar)) => Ok(Some(amount)), + Err(AmountError::InconsistentCommitment) => Ok(None), + Err(err) => Err(Error::Amount(err)), + } + } + + // Internal: Compute the expected TxOutSummary for a given set of data. + // This is a piece of the implementation of TxOut::new. + // + // Returns: + // Ok(TxOutSummary) with the produced TxOutSummary + // Err if some error prevented construction + fn expected_tx_out_summary( + block_version: BlockVersion, + amount: Amount, + recipient: &PublicAddress, + tx_private_key: &RistrettoPrivate, + ) -> Result { + let target_key = create_tx_out_target_key(tx_private_key, recipient).into(); + let public_key = create_tx_out_public_key(tx_private_key, recipient.spend_public_key()); + + let shared_secret = create_shared_secret(recipient.view_public_key(), tx_private_key); + + let masked_amount = Some(MaskedAmount::new(block_version, amount, &shared_secret)?); + + Ok(TxOutSummary { + target_key, + public_key: public_key.into(), + masked_amount, + associated_to_input_rules: false, + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + // Test the size of the streaming verifier on the stack. This is using heapless. + #[test] + fn test_streaming_verifier_size() { + assert_eq!(core::mem::size_of::(), 1600); + } + + // Note: Most tests are in transaction/extra/tests to avoid build issues. +} diff --git a/transaction/extra/src/unsigned_tx.rs b/transaction/extra/src/unsigned_tx.rs index dff685b3c7..bd25f8a1e4 100644 --- a/transaction/extra/src/unsigned_tx.rs +++ b/transaction/extra/src/unsigned_tx.rs @@ -1,5 +1,6 @@ // Copyright (c) 2018-2022 The MobileCoin Foundation +use crate::{TxOutSummaryUnblindingData, TxSummaryUnblindingData, UnmaskedAmount}; use alloc::vec::Vec; use mc_crypto_ring_signature_signer::RingSigner; use mc_transaction_core::{ @@ -19,7 +20,7 @@ use serde::{Deserialize, Serialize}; /// The idea is that this can be generated without having the spend private key, /// and then transferred to an offline/hardware service that does have the spend /// private key, which can then be used together with the data here to produce a -/// valid, signed Tx. Noet that whether the UnsignedTx can be signed on its own +/// valid, signed Tx. Notw that whether the UnsignedTx can be signed on its own /// or requires the spend private key will depend on the contents of the /// InputRings. #[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)] @@ -31,7 +32,7 @@ pub struct UnsignedTx { pub rings: Vec, /// Output secrets - pub output_secrets: Vec, + pub tx_out_unblinding_data: Vec, /// Block version pub block_version: BlockVersion, @@ -46,11 +47,16 @@ impl UnsignedTx { rng: &mut RNG, ) -> Result { let prefix = self.tx_prefix.clone(); + let output_secrets: Vec = self + .tx_out_unblinding_data + .iter() + .map(|data| OutputSecret::from(data.unmasked_amount.clone())) + .collect(); let signature = SignatureRctBulletproofs::sign( self.block_version, &prefix, self.rings.as_slice(), - self.output_secrets.as_slice(), + output_secrets.as_slice(), Amount::new(prefix.fee, TokenId::from(prefix.fee_token_id)), signer, rng, @@ -68,22 +74,74 @@ impl UnsignedTx { /// Get prepared (but unsigned) ringct bulletproofs which can be signed /// later. Also gets the TxSummary and related digests. + /// + /// Returns: + /// * SigningData This is essentially all parts of SignatureRctBulletproofs + /// except the ring signatures + /// * TxSummary This is a small snapshot of the Tx used by hardware wallets + /// * TxSummaryUnblindingData + /// * ExtendedMessageDigest This is a digest used in connection with the + /// TxSummary pub fn get_signing_data( &self, rng: &mut RNG, - ) -> Result<(SigningData, TxSummary, ExtendedMessageDigest), RingCtError> { + ) -> Result< + ( + SigningData, + TxSummary, + TxSummaryUnblindingData, + ExtendedMessageDigest, + ), + RingCtError, + > { let fee_amount = Amount::new( self.tx_prefix.fee, TokenId::from(self.tx_prefix.fee_token_id), ); - SigningData::new_with_summary( + let output_secrets: Vec = self + .tx_out_unblinding_data + .iter() + .map(|data| OutputSecret::from(data.unmasked_amount.clone())) + .collect(); + let (signing_data, tx_summary, extended_message_digest) = SigningData::new_with_summary( self.block_version, &self.tx_prefix, &self.rings, - &self.output_secrets, + &output_secrets, fee_amount, true, rng, - ) + )?; + // Try to build the TxSummary unblinding data, which requires the amounts from + // the rings, and the blinding factors from the signing data segment. + if signing_data.pseudo_output_blindings.len() != self.rings.len() { + return Err(RingCtError::LengthMismatch( + signing_data.pseudo_output_blindings.len(), + self.rings.len(), + )); + } + let tx_summary_unblinding_data = TxSummaryUnblindingData { + block_version: *self.block_version, + outputs: self.tx_out_unblinding_data.clone(), + inputs: signing_data + .pseudo_output_blindings + .iter() + .zip(self.rings.iter()) + .map(|(blinding, ring)| { + let amount = ring.amount(); + UnmaskedAmount { + value: amount.value, + token_id: *amount.token_id, + blinding: (*blinding).into(), + } + }) + .collect(), + }; + Ok(( + signing_data, + tx_summary, + tx_summary_unblinding_data, + extended_message_digest, + )) } } diff --git a/transaction/extra/tests/verifier.rs b/transaction/extra/tests/verifier.rs new file mode 100644 index 0000000000..733c32e818 --- /dev/null +++ b/transaction/extra/tests/verifier.rs @@ -0,0 +1,201 @@ +// Copyright (c) 2018-2022 The MobileCoin Foundation + +//! Tests of the streaming verifier + +use mc_account_keys::AccountKey; +use mc_crypto_keys::{RistrettoPrivate, RistrettoPublic}; +use mc_crypto_ring_signature_signer::NoKeysRingSigner; +use mc_fog_report_validation_test_utils::{FullyValidatedFogPubkey, MockFogResolver}; +use mc_transaction_builder::test_utils::get_unsigned_transaction; +use mc_transaction_core::{ + constants::{MAX_INPUTS, MAX_OUTPUTS, RING_SIZE}, + tx::Tx, + BlockVersion, +}; +use mc_transaction_extra::{verify_tx_summary, UnsignedTx}; +use mc_util_from_random::FromRandom; +use mc_util_serial::encode; +use rand::{rngs::StdRng, SeedableRng}; +use rand_core::CryptoRngCore; +use std::collections::BTreeMap; + +// Get an unsigned Tx and the sender account keys with the maximum allowed size +// right now +fn get_current_max_size_transaction(rng: &mut impl CryptoRngCore) -> (UnsignedTx, AccountKey) { + let sender = AccountKey::random_with_fog(rng); + let recipient = AccountKey::random_with_fog(rng); + + let ingest_private_key = RistrettoPrivate::from_random(rng); + + let mut fog_map = BTreeMap::default(); + fog_map.insert( + recipient + .default_subaddress() + .fog_report_url() + .unwrap() + .to_string(), + FullyValidatedFogPubkey { + pubkey: RistrettoPublic::from(&ingest_private_key), + pubkey_expiry: 1000, + }, + ); + let fog_resolver = MockFogResolver(fog_map); + + ( + get_unsigned_transaction( + BlockVersion::MAX, + 0.into(), + MAX_INPUTS as usize, + MAX_OUTPUTS as usize, + &sender, + &recipient, + fog_resolver, + rng, + ) + .unwrap(), + sender, + ) +} + +// Get an unsigned Tx and the sender account keys with the minimum possible size +// right now +fn get_current_min_size_transaction(rng: &mut impl CryptoRngCore) -> (UnsignedTx, AccountKey) { + let sender = AccountKey::random_with_fog(rng); + let recipient = AccountKey::random_with_fog(rng); + + let ingest_private_key = RistrettoPrivate::from_random(rng); + + let mut fog_map = BTreeMap::default(); + fog_map.insert( + recipient + .default_subaddress() + .fog_report_url() + .unwrap() + .to_string(), + FullyValidatedFogPubkey { + pubkey: RistrettoPublic::from(&ingest_private_key), + pubkey_expiry: 1000, + }, + ); + let fog_resolver = MockFogResolver(fog_map); + + ( + get_unsigned_transaction( + BlockVersion::MAX, + 0.into(), + 1, + 1, + &sender, + &recipient, + fog_resolver, + rng, + ) + .unwrap(), + sender, + ) +} + +#[test] +fn test_max_size_tx_summary_verification() { + let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]); + + let (unsigned_tx, sender) = get_current_max_size_transaction(&mut rng); + let (signing_data, tx_summary, tx_summary_unblinding_data, extended_message_digest) = + unsigned_tx.get_signing_data(&mut rng).unwrap(); + + let (mlsag_signing_digest, _report) = verify_tx_summary( + &extended_message_digest.0.try_into().unwrap(), + &tx_summary, + &tx_summary_unblinding_data, + *sender.view_private_key(), + ) + .unwrap(); + assert_eq!( + &mlsag_signing_digest[..], + &signing_data.mlsag_signing_digest[..] + ); +} + +#[test] +fn test_max_size_tx_payload_sizes() { + let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]); + + let (unsigned_tx, _sender) = get_current_max_size_transaction(&mut rng); + let (signing_data, tx_summary, tx_summary_unblinding_data, _extended_message_digest) = + unsigned_tx.get_signing_data(&mut rng).unwrap(); + let signature_rct = signing_data + .sign(&unsigned_tx.rings, &NoKeysRingSigner {}, &mut rng) + .unwrap(); + let tx = Tx { + prefix: unsigned_tx.tx_prefix.clone(), + signature: signature_rct, + fee_map_digest: Default::default(), + }; + + assert_eq!(tx.prefix.inputs.len(), MAX_INPUTS as usize); + assert_eq!(tx.prefix.inputs[0].proofs.len(), RING_SIZE as usize); + assert_eq!(tx.prefix.inputs[0].proofs[0].elements.len(), 32); + + let tx_wire = encode(&tx); + assert_eq!(tx_wire.len(), 309_238); + + let tx_summary_wire = encode(&tx_summary); + assert_eq!(tx_summary_wire.len(), 2726); + + let tx_summary_unblinding_wire = encode(&tx_summary_unblinding_data); + assert_eq!(tx_summary_unblinding_wire.len(), 4690); + + let tx_out_summary_wire = encode(&tx_summary.outputs[0]); + assert_eq!(tx_out_summary_wire.len(), 129); + + let tx_out_summary_unblinding_wire = encode(&tx_summary_unblinding_data.outputs[0]); + assert_eq!(tx_out_summary_unblinding_wire.len(), 243); + + let tx_in_summary_wire = encode(&tx_summary.inputs[0]); + assert_eq!(tx_in_summary_wire.len(), 36); + + let tx_in_summary_unblinding_wire = encode(&tx_summary_unblinding_data.inputs[0]); + assert_eq!(tx_in_summary_unblinding_wire.len(), 45); +} + +#[test] +fn test_min_size_tx_payload_sizes() { + let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]); + + let (unsigned_tx, _sender) = get_current_min_size_transaction(&mut rng); + let (signing_data, tx_summary, tx_summary_unblinding_data, _extended_message_digest) = + unsigned_tx.get_signing_data(&mut rng).unwrap(); + let signature_rct = signing_data + .sign(&unsigned_tx.rings, &NoKeysRingSigner {}, &mut rng) + .unwrap(); + let tx = Tx { + prefix: unsigned_tx.tx_prefix.clone(), + signature: signature_rct, + fee_map_digest: Default::default(), + }; + + assert_eq!(tx.prefix.inputs.len(), 1_usize); + assert_eq!(tx.prefix.inputs[0].proofs.len(), RING_SIZE as usize); + assert_eq!(tx.prefix.inputs[0].proofs[0].elements.len(), 32); + + let tx_wire = encode(&tx); + assert_eq!(tx_wire.len(), 20020); + + let tx_summary_wire = encode(&tx_summary); + assert_eq!(tx_summary_wire.len(), 176); + + let tx_summary_unblinding_wire = encode(&tx_summary_unblinding_data); + assert_eq!(tx_summary_unblinding_wire.len(), 295); + + let tx_out_summary_wire = encode(&tx_summary.outputs[0]); + assert_eq!(tx_out_summary_wire.len(), 129); + + let tx_out_summary_unblinding_wire = encode(&tx_summary_unblinding_data.outputs[0]); + assert_eq!(tx_out_summary_unblinding_wire.len(), 243); + + let tx_in_summary_wire = encode(&tx_summary.inputs[0]); + assert_eq!(tx_in_summary_wire.len(), 36); + + let tx_in_summary_unblinding_wire = encode(&tx_summary_unblinding_data.inputs[0]); + assert_eq!(tx_in_summary_unblinding_wire.len(), 45); +} diff --git a/transaction/types/src/amount.rs b/transaction/types/src/amount.rs index fdb13b4044..b539266886 100644 --- a/transaction/types/src/amount.rs +++ b/transaction/types/src/amount.rs @@ -25,3 +25,9 @@ impl Amount { Self { value, token_id } } } + +impl Default for Amount { + fn default() -> Self { + Amount::new(0, 0.into()) + } +} From 1fa2d36aacdd12eadb2f4c9c22dbc15ddec88f98 Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Fri, 4 Nov 2022 10:53:26 -0600 Subject: [PATCH 02/13] more tests --- transaction/extra/src/lib.rs | 2 +- transaction/extra/tests/verifier.rs | 111 +++++++++++++++++++++------- 2 files changed, 84 insertions(+), 29 deletions(-) diff --git a/transaction/extra/src/lib.rs b/transaction/extra/src/lib.rs index 7a193d89eb..485e950366 100644 --- a/transaction/extra/src/lib.rs +++ b/transaction/extra/src/lib.rs @@ -32,7 +32,7 @@ pub use signed_contingent_input::{ pub use tx_out_confirmation_number::TxOutConfirmationNumber; pub use tx_out_gift_code::TxOutGiftCode; pub use tx_summary_unblinding::{ - verify_tx_summary, TxOutSummaryUnblindingData, TxSummaryStreamingVerifier, + verify_tx_summary, TransactionEntity, TxOutSummaryUnblindingData, TxSummaryStreamingVerifier, TxSummaryUnblindingData, TxSummaryUnblindingReport, }; pub use unsigned_tx::UnsignedTx; diff --git a/transaction/extra/tests/verifier.rs b/transaction/extra/tests/verifier.rs index 733c32e818..faf78f18d2 100644 --- a/transaction/extra/tests/verifier.rs +++ b/transaction/extra/tests/verifier.rs @@ -2,7 +2,7 @@ //! Tests of the streaming verifier -use mc_account_keys::AccountKey; +use mc_account_keys::{AccountKey, ShortAddressHash}; use mc_crypto_keys::{RistrettoPrivate, RistrettoPublic}; use mc_crypto_ring_signature_signer::NoKeysRingSigner; use mc_fog_report_validation_test_utils::{FullyValidatedFogPubkey, MockFogResolver}; @@ -10,9 +10,9 @@ use mc_transaction_builder::test_utils::get_unsigned_transaction; use mc_transaction_core::{ constants::{MAX_INPUTS, MAX_OUTPUTS, RING_SIZE}, tx::Tx, - BlockVersion, + Amount, BlockVersion, TokenId, }; -use mc_transaction_extra::{verify_tx_summary, UnsignedTx}; +use mc_transaction_extra::{verify_tx_summary, TransactionEntity, UnsignedTx}; use mc_util_from_random::FromRandom; use mc_util_serial::encode; use rand::{rngs::StdRng, SeedableRng}; @@ -21,7 +21,9 @@ use std::collections::BTreeMap; // Get an unsigned Tx and the sender account keys with the maximum allowed size // right now -fn get_current_max_size_transaction(rng: &mut impl CryptoRngCore) -> (UnsignedTx, AccountKey) { +fn get_current_max_size_transaction( + rng: &mut impl CryptoRngCore, +) -> (UnsignedTx, AccountKey, AccountKey) { let sender = AccountKey::random_with_fog(rng); let recipient = AccountKey::random_with_fog(rng); @@ -54,12 +56,15 @@ fn get_current_max_size_transaction(rng: &mut impl CryptoRngCore) -> (UnsignedTx ) .unwrap(), sender, + recipient, ) } // Get an unsigned Tx and the sender account keys with the minimum possible size // right now -fn get_current_min_size_transaction(rng: &mut impl CryptoRngCore) -> (UnsignedTx, AccountKey) { +fn get_current_min_size_transaction( + rng: &mut impl CryptoRngCore, +) -> (UnsignedTx, AccountKey, AccountKey) { let sender = AccountKey::random_with_fog(rng); let recipient = AccountKey::random_with_fog(rng); @@ -92,35 +97,15 @@ fn get_current_min_size_transaction(rng: &mut impl CryptoRngCore) -> (UnsignedTx ) .unwrap(), sender, + recipient, ) } -#[test] -fn test_max_size_tx_summary_verification() { - let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]); - - let (unsigned_tx, sender) = get_current_max_size_transaction(&mut rng); - let (signing_data, tx_summary, tx_summary_unblinding_data, extended_message_digest) = - unsigned_tx.get_signing_data(&mut rng).unwrap(); - - let (mlsag_signing_digest, _report) = verify_tx_summary( - &extended_message_digest.0.try_into().unwrap(), - &tx_summary, - &tx_summary_unblinding_data, - *sender.view_private_key(), - ) - .unwrap(); - assert_eq!( - &mlsag_signing_digest[..], - &signing_data.mlsag_signing_digest[..] - ); -} - #[test] fn test_max_size_tx_payload_sizes() { let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]); - let (unsigned_tx, _sender) = get_current_max_size_transaction(&mut rng); + let (unsigned_tx, _sender, _recipient) = get_current_max_size_transaction(&mut rng); let (signing_data, tx_summary, tx_summary_unblinding_data, _extended_message_digest) = unsigned_tx.get_signing_data(&mut rng).unwrap(); let signature_rct = signing_data @@ -162,7 +147,7 @@ fn test_max_size_tx_payload_sizes() { fn test_min_size_tx_payload_sizes() { let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]); - let (unsigned_tx, _sender) = get_current_min_size_transaction(&mut rng); + let (unsigned_tx, _sender, _recipient) = get_current_min_size_transaction(&mut rng); let (signing_data, tx_summary, tx_summary_unblinding_data, _extended_message_digest) = unsigned_tx.get_signing_data(&mut rng).unwrap(); let signature_rct = signing_data @@ -199,3 +184,73 @@ fn test_min_size_tx_payload_sizes() { let tx_in_summary_unblinding_wire = encode(&tx_summary_unblinding_data.inputs[0]); assert_eq!(tx_in_summary_unblinding_wire.len(), 45); } + +#[test] +fn test_max_size_tx_summary_verification() { + let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]); + + let (unsigned_tx, sender, recipient) = get_current_max_size_transaction(&mut rng); + let (signing_data, tx_summary, tx_summary_unblinding_data, extended_message_digest) = + unsigned_tx.get_signing_data(&mut rng).unwrap(); + + let (mlsag_signing_digest, report) = verify_tx_summary( + &extended_message_digest.0.try_into().unwrap(), + &tx_summary, + &tx_summary_unblinding_data, + *sender.view_private_key(), + ) + .unwrap(); + assert_eq!( + &mlsag_signing_digest[..], + &signing_data.mlsag_signing_digest[..] + ); + + let recipient_hash = ShortAddressHash::from(&recipient.default_subaddress()); + let balance_changes: Vec<_> = report.balance_changes.iter().collect(); + assert_eq!( + balance_changes, + vec![ + (&(TransactionEntity::Ourself, TokenId::from(0)), &-16000), + ( + &(TransactionEntity::Address(recipient_hash), TokenId::from(0)), + &160 + ) + ] + ); + assert_eq!(report.network_fee, Amount::new(15840, TokenId::from(0))); +} + +#[test] +fn test_min_size_tx_summary_verification() { + let mut rng: StdRng = SeedableRng::from_seed([2u8; 32]); + + let (unsigned_tx, sender, recipient) = get_current_min_size_transaction(&mut rng); + let (signing_data, tx_summary, tx_summary_unblinding_data, extended_message_digest) = + unsigned_tx.get_signing_data(&mut rng).unwrap(); + + let (mlsag_signing_digest, report) = verify_tx_summary( + &extended_message_digest.0.try_into().unwrap(), + &tx_summary, + &tx_summary_unblinding_data, + *sender.view_private_key(), + ) + .unwrap(); + assert_eq!( + &mlsag_signing_digest[..], + &signing_data.mlsag_signing_digest[..] + ); + + let recipient_hash = ShortAddressHash::from(&recipient.default_subaddress()); + let balance_changes: Vec<_> = report.balance_changes.iter().collect(); + assert_eq!( + balance_changes, + vec![ + (&(TransactionEntity::Ourself, TokenId::from(0)), &-1000), + ( + &(TransactionEntity::Address(recipient_hash), TokenId::from(0)), + &10 + ) + ] + ); + assert_eq!(report.network_fee, Amount::new(990, TokenId::from(0))); +} From e7d5288b8dc1d48bf1817f82f5d99437839da2b8 Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Thu, 1 Dec 2022 10:01:09 -0700 Subject: [PATCH 03/13] cargo locks --- Cargo.lock | 62 ++++++++++++++++----------- consensus/enclave/trusted/Cargo.lock | 24 ++++++++++- fog/ingest/enclave/trusted/Cargo.lock | 24 ++++++++++- fog/ledger/enclave/trusted/Cargo.lock | 24 ++++++++++- fog/view/enclave/trusted/Cargo.lock | 24 ++++++++++- 5 files changed, 126 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6f56d586bb..5680890e8f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -847,7 +847,7 @@ dependencies = [ "rand 0.8.5", "sha2 0.10.6", "subtle", - "time 0.3.9", + "time 0.3.17", "version_check", ] @@ -1135,7 +1135,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3495912c9c1ccf2e18976439f4443f3fee0fd61f424ff99fde6a66b15ecb448f" dependencies = [ "cfg-if 1.0.0", - "hashbrown 0.12.3", + "hashbrown", "lock_api", "parking_lot_core 0.9.3", ] @@ -1828,12 +1828,6 @@ dependencies = [ "byteorder", ] -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" - [[package]] name = "hashbrown" version = "0.12.3" @@ -1876,6 +1870,9 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] [[package]] name = "hex_fmt" @@ -2059,12 +2056,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.7.0" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ "autocfg", - "hashbrown 0.11.2", + "hashbrown", "serde", ] @@ -2687,7 +2684,7 @@ dependencies = [ "cfg-if 1.0.0", "chrono", "displaydoc", - "hashbrown 0.12.3", + "hashbrown", "hex", "hex_fmt", "hostname", @@ -2956,7 +2953,6 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", - "toml", ] [[package]] @@ -3100,6 +3096,7 @@ dependencies = [ "pem", "serde", "serde_json", + "serde_with", "toml", ] @@ -6100,9 +6097,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" dependencies = [ "hermit-abi", "libc", @@ -7091,7 +7088,7 @@ dependencies = [ "serde_json", "state", "tempfile", - "time 0.3.9", + "time 0.3.17", "tokio", "tokio-stream", "tokio-util 0.7.2", @@ -7138,7 +7135,7 @@ dependencies = [ "smallvec", "stable-pattern", "state", - "time 0.3.9", + "time 0.3.17", "tokio", "uncased", ] @@ -7554,7 +7551,7 @@ dependencies = [ "serde", "serde_json", "thiserror", - "time 0.3.9", + "time 0.3.17", "url", "uuid", ] @@ -7636,8 +7633,14 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "368f2d60d049ea019a84dcd6687b0d1e0030fe663ae105039bdf967ed5e6a9a7" dependencies = [ + "base64", + "chrono", + "hex", + "indexmap", "serde", + "serde_json", "serde_with_macros", + "time 0.3.17", ] [[package]] @@ -7872,7 +7875,7 @@ dependencies = [ "serde", "serde_json", "slog", - "time 0.3.9", + "time 0.3.17", ] [[package]] @@ -7907,7 +7910,7 @@ dependencies = [ "slog", "term", "thread_local", - "time 0.3.9", + "time 0.3.17", ] [[package]] @@ -8167,21 +8170,32 @@ dependencies = [ [[package]] name = "time" -version = "0.3.9" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" dependencies = [ "itoa 1.0.1", "libc", "num_threads", + "serde", + "time-core", "time-macros", ] +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + [[package]] name = "time-macros" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", +] [[package]] name = "tiny-bip39" diff --git a/consensus/enclave/trusted/Cargo.lock b/consensus/enclave/trusted/Cargo.lock index 08488a06cd..23bc77f52f 100644 --- a/consensus/enclave/trusted/Cargo.lock +++ b/consensus/enclave/trusted/Cargo.lock @@ -858,6 +858,7 @@ dependencies = [ "hashbrown", "hex", "hex_fmt", + "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-keys", "mc-crypto-rand", @@ -985,6 +986,7 @@ dependencies = [ "glob", "hkdf", "mc-core-types", + "mc-crypto-dalek", "mc-crypto-hashes", "mc-crypto-keys", "sha2", @@ -1040,9 +1042,25 @@ version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", + "mc-crypto-dalek-backend-simd", + "mc-crypto-dalek-backend-u64", "x25519-dalek", ] +[[package]] +name = "mc-crypto-dalek-backend-simd" +version = "2.0.0" +dependencies = [ + "curve25519-dalek", +] + +[[package]] +name = "mc-crypto-dalek-backend-u64" +version = "2.0.0" +dependencies = [ + "curve25519-dalek", +] + [[package]] name = "mc-crypto-digestible" version = "2.1.0-pre0" @@ -1051,6 +1069,7 @@ dependencies = [ "curve25519-dalek", "ed25519-dalek", "generic-array", + "mc-crypto-dalek", "mc-crypto-digestible-derive", "merlin", "x25519-dalek", @@ -1170,9 +1189,9 @@ version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", - "hex_fmt", - "mc-account-keys", + "ed25519-dalek", "mc-account-keys-types", + "mc-core-types", "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", @@ -1364,6 +1383,7 @@ dependencies = [ "mc-account-keys", "mc-common", "mc-crypto-box", + "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", "mc-crypto-keys", diff --git a/fog/ingest/enclave/trusted/Cargo.lock b/fog/ingest/enclave/trusted/Cargo.lock index 638bed79f8..86e02e5e21 100644 --- a/fog/ingest/enclave/trusted/Cargo.lock +++ b/fog/ingest/enclave/trusted/Cargo.lock @@ -878,6 +878,7 @@ dependencies = [ "hashbrown", "hex", "hex_fmt", + "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-keys", "mc-crypto-rand", @@ -912,6 +913,7 @@ dependencies = [ "glob", "hkdf", "mc-core-types", + "mc-crypto-dalek", "mc-crypto-hashes", "mc-crypto-keys", "sha2", @@ -967,9 +969,25 @@ version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", + "mc-crypto-dalek-backend-simd", + "mc-crypto-dalek-backend-u64", "x25519-dalek", ] +[[package]] +name = "mc-crypto-dalek-backend-simd" +version = "2.0.0" +dependencies = [ + "curve25519-dalek", +] + +[[package]] +name = "mc-crypto-dalek-backend-u64" +version = "2.0.0" +dependencies = [ + "curve25519-dalek", +] + [[package]] name = "mc-crypto-digestible" version = "2.1.0-pre0" @@ -978,6 +996,7 @@ dependencies = [ "curve25519-dalek", "ed25519-dalek", "generic-array", + "mc-crypto-dalek", "mc-crypto-digestible-derive", "merlin", "x25519-dalek", @@ -1084,9 +1103,9 @@ version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", - "hex_fmt", - "mc-account-keys", + "ed25519-dalek", "mc-account-keys-types", + "mc-core-types", "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", @@ -1475,6 +1494,7 @@ dependencies = [ "mc-account-keys", "mc-common", "mc-crypto-box", + "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", "mc-crypto-keys", diff --git a/fog/ledger/enclave/trusted/Cargo.lock b/fog/ledger/enclave/trusted/Cargo.lock index cb697abe45..786c0c0fd0 100644 --- a/fog/ledger/enclave/trusted/Cargo.lock +++ b/fog/ledger/enclave/trusted/Cargo.lock @@ -859,6 +859,7 @@ dependencies = [ "hashbrown", "hex", "hex_fmt", + "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-keys", "mc-crypto-rand", @@ -881,6 +882,7 @@ dependencies = [ "glob", "hkdf", "mc-core-types", + "mc-crypto-dalek", "mc-crypto-hashes", "mc-crypto-keys", "sha2", @@ -936,9 +938,25 @@ version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", + "mc-crypto-dalek-backend-simd", + "mc-crypto-dalek-backend-u64", "x25519-dalek", ] +[[package]] +name = "mc-crypto-dalek-backend-simd" +version = "2.0.0" +dependencies = [ + "curve25519-dalek", +] + +[[package]] +name = "mc-crypto-dalek-backend-u64" +version = "2.0.0" +dependencies = [ + "curve25519-dalek", +] + [[package]] name = "mc-crypto-digestible" version = "2.1.0-pre0" @@ -947,6 +965,7 @@ dependencies = [ "curve25519-dalek", "ed25519-dalek", "generic-array", + "mc-crypto-dalek", "mc-crypto-digestible-derive", "merlin", "x25519-dalek", @@ -1053,9 +1072,9 @@ version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", - "hex_fmt", - "mc-account-keys", + "ed25519-dalek", "mc-account-keys-types", + "mc-core-types", "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", @@ -1423,6 +1442,7 @@ dependencies = [ "mc-account-keys", "mc-common", "mc-crypto-box", + "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", "mc-crypto-keys", diff --git a/fog/view/enclave/trusted/Cargo.lock b/fog/view/enclave/trusted/Cargo.lock index fbf6aa835b..6806dc0173 100644 --- a/fog/view/enclave/trusted/Cargo.lock +++ b/fog/view/enclave/trusted/Cargo.lock @@ -888,6 +888,7 @@ dependencies = [ "hashbrown", "hex", "hex_fmt", + "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-keys", "mc-crypto-rand", @@ -922,6 +923,7 @@ dependencies = [ "glob", "hkdf", "mc-core-types", + "mc-crypto-dalek", "mc-crypto-hashes", "mc-crypto-keys", "sha2", @@ -977,9 +979,25 @@ version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", + "mc-crypto-dalek-backend-simd", + "mc-crypto-dalek-backend-u64", "x25519-dalek", ] +[[package]] +name = "mc-crypto-dalek-backend-simd" +version = "2.0.0" +dependencies = [ + "curve25519-dalek", +] + +[[package]] +name = "mc-crypto-dalek-backend-u64" +version = "2.0.0" +dependencies = [ + "curve25519-dalek", +] + [[package]] name = "mc-crypto-digestible" version = "2.1.0-pre0" @@ -988,6 +1006,7 @@ dependencies = [ "curve25519-dalek", "ed25519-dalek", "generic-array", + "mc-crypto-dalek", "mc-crypto-digestible-derive", "merlin", "x25519-dalek", @@ -1094,9 +1113,9 @@ version = "2.1.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", - "hex_fmt", - "mc-account-keys", + "ed25519-dalek", "mc-account-keys-types", + "mc-core-types", "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", @@ -1494,6 +1513,7 @@ dependencies = [ "mc-account-keys", "mc-common", "mc-crypto-box", + "mc-crypto-dalek", "mc-crypto-digestible", "mc-crypto-hashes", "mc-crypto-keys", From 6f97d5cdd7b185c0c5e10b64fd149fe185f17708 Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Thu, 1 Dec 2022 11:01:50 -0700 Subject: [PATCH 04/13] cargo fmt --- account-keys/src/account_keys.rs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/account-keys/src/account_keys.rs b/account-keys/src/account_keys.rs index 281ba46753..d22701da2c 100644 --- a/account-keys/src/account_keys.rs +++ b/account-keys/src/account_keys.rs @@ -47,16 +47,7 @@ pub use mc_core::consts::{ /// A MobileCoin user's public subaddress. #[derive( - Clone, - Deserialize, - Digestible, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, - Serialize, - Zeroize, + Clone, Deserialize, Digestible, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Zeroize, )] #[cfg_attr(feature = "prost", derive(Message))] pub struct PublicAddress { From 70285f5a50e295e3d40ffbf3e563f762f42e43cc Mon Sep 17 00:00:00 2001 From: Chris Beck <5683852+cbeck88@users.noreply.github.com> Date: Tue, 6 Dec 2022 16:31:41 -0700 Subject: [PATCH 05/13] Update transaction/extra/src/tx_summary_unblinding/verifier.rs Co-authored-by: Eran Rundstein --- transaction/extra/src/tx_summary_unblinding/verifier.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transaction/extra/src/tx_summary_unblinding/verifier.rs b/transaction/extra/src/tx_summary_unblinding/verifier.rs index 2461aabfac..b49cf817da 100644 --- a/transaction/extra/src/tx_summary_unblinding/verifier.rs +++ b/transaction/extra/src/tx_summary_unblinding/verifier.rs @@ -307,7 +307,7 @@ impl TxSummaryStreamingVerifier { /// /// Arguments: /// * fee (from TxSummary) - /// * tombstone_block (from Txsummary) + /// * tombstone_block (from TxSummary) /// /// Returns: /// * extended-message-and-tx-summary digest From fc772ca758aabc695ef7f0c2dc9e2a45b7a715d6 Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Tue, 6 Dec 2022 16:54:16 -0700 Subject: [PATCH 06/13] rebuild cargo locks from master --- Cargo.lock | 420 +++++++++++++------------- consensus/enclave/trusted/Cargo.lock | 112 +++---- fog/ingest/enclave/trusted/Cargo.lock | 124 ++++---- fog/ledger/enclave/trusted/Cargo.lock | 118 ++++---- fog/view/enclave/trusted/Cargo.lock | 126 ++++---- 5 files changed, 452 insertions(+), 448 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5680890e8f..93d3e8b75d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.61" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "508b352bb5c066aac251f6daf6b36eccd03e8a88e8081cd44959ea277a3af9a8" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" [[package]] name = "arc-swap" @@ -617,9 +617,9 @@ checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" [[package]] name = "cexpr" @@ -847,7 +847,7 @@ dependencies = [ "rand 0.8.5", "sha2 0.10.6", "subtle", - "time 0.3.17", + "time 0.3.15", "version_check", ] @@ -1737,7 +1737,7 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "go-grpc-gateway-testing" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -2056,9 +2056,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" dependencies = [ "autocfg", "hashbrown", @@ -2351,7 +2351,7 @@ dependencies = [ [[package]] name = "mc-account-keys" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "criterion", "curve25519-dalek", @@ -2383,14 +2383,14 @@ dependencies = [ [[package]] name = "mc-account-keys-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-keys", ] [[package]] name = "mc-admin-http-gateway" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "grpcio", @@ -2405,7 +2405,7 @@ dependencies = [ [[package]] name = "mc-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "bs58", "cargo-emit", @@ -2448,7 +2448,7 @@ dependencies = [ [[package]] name = "mc-attest-ake" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead 0.4.3", "aes-gcm 0.9.4", @@ -2473,7 +2473,7 @@ dependencies = [ [[package]] name = "mc-attest-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead 0.4.3", "cargo-emit", @@ -2491,7 +2491,7 @@ dependencies = [ [[package]] name = "mc-attest-core" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "bincode", @@ -2525,7 +2525,7 @@ dependencies = [ [[package]] name = "mc-attest-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-ake", @@ -2538,7 +2538,7 @@ dependencies = [ [[package]] name = "mc-attest-net" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "displaydoc", @@ -2558,7 +2558,7 @@ dependencies = [ [[package]] name = "mc-attest-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -2569,7 +2569,7 @@ dependencies = [ [[package]] name = "mc-attest-untrusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-attest-core", "mc-attest-verifier", @@ -2579,7 +2579,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "cfg-if 1.0.0", @@ -2605,7 +2605,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "displaydoc", @@ -2619,7 +2619,7 @@ dependencies = [ [[package]] name = "mc-blockchain-test-utils" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-blockchain-types", "mc-common", @@ -2633,7 +2633,7 @@ dependencies = [ [[package]] name = "mc-blockchain-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "hex_fmt", @@ -2660,7 +2660,7 @@ dependencies = [ [[package]] name = "mc-blockchain-validators" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "hex", @@ -2678,7 +2678,7 @@ dependencies = [ [[package]] name = "mc-common" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "backtrace", "cfg-if 1.0.0", @@ -2717,7 +2717,7 @@ dependencies = [ [[package]] name = "mc-connection" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes-gcm 0.9.4", "cookie", @@ -2748,7 +2748,7 @@ dependencies = [ [[package]] name = "mc-connection-test-utils" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-blockchain-types", "mc-connection", @@ -2760,7 +2760,7 @@ dependencies = [ [[package]] name = "mc-consensus-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "futures", @@ -2781,7 +2781,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes-gcm 0.9.4", "cargo-emit", @@ -2819,7 +2819,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "hex", @@ -2842,7 +2842,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -2850,7 +2850,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-impl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "hex", @@ -2887,7 +2887,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-measurement" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-attest-core", @@ -2900,7 +2900,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-mock" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-account-keys", "mc-attest-core", @@ -2923,7 +2923,7 @@ dependencies = [ [[package]] name = "mc-consensus-mint-client" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -2935,6 +2935,7 @@ dependencies = [ "mc-common", "mc-consensus-api", "mc-consensus-enclave-api", + "mc-consensus-mint-client-types", "mc-consensus-service-config", "mc-crypto-keys", "mc-crypto-multisig", @@ -2956,8 +2957,21 @@ dependencies = [ ] [[package]] -name = "mc-consensus-scp" +name = "mc-consensus-mint-client-types" version = "2.1.0-pre0" +dependencies = [ + "displaydoc", + "hex", + "mc-consensus-service-config", + "mc-crypto-keys", + "mc-transaction-core", + "serde", + "serde_json", +] + +[[package]] +name = "mc-consensus-scp" +version = "4.0.0-pre0" dependencies = [ "crossbeam-channel", "maplit", @@ -2981,7 +2995,7 @@ dependencies = [ [[package]] name = "mc-consensus-scp-play" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "mc-common", @@ -2993,7 +3007,7 @@ dependencies = [ [[package]] name = "mc-consensus-scp-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-common", "mc-crypto-digestible", @@ -3009,7 +3023,7 @@ dependencies = [ [[package]] name = "mc-consensus-service" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "chrono", @@ -3075,7 +3089,7 @@ dependencies = [ [[package]] name = "mc-consensus-service-config" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "clap 4.0.18", @@ -3153,7 +3167,7 @@ dependencies = [ [[package]] name = "mc-crypto-ake-enclave" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes-gcm 0.9.4", "digest 0.10.5", @@ -3173,7 +3187,7 @@ dependencies = [ [[package]] name = "mc-crypto-box" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead 0.4.3", "digest 0.10.5", @@ -3189,7 +3203,7 @@ dependencies = [ [[package]] name = "mc-crypto-dalek" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", @@ -3218,7 +3232,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "curve25519-dalek", @@ -3232,7 +3246,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -3241,7 +3255,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive-test" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-digestible-test-utils", @@ -3249,7 +3263,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-signature" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "schnorrkel-og", @@ -3258,7 +3272,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-test-utils" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "serde_json", @@ -3266,7 +3280,7 @@ dependencies = [ [[package]] name = "mc-crypto-hashes" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "blake2", "digest 0.10.5", @@ -3275,7 +3289,7 @@ dependencies = [ [[package]] name = "mc-crypto-keys" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "curve25519-dalek", @@ -3311,7 +3325,7 @@ dependencies = [ [[package]] name = "mc-crypto-message-cipher" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes-gcm 0.9.4", "displaydoc", @@ -3325,7 +3339,7 @@ dependencies = [ [[package]] name = "mc-crypto-multisig" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-keys", @@ -3339,7 +3353,7 @@ dependencies = [ [[package]] name = "mc-crypto-noise" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead 0.4.3", "aes-gcm 0.9.4", @@ -3360,7 +3374,7 @@ dependencies = [ [[package]] name = "mc-crypto-rand" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "rand 0.8.5", @@ -3369,7 +3383,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -3399,7 +3413,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature-signer" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -3426,7 +3440,7 @@ dependencies = [ [[package]] name = "mc-crypto-x509-test-vectors" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "clap 4.0.18", @@ -3438,7 +3452,7 @@ dependencies = [ [[package]] name = "mc-crypto-x509-utils" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-crypto-keys", @@ -3449,7 +3463,7 @@ dependencies = [ [[package]] name = "mc-enclave-boundary" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-common", "mc-crypto-rand", @@ -3460,7 +3474,7 @@ dependencies = [ [[package]] name = "mc-fog-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -3492,7 +3506,7 @@ dependencies = [ [[package]] name = "mc-fog-distribution" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "crossbeam-channel", @@ -3526,7 +3540,7 @@ dependencies = [ [[package]] name = "mc-fog-enclave-connection" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes-gcm 0.9.4", "cookie", @@ -3550,7 +3564,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-client" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "assert_cmd", "clap 4.0.18", @@ -3589,7 +3603,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "criterion", @@ -3624,7 +3638,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -3641,7 +3655,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -3649,7 +3663,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-impl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aligned-cmov", "mc-account-keys", @@ -3682,7 +3696,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-measurement" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-attest-core", @@ -3695,7 +3709,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-report" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -3707,7 +3721,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-server" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "dirs", @@ -3765,7 +3779,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-server-test-utils" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-attest-net", "mc-blockchain-test-utils", @@ -3790,7 +3804,7 @@ dependencies = [ [[package]] name = "mc-fog-kex-rng" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "digest 0.10.5", "displaydoc", @@ -3806,7 +3820,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-connection" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "grpcio", @@ -3828,7 +3842,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-attest-core", @@ -3857,7 +3871,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -3875,7 +3889,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -3883,7 +3897,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-impl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aligned-cmov", "mc-attest-core", @@ -3906,7 +3920,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-measurement" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-attest-core", @@ -3919,7 +3933,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-server" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -3974,7 +3988,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-test-infra" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-attest-core", "mc-attest-enclave-api", @@ -3991,7 +4005,7 @@ dependencies = [ [[package]] name = "mc-fog-load-testing" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "grpcio", @@ -4019,14 +4033,14 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-fog-ocall-oram-storage-testing" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aligned-cmov", "mc-fog-ocall-oram-storage-trusted", @@ -4037,7 +4051,7 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes 0.7.5", "aligned-cmov", @@ -4054,7 +4068,7 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-untrusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "lazy_static", "mc-common", @@ -4062,7 +4076,7 @@ dependencies = [ [[package]] name = "mc-fog-overseer-server" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -4101,7 +4115,7 @@ dependencies = [ [[package]] name = "mc-fog-recovery-db-iface" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "chrono", "displaydoc", @@ -4117,7 +4131,7 @@ dependencies = [ [[package]] name = "mc-fog-report-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "futures", @@ -4136,7 +4150,7 @@ dependencies = [ [[package]] name = "mc-fog-report-api-test-utils" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-util-serial", "prost", @@ -4145,7 +4159,7 @@ dependencies = [ [[package]] name = "mc-fog-report-cli" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "clap 4.0.18", @@ -4169,7 +4183,7 @@ dependencies = [ [[package]] name = "mc-fog-report-connection" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "grpcio", @@ -4186,7 +4200,7 @@ dependencies = [ [[package]] name = "mc-fog-report-resolver" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-account-keys", "mc-attest-verifier", @@ -4201,7 +4215,7 @@ dependencies = [ [[package]] name = "mc-fog-report-server" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -4237,7 +4251,7 @@ dependencies = [ [[package]] name = "mc-fog-report-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-attest-core", "mc-crypto-digestible", @@ -4247,7 +4261,7 @@ dependencies = [ [[package]] name = "mc-fog-report-validation" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-account-keys", @@ -4260,7 +4274,7 @@ dependencies = [ [[package]] name = "mc-fog-report-validation-test-utils" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-account-keys", "mc-fog-report-validation", @@ -4268,7 +4282,7 @@ dependencies = [ [[package]] name = "mc-fog-sample-paykit" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "clap 4.0.18", @@ -4320,7 +4334,7 @@ dependencies = [ [[package]] name = "mc-fog-sig" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-account-keys", @@ -4341,7 +4355,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-authority" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-keys", "mc-util-from-random", @@ -4352,7 +4366,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-report" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -4367,7 +4381,7 @@ dependencies = [ [[package]] name = "mc-fog-sql-recovery-db" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "chrono", "clap 4.0.18", @@ -4401,7 +4415,7 @@ dependencies = [ [[package]] name = "mc-fog-sql-recovery-db-cleanup" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "chrono", "clap 4.0.18", @@ -4413,7 +4427,7 @@ dependencies = [ [[package]] name = "mc-fog-test-client" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -4447,7 +4461,7 @@ dependencies = [ [[package]] name = "mc-fog-test-infra" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "digest 0.10.5", @@ -4481,7 +4495,7 @@ dependencies = [ [[package]] name = "mc-fog-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "crc", "displaydoc", @@ -4501,7 +4515,7 @@ dependencies = [ [[package]] name = "mc-fog-uri" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-common", "mc-util-uri", @@ -4509,7 +4523,7 @@ dependencies = [ [[package]] name = "mc-fog-view-connection" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "grpcio", "mc-attest-core", @@ -4529,7 +4543,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "criterion", @@ -4564,7 +4578,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -4582,7 +4596,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -4590,7 +4604,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-impl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aligned-cmov", "mc-attest-core", @@ -4612,7 +4626,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-measurement" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-attest-core", @@ -4625,7 +4639,7 @@ dependencies = [ [[package]] name = "mc-fog-view-load-test" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "grpcio", @@ -4644,7 +4658,7 @@ dependencies = [ [[package]] name = "mc-fog-view-protocol" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-account-keys", @@ -4667,7 +4681,7 @@ dependencies = [ [[package]] name = "mc-fog-view-server" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -4718,7 +4732,7 @@ dependencies = [ [[package]] name = "mc-ledger-db" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "lazy_static", @@ -4747,7 +4761,7 @@ dependencies = [ [[package]] name = "mc-ledger-distribution" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "dirs", @@ -4770,7 +4784,7 @@ dependencies = [ [[package]] name = "mc-ledger-from-archive" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "mc-api", @@ -4781,7 +4795,7 @@ dependencies = [ [[package]] name = "mc-ledger-migration" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "lmdb-rkv", @@ -4794,7 +4808,7 @@ dependencies = [ [[package]] name = "mc-ledger-sync" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "crossbeam-channel", "displaydoc", @@ -4828,7 +4842,7 @@ dependencies = [ [[package]] name = "mc-mobilecoind" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes-gcm 0.9.4", "clap 4.0.18", @@ -4898,7 +4912,7 @@ dependencies = [ [[package]] name = "mc-mobilecoind-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "futures", @@ -4917,7 +4931,7 @@ dependencies = [ [[package]] name = "mc-mobilecoind-dev-faucet" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "async-channel", "clap 4.0.18", @@ -4949,7 +4963,7 @@ dependencies = [ [[package]] name = "mc-mobilecoind-json" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "grpcio", @@ -5026,7 +5040,7 @@ dependencies = [ [[package]] name = "mc-peers" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "crossbeam-channel", "displaydoc", @@ -5059,7 +5073,7 @@ dependencies = [ [[package]] name = "mc-peers-test-utils" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "grpcio", "hex", @@ -5083,7 +5097,7 @@ dependencies = [ [[package]] name = "mc-sgx-build" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cc", "lazy_static", @@ -5093,7 +5107,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-sgx-types", @@ -5101,7 +5115,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-sgx-debug-edl", @@ -5110,7 +5124,7 @@ dependencies = [ [[package]] name = "mc-sgx-css" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "sha2 0.10.6", @@ -5118,7 +5132,7 @@ dependencies = [ [[package]] name = "mc-sgx-css-dump" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "hex_fmt", @@ -5127,21 +5141,21 @@ dependencies = [ [[package]] name = "mc-sgx-debug-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-panic-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-report-cache-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -5152,7 +5166,7 @@ dependencies = [ [[package]] name = "mc-sgx-report-cache-untrusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -5168,7 +5182,7 @@ dependencies = [ [[package]] name = "mc-sgx-slog" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-common", @@ -5178,18 +5192,18 @@ dependencies = [ [[package]] name = "mc-sgx-slog-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-urts" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-common", "mc-sgx-build", @@ -5200,7 +5214,7 @@ dependencies = [ [[package]] name = "mc-test-vectors-account-keys" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "hex", "mc-account-keys", @@ -5212,7 +5226,7 @@ dependencies = [ [[package]] name = "mc-test-vectors-b58-encodings" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-account-keys", "mc-api", @@ -5222,7 +5236,7 @@ dependencies = [ [[package]] name = "mc-test-vectors-definitions" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-util-test-vector", "serde", @@ -5231,7 +5245,7 @@ dependencies = [ [[package]] name = "mc-test-vectors-memos" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "hex", "mc-account-keys", @@ -5246,7 +5260,7 @@ dependencies = [ [[package]] name = "mc-test-vectors-tx-out-records" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "hex", "mc-account-keys", @@ -5268,7 +5282,7 @@ dependencies = [ [[package]] name = "mc-transaction-builder" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "assert_matches", "cfg-if 1.0.0", @@ -5301,7 +5315,7 @@ dependencies = [ [[package]] name = "mc-transaction-core" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes 0.7.5", "assert_matches", @@ -5348,7 +5362,7 @@ dependencies = [ [[package]] name = "mc-transaction-core-test-utils" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-account-keys", "mc-crypto-keys", @@ -5363,7 +5377,7 @@ dependencies = [ [[package]] name = "mc-transaction-extra" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "assert_matches", "cfg-if 1.0.0", @@ -5400,7 +5414,7 @@ dependencies = [ [[package]] name = "mc-transaction-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-crypto-digestible", @@ -5411,7 +5425,7 @@ dependencies = [ [[package]] name = "mc-util-b58-decoder" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "hex", @@ -5420,7 +5434,7 @@ dependencies = [ [[package]] name = "mc-util-build-enclave" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "cargo_metadata 0.15.1", @@ -5436,7 +5450,7 @@ dependencies = [ [[package]] name = "mc-util-build-grpc" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-util-build-script", "protoc-grpcio", @@ -5444,7 +5458,7 @@ dependencies = [ [[package]] name = "mc-util-build-info" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "json", @@ -5452,7 +5466,7 @@ dependencies = [ [[package]] name = "mc-util-build-script" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -5463,7 +5477,7 @@ dependencies = [ [[package]] name = "mc-util-build-sgx" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "cc", @@ -5474,7 +5488,7 @@ dependencies = [ [[package]] name = "mc-util-cli" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "mc-util-build-info", @@ -5482,7 +5496,7 @@ dependencies = [ [[package]] name = "mc-util-dump-ledger" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -5495,7 +5509,7 @@ dependencies = [ [[package]] name = "mc-util-encodings" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "displaydoc", @@ -5506,18 +5520,18 @@ dependencies = [ [[package]] name = "mc-util-ffi" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-util-from-random" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "rand_core 0.6.4", ] [[package]] name = "mc-util-generate-sample-ledger" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "mc-account-keys", @@ -5536,7 +5550,7 @@ dependencies = [ [[package]] name = "mc-util-grpc" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "clap 4.0.18", @@ -5570,7 +5584,7 @@ dependencies = [ [[package]] name = "mc-util-grpc-admin-tool" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "grpcio", @@ -5581,7 +5595,7 @@ dependencies = [ [[package]] name = "mc-util-grpc-token-generator" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "mc-common", @@ -5592,11 +5606,11 @@ dependencies = [ [[package]] name = "mc-util-host-cert" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-util-keyfile" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "clap 4.0.18", @@ -5625,7 +5639,7 @@ dependencies = [ [[package]] name = "mc-util-lmdb" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "lmdb-rkv", @@ -5635,7 +5649,7 @@ dependencies = [ [[package]] name = "mc-util-logger-macros" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -5644,7 +5658,7 @@ dependencies = [ [[package]] name = "mc-util-metered-channel" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "crossbeam-channel", "mc-util-metrics", @@ -5652,7 +5666,7 @@ dependencies = [ [[package]] name = "mc-util-metrics" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "chrono", "grpcio", @@ -5665,7 +5679,7 @@ dependencies = [ [[package]] name = "mc-util-parse" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "hex", "itertools", @@ -5674,7 +5688,7 @@ dependencies = [ [[package]] name = "mc-util-repr-bytes" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "generic-array", "hex_fmt", @@ -5685,7 +5699,7 @@ dependencies = [ [[package]] name = "mc-util-seeded-ed25519-key-gen" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "mc-crypto-keys", @@ -5698,7 +5712,7 @@ dependencies = [ [[package]] name = "mc-util-serial" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "prost", "protobuf", @@ -5710,7 +5724,7 @@ dependencies = [ [[package]] name = "mc-util-telemetry" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "displaydoc", @@ -5721,7 +5735,7 @@ dependencies = [ [[package]] name = "mc-util-test-helper" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "itertools", @@ -5734,7 +5748,7 @@ dependencies = [ [[package]] name = "mc-util-test-vector" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "serde", "serde_json", @@ -5742,7 +5756,7 @@ dependencies = [ [[package]] name = "mc-util-test-with-data" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -5751,7 +5765,7 @@ dependencies = [ [[package]] name = "mc-util-uri" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "displaydoc", @@ -5769,7 +5783,7 @@ dependencies = [ [[package]] name = "mc-util-vec-map" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "heapless", @@ -5777,14 +5791,14 @@ dependencies = [ [[package]] name = "mc-util-zip-exact" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "serde", ] [[package]] name = "mc-wasm-test" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "getrandom 0.2.8", "mc-account-keys", @@ -5799,7 +5813,7 @@ dependencies = [ [[package]] name = "mc-watcher" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "clap 4.0.18", "displaydoc", @@ -5843,7 +5857,7 @@ dependencies = [ [[package]] name = "mc-watcher-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "serde", @@ -6634,9 +6648,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" +checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a" dependencies = [ "bytes 1.1.0", "prost-derive", @@ -6932,9 +6946,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" dependencies = [ "aho-corasick", "memchr", @@ -7088,7 +7102,7 @@ dependencies = [ "serde_json", "state", "tempfile", - "time 0.3.17", + "time 0.3.15", "tokio", "tokio-stream", "tokio-util 0.7.2", @@ -7135,7 +7149,7 @@ dependencies = [ "smallvec", "stable-pattern", "state", - "time 0.3.17", + "time 0.3.15", "tokio", "uncased", ] @@ -7551,7 +7565,7 @@ dependencies = [ "serde", "serde_json", "thiserror", - "time 0.3.17", + "time 0.3.15", "url", "uuid", ] @@ -7640,7 +7654,7 @@ dependencies = [ "serde", "serde_json", "serde_with_macros", - "time 0.3.17", + "time 0.3.15", ] [[package]] @@ -7875,7 +7889,7 @@ dependencies = [ "serde", "serde_json", "slog", - "time 0.3.17", + "time 0.3.15", ] [[package]] @@ -7910,7 +7924,7 @@ dependencies = [ "slog", "term", "thread_local", - "time 0.3.17", + "time 0.3.15", ] [[package]] @@ -8170,32 +8184,22 @@ dependencies = [ [[package]] name = "time" -version = "0.3.17" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c" dependencies = [ "itoa 1.0.1", "libc", "num_threads", "serde", - "time-core", "time-macros", ] -[[package]] -name = "time-core" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" - [[package]] name = "time-macros" -version = "0.2.6" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" -dependencies = [ - "time-core", -] +checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" [[package]] name = "tiny-bip39" diff --git a/consensus/enclave/trusted/Cargo.lock b/consensus/enclave/trusted/Cargo.lock index 23bc77f52f..968e902c2a 100644 --- a/consensus/enclave/trusted/Cargo.lock +++ b/consensus/enclave/trusted/Cargo.lock @@ -67,9 +67,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.26" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" [[package]] name = "arrayref" @@ -686,7 +686,7 @@ dependencies = [ [[package]] name = "mc-account-keys" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -710,14 +710,14 @@ dependencies = [ [[package]] name = "mc-account-keys-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-keys", ] [[package]] name = "mc-attest-ake" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "cargo-emit", @@ -736,7 +736,7 @@ dependencies = [ [[package]] name = "mc-attest-core" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "bitflags", @@ -765,7 +765,7 @@ dependencies = [ [[package]] name = "mc-attest-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-ake", @@ -778,7 +778,7 @@ dependencies = [ [[package]] name = "mc-attest-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "cfg-if 1.0.0", @@ -814,7 +814,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "displaydoc", @@ -828,7 +828,7 @@ dependencies = [ [[package]] name = "mc-blockchain-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "hex_fmt", @@ -851,7 +851,7 @@ dependencies = [ [[package]] name = "mc-common" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "displaydoc", @@ -873,7 +873,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "hex", @@ -895,7 +895,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -903,7 +903,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-impl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "hex", @@ -935,7 +935,7 @@ dependencies = [ [[package]] name = "mc-consensus-enclave-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "lazy_static", @@ -966,7 +966,7 @@ dependencies = [ [[package]] name = "mc-consensus-scp-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-common", "mc-crypto-digestible", @@ -1004,7 +1004,7 @@ dependencies = [ [[package]] name = "mc-crypto-ake-enclave" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes-gcm", "digest", @@ -1024,7 +1024,7 @@ dependencies = [ [[package]] name = "mc-crypto-box" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "digest", @@ -1038,7 +1038,7 @@ dependencies = [ [[package]] name = "mc-crypto-dalek" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", @@ -1063,7 +1063,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "curve25519-dalek", @@ -1077,7 +1077,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -1086,7 +1086,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-signature" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "schnorrkel-og", @@ -1095,7 +1095,7 @@ dependencies = [ [[package]] name = "mc-crypto-hashes" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "blake2", "digest", @@ -1104,7 +1104,7 @@ dependencies = [ [[package]] name = "mc-crypto-keys" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "curve25519-dalek", @@ -1133,7 +1133,7 @@ dependencies = [ [[package]] name = "mc-crypto-message-cipher" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes-gcm", "displaydoc", @@ -1146,7 +1146,7 @@ dependencies = [ [[package]] name = "mc-crypto-multisig" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-keys", @@ -1156,7 +1156,7 @@ dependencies = [ [[package]] name = "mc-crypto-noise" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "aes-gcm", @@ -1176,7 +1176,7 @@ dependencies = [ [[package]] name = "mc-crypto-rand" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "rand", @@ -1185,7 +1185,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1209,7 +1209,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature-signer" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1230,7 +1230,7 @@ dependencies = [ [[package]] name = "mc-enclave-boundary" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-common", "mc-crypto-rand", @@ -1241,7 +1241,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-authority" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-keys", "signature", @@ -1264,11 +1264,11 @@ dependencies = [ [[package]] name = "mc-sgx-alloc" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-build" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cc", "lazy_static", @@ -1278,7 +1278,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-sgx-alloc", @@ -1291,7 +1291,7 @@ dependencies = [ [[package]] name = "mc-sgx-css" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "sha2", @@ -1299,29 +1299,29 @@ dependencies = [ [[package]] name = "mc-sgx-debug" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-enclave-id" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-types", ] [[package]] name = "mc-sgx-panic" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-panic-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-report-cache-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1332,7 +1332,7 @@ dependencies = [ [[package]] name = "mc-sgx-service" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-build", "mc-sgx-types", @@ -1340,7 +1340,7 @@ dependencies = [ [[package]] name = "mc-sgx-slog" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-common", @@ -1350,14 +1350,14 @@ dependencies = [ [[package]] name = "mc-sgx-slog-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-sync" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-panic", "mc-sgx-types", @@ -1365,11 +1365,11 @@ dependencies = [ [[package]] name = "mc-sgx-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-transaction-core" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes", "bulletproofs-og", @@ -1406,7 +1406,7 @@ dependencies = [ [[package]] name = "mc-transaction-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-crypto-digestible", @@ -1417,7 +1417,7 @@ dependencies = [ [[package]] name = "mc-util-build-script" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -1428,7 +1428,7 @@ dependencies = [ [[package]] name = "mc-util-build-sgx" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "cc", @@ -1439,7 +1439,7 @@ dependencies = [ [[package]] name = "mc-util-encodings" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "displaydoc", @@ -1450,14 +1450,14 @@ dependencies = [ [[package]] name = "mc-util-from-random" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "rand_core", ] [[package]] name = "mc-util-repr-bytes" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "generic-array", "hex_fmt", @@ -1467,7 +1467,7 @@ dependencies = [ [[package]] name = "mc-util-serial" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "prost", "serde", @@ -1476,7 +1476,7 @@ dependencies = [ [[package]] name = "mc-util-zip-exact" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "serde", ] diff --git a/fog/ingest/enclave/trusted/Cargo.lock b/fog/ingest/enclave/trusted/Cargo.lock index 86e02e5e21..5cdb2a7242 100644 --- a/fog/ingest/enclave/trusted/Cargo.lock +++ b/fog/ingest/enclave/trusted/Cargo.lock @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.26" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" [[package]] name = "arrayref" @@ -706,7 +706,7 @@ dependencies = [ [[package]] name = "mc-account-keys" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -730,14 +730,14 @@ dependencies = [ [[package]] name = "mc-account-keys-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-keys", ] [[package]] name = "mc-attest-ake" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "cargo-emit", @@ -756,7 +756,7 @@ dependencies = [ [[package]] name = "mc-attest-core" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "bitflags", @@ -785,7 +785,7 @@ dependencies = [ [[package]] name = "mc-attest-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-ake", @@ -798,7 +798,7 @@ dependencies = [ [[package]] name = "mc-attest-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -809,7 +809,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "cfg-if 1.0.0", @@ -834,7 +834,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "displaydoc", @@ -848,7 +848,7 @@ dependencies = [ [[package]] name = "mc-blockchain-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "hex_fmt", @@ -871,7 +871,7 @@ dependencies = [ [[package]] name = "mc-common" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "displaydoc", @@ -893,7 +893,7 @@ dependencies = [ [[package]] name = "mc-consensus-scp-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-common", "mc-crypto-digestible", @@ -931,7 +931,7 @@ dependencies = [ [[package]] name = "mc-crypto-ake-enclave" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes-gcm", "digest", @@ -951,7 +951,7 @@ dependencies = [ [[package]] name = "mc-crypto-box" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "digest", @@ -965,7 +965,7 @@ dependencies = [ [[package]] name = "mc-crypto-dalek" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", @@ -990,7 +990,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "curve25519-dalek", @@ -1004,7 +1004,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -1013,7 +1013,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-signature" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "schnorrkel-og", @@ -1022,7 +1022,7 @@ dependencies = [ [[package]] name = "mc-crypto-hashes" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "blake2", "digest", @@ -1031,7 +1031,7 @@ dependencies = [ [[package]] name = "mc-crypto-keys" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "curve25519-dalek", @@ -1060,7 +1060,7 @@ dependencies = [ [[package]] name = "mc-crypto-multisig" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-keys", @@ -1070,7 +1070,7 @@ dependencies = [ [[package]] name = "mc-crypto-noise" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "aes-gcm", @@ -1090,7 +1090,7 @@ dependencies = [ [[package]] name = "mc-crypto-rand" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "rand", @@ -1099,7 +1099,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1123,7 +1123,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature-signer" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1144,7 +1144,7 @@ dependencies = [ [[package]] name = "mc-enclave-boundary" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-common", "mc-crypto-rand", @@ -1155,7 +1155,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1172,7 +1172,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -1180,7 +1180,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-impl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aligned-cmov", "mc-attest-core", @@ -1209,7 +1209,7 @@ dependencies = [ [[package]] name = "mc-fog-ingest-enclave-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "lazy_static", @@ -1240,7 +1240,7 @@ dependencies = [ [[package]] name = "mc-fog-kex-rng" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "digest", "displaydoc", @@ -1255,14 +1255,14 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-fog-ocall-oram-storage-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes", "aligned-cmov", @@ -1278,7 +1278,7 @@ dependencies = [ [[package]] name = "mc-fog-recovery-db-iface" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "chrono", "displaydoc", @@ -1294,7 +1294,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-authority" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-keys", "signature", @@ -1302,7 +1302,7 @@ dependencies = [ [[package]] name = "mc-fog-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "crc", "displaydoc", @@ -1368,11 +1368,11 @@ dependencies = [ [[package]] name = "mc-sgx-alloc" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-build" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cc", "lazy_static", @@ -1382,7 +1382,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-sgx-alloc", @@ -1395,7 +1395,7 @@ dependencies = [ [[package]] name = "mc-sgx-css" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "sha2", @@ -1403,36 +1403,36 @@ dependencies = [ [[package]] name = "mc-sgx-debug" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-debug-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-enclave-id" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-types", ] [[package]] name = "mc-sgx-panic" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-panic-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-report-cache-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1443,7 +1443,7 @@ dependencies = [ [[package]] name = "mc-sgx-service" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-build", "mc-sgx-types", @@ -1451,7 +1451,7 @@ dependencies = [ [[package]] name = "mc-sgx-slog" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-common", @@ -1461,14 +1461,14 @@ dependencies = [ [[package]] name = "mc-sgx-slog-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-sync" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-panic", "mc-sgx-types", @@ -1476,11 +1476,11 @@ dependencies = [ [[package]] name = "mc-sgx-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-transaction-core" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes", "bulletproofs-og", @@ -1517,7 +1517,7 @@ dependencies = [ [[package]] name = "mc-transaction-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-crypto-digestible", @@ -1528,7 +1528,7 @@ dependencies = [ [[package]] name = "mc-util-build-script" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -1539,7 +1539,7 @@ dependencies = [ [[package]] name = "mc-util-build-sgx" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "cc", @@ -1550,7 +1550,7 @@ dependencies = [ [[package]] name = "mc-util-encodings" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "displaydoc", @@ -1561,14 +1561,14 @@ dependencies = [ [[package]] name = "mc-util-from-random" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "rand_core", ] [[package]] name = "mc-util-repr-bytes" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "generic-array", "hex_fmt", @@ -1578,7 +1578,7 @@ dependencies = [ [[package]] name = "mc-util-serial" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "prost", "serde", @@ -1587,14 +1587,14 @@ dependencies = [ [[package]] name = "mc-util-zip-exact" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "serde", ] [[package]] name = "mc-watcher-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "serde", diff --git a/fog/ledger/enclave/trusted/Cargo.lock b/fog/ledger/enclave/trusted/Cargo.lock index 786c0c0fd0..abb6064892 100644 --- a/fog/ledger/enclave/trusted/Cargo.lock +++ b/fog/ledger/enclave/trusted/Cargo.lock @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.26" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" [[package]] name = "arrayref" @@ -710,7 +710,7 @@ dependencies = [ [[package]] name = "mc-account-keys" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -734,14 +734,14 @@ dependencies = [ [[package]] name = "mc-account-keys-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-keys", ] [[package]] name = "mc-attest-ake" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "cargo-emit", @@ -760,7 +760,7 @@ dependencies = [ [[package]] name = "mc-attest-core" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "bitflags", @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "mc-attest-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-ake", @@ -802,7 +802,7 @@ dependencies = [ [[package]] name = "mc-attest-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -813,7 +813,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "cfg-if", @@ -838,7 +838,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "displaydoc", @@ -852,7 +852,7 @@ dependencies = [ [[package]] name = "mc-common" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if", "displaydoc", @@ -900,7 +900,7 @@ dependencies = [ [[package]] name = "mc-crypto-ake-enclave" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes-gcm", "digest", @@ -920,7 +920,7 @@ dependencies = [ [[package]] name = "mc-crypto-box" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "digest", @@ -934,7 +934,7 @@ dependencies = [ [[package]] name = "mc-crypto-dalek" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", @@ -959,7 +959,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if", "curve25519-dalek", @@ -973,7 +973,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -982,7 +982,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-signature" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "schnorrkel-og", @@ -991,7 +991,7 @@ dependencies = [ [[package]] name = "mc-crypto-hashes" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "blake2", "digest", @@ -1000,7 +1000,7 @@ dependencies = [ [[package]] name = "mc-crypto-keys" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "curve25519-dalek", @@ -1029,7 +1029,7 @@ dependencies = [ [[package]] name = "mc-crypto-multisig" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-keys", @@ -1039,7 +1039,7 @@ dependencies = [ [[package]] name = "mc-crypto-noise" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "aes-gcm", @@ -1059,7 +1059,7 @@ dependencies = [ [[package]] name = "mc-crypto-rand" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if", "rand", @@ -1068,7 +1068,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1092,7 +1092,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature-signer" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1113,7 +1113,7 @@ dependencies = [ [[package]] name = "mc-enclave-boundary" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-common", "mc-crypto-rand", @@ -1124,7 +1124,7 @@ dependencies = [ [[package]] name = "mc-fog-kex-rng" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "digest", "displaydoc", @@ -1139,7 +1139,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1157,7 +1157,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -1165,7 +1165,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-impl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aligned-cmov", "mc-attest-core", @@ -1188,7 +1188,7 @@ dependencies = [ [[package]] name = "mc-fog-ledger-enclave-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "lazy_static", @@ -1219,14 +1219,14 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-fog-ocall-oram-storage-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes", "aligned-cmov", @@ -1242,7 +1242,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-authority" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-keys", "signature", @@ -1250,7 +1250,7 @@ dependencies = [ [[package]] name = "mc-fog-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "crc", "displaydoc", @@ -1316,11 +1316,11 @@ dependencies = [ [[package]] name = "mc-sgx-alloc" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-build" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cc", "lazy_static", @@ -1330,7 +1330,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if", "mc-sgx-alloc", @@ -1343,7 +1343,7 @@ dependencies = [ [[package]] name = "mc-sgx-css" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "sha2", @@ -1351,36 +1351,36 @@ dependencies = [ [[package]] name = "mc-sgx-debug" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-debug-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-enclave-id" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-types", ] [[package]] name = "mc-sgx-panic" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-panic-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-report-cache-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1391,7 +1391,7 @@ dependencies = [ [[package]] name = "mc-sgx-service" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-build", "mc-sgx-types", @@ -1399,7 +1399,7 @@ dependencies = [ [[package]] name = "mc-sgx-slog" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if", "mc-common", @@ -1409,14 +1409,14 @@ dependencies = [ [[package]] name = "mc-sgx-slog-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-sync" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-panic", "mc-sgx-types", @@ -1424,11 +1424,11 @@ dependencies = [ [[package]] name = "mc-sgx-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-transaction-core" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes", "bulletproofs-og", @@ -1465,7 +1465,7 @@ dependencies = [ [[package]] name = "mc-transaction-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-crypto-digestible", @@ -1476,7 +1476,7 @@ dependencies = [ [[package]] name = "mc-util-build-script" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -1487,7 +1487,7 @@ dependencies = [ [[package]] name = "mc-util-build-sgx" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "cc", @@ -1498,7 +1498,7 @@ dependencies = [ [[package]] name = "mc-util-encodings" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "displaydoc", @@ -1509,14 +1509,14 @@ dependencies = [ [[package]] name = "mc-util-from-random" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "rand_core", ] [[package]] name = "mc-util-repr-bytes" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "generic-array", "hex_fmt", @@ -1526,7 +1526,7 @@ dependencies = [ [[package]] name = "mc-util-serial" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "prost", "serde", @@ -1535,14 +1535,14 @@ dependencies = [ [[package]] name = "mc-util-zip-exact" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "serde", ] [[package]] name = "mc-watcher-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "serde", diff --git a/fog/view/enclave/trusted/Cargo.lock b/fog/view/enclave/trusted/Cargo.lock index 6806dc0173..4a5be6ea7f 100644 --- a/fog/view/enclave/trusted/Cargo.lock +++ b/fog/view/enclave/trusted/Cargo.lock @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.26" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" [[package]] name = "arrayref" @@ -716,7 +716,7 @@ dependencies = [ [[package]] name = "mc-account-keys" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -740,14 +740,14 @@ dependencies = [ [[package]] name = "mc-account-keys-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-keys", ] [[package]] name = "mc-attest-ake" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "cargo-emit", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "mc-attest-core" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "bitflags", @@ -795,7 +795,7 @@ dependencies = [ [[package]] name = "mc-attest-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-ake", @@ -808,7 +808,7 @@ dependencies = [ [[package]] name = "mc-attest-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -819,7 +819,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "cfg-if 1.0.0", @@ -844,7 +844,7 @@ dependencies = [ [[package]] name = "mc-attest-verifier-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "displaydoc", @@ -858,7 +858,7 @@ dependencies = [ [[package]] name = "mc-blockchain-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "hex_fmt", @@ -881,7 +881,7 @@ dependencies = [ [[package]] name = "mc-common" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "displaydoc", @@ -903,7 +903,7 @@ dependencies = [ [[package]] name = "mc-consensus-scp-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-common", "mc-crypto-digestible", @@ -941,7 +941,7 @@ dependencies = [ [[package]] name = "mc-crypto-ake-enclave" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes-gcm", "digest", @@ -961,7 +961,7 @@ dependencies = [ [[package]] name = "mc-crypto-box" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "digest", @@ -975,7 +975,7 @@ dependencies = [ [[package]] name = "mc-crypto-dalek" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "ed25519-dalek", @@ -1000,7 +1000,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "curve25519-dalek", @@ -1014,7 +1014,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-derive" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "proc-macro2", "quote", @@ -1023,7 +1023,7 @@ dependencies = [ [[package]] name = "mc-crypto-digestible-signature" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "schnorrkel-og", @@ -1032,7 +1032,7 @@ dependencies = [ [[package]] name = "mc-crypto-hashes" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "blake2", "digest", @@ -1041,7 +1041,7 @@ dependencies = [ [[package]] name = "mc-crypto-keys" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "curve25519-dalek", @@ -1070,7 +1070,7 @@ dependencies = [ [[package]] name = "mc-crypto-multisig" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-digestible", "mc-crypto-keys", @@ -1080,7 +1080,7 @@ dependencies = [ [[package]] name = "mc-crypto-noise" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aead", "aes-gcm", @@ -1100,7 +1100,7 @@ dependencies = [ [[package]] name = "mc-crypto-rand" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "rand", @@ -1109,7 +1109,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1133,7 +1133,7 @@ dependencies = [ [[package]] name = "mc-crypto-ring-signature-signer" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "curve25519-dalek", "displaydoc", @@ -1154,7 +1154,7 @@ dependencies = [ [[package]] name = "mc-enclave-boundary" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-common", "mc-crypto-rand", @@ -1165,7 +1165,7 @@ dependencies = [ [[package]] name = "mc-fog-kex-rng" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "digest", "displaydoc", @@ -1180,14 +1180,14 @@ dependencies = [ [[package]] name = "mc-fog-ocall-oram-storage-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-fog-ocall-oram-storage-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes", "aligned-cmov", @@ -1203,7 +1203,7 @@ dependencies = [ [[package]] name = "mc-fog-recovery-db-iface" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "chrono", "displaydoc", @@ -1219,7 +1219,7 @@ dependencies = [ [[package]] name = "mc-fog-sig-authority" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-crypto-keys", "signature", @@ -1227,7 +1227,7 @@ dependencies = [ [[package]] name = "mc-fog-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "crc", "displaydoc", @@ -1241,7 +1241,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1259,7 +1259,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-util-build-script", @@ -1267,7 +1267,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-impl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aligned-cmov", "mc-attest-core", @@ -1289,7 +1289,7 @@ dependencies = [ [[package]] name = "mc-fog-view-enclave-trusted" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "lazy_static", @@ -1378,11 +1378,11 @@ dependencies = [ [[package]] name = "mc-sgx-alloc" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-build" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cc", "lazy_static", @@ -1392,7 +1392,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-sgx-alloc", @@ -1405,7 +1405,7 @@ dependencies = [ [[package]] name = "mc-sgx-compat-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "mc-sgx-debug-edl", @@ -1414,7 +1414,7 @@ dependencies = [ [[package]] name = "mc-sgx-css" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "sha2", @@ -1422,36 +1422,36 @@ dependencies = [ [[package]] name = "mc-sgx-debug" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-debug-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-enclave-id" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-types", ] [[package]] name = "mc-sgx-panic" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-sgx-panic-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-report-cache-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-attest-core", @@ -1462,7 +1462,7 @@ dependencies = [ [[package]] name = "mc-sgx-service" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-build", "mc-sgx-types", @@ -1470,7 +1470,7 @@ dependencies = [ [[package]] name = "mc-sgx-slog" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cfg-if 1.0.0", "mc-common", @@ -1480,14 +1480,14 @@ dependencies = [ [[package]] name = "mc-sgx-slog-edl" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", ] [[package]] name = "mc-sgx-sync" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "mc-sgx-panic", "mc-sgx-types", @@ -1495,11 +1495,11 @@ dependencies = [ [[package]] name = "mc-sgx-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" [[package]] name = "mc-transaction-core" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "aes", "bulletproofs-og", @@ -1536,7 +1536,7 @@ dependencies = [ [[package]] name = "mc-transaction-types" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "mc-crypto-digestible", @@ -1547,7 +1547,7 @@ dependencies = [ [[package]] name = "mc-util-build-script" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "displaydoc", @@ -1558,7 +1558,7 @@ dependencies = [ [[package]] name = "mc-util-build-sgx" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "cargo-emit", "cc", @@ -1569,7 +1569,7 @@ dependencies = [ [[package]] name = "mc-util-encodings" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "base64", "displaydoc", @@ -1580,14 +1580,14 @@ dependencies = [ [[package]] name = "mc-util-from-random" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "rand_core", ] [[package]] name = "mc-util-repr-bytes" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "generic-array", "hex_fmt", @@ -1597,7 +1597,7 @@ dependencies = [ [[package]] name = "mc-util-serial" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "prost", "serde", @@ -1606,14 +1606,14 @@ dependencies = [ [[package]] name = "mc-util-zip-exact" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "serde", ] [[package]] name = "mc-watcher-api" -version = "2.1.0-pre0" +version = "4.0.0-pre0" dependencies = [ "displaydoc", "serde", From 5d2433a7b023726deffb6756149e2ae25ef07016 Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Tue, 6 Dec 2022 16:58:06 -0700 Subject: [PATCH 07/13] rebuild enclave cargo locks as well from master --- consensus/enclave/trusted/Cargo.lock | 36 +++++++++++++-------------- fog/ingest/enclave/trusted/Cargo.lock | 20 +++++++-------- fog/ledger/enclave/trusted/Cargo.lock | 24 +++++++++--------- fog/view/enclave/trusted/Cargo.lock | 32 ++++++++++++------------ 4 files changed, 56 insertions(+), 56 deletions(-) diff --git a/consensus/enclave/trusted/Cargo.lock b/consensus/enclave/trusted/Cargo.lock index 968e902c2a..d037fe0382 100644 --- a/consensus/enclave/trusted/Cargo.lock +++ b/consensus/enclave/trusted/Cargo.lock @@ -49,9 +49,9 @@ dependencies = [ [[package]] name = "android_system_properties" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ "libc", ] @@ -102,9 +102,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "bindgen" @@ -202,9 +202,9 @@ checksum = "1582e1c9e755dd6ad6b224dcffb135d199399a4568d454bd89fe515ca8425695" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" [[package]] name = "cexpr" @@ -540,9 +540,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iana-time-zone" -version = "0.1.46" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad2bfd338099682614d3ee3fe0cd72e0b6a41ca6a87f6a74a3bd593c91650501" +checksum = "fd911b35d940d2bd0bea0f9100068e5b97b51a1cbe13d13382f132e0365257a0" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1584,9 +1584,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "polyval" @@ -1617,9 +1617,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" +checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a" dependencies = [ "bytes", "prost-derive", @@ -1759,9 +1759,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.145" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" +checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" dependencies = [ "serde_derive", ] @@ -1786,9 +1786,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.145" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" +checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" dependencies = [ "proc-macro2", "quote", @@ -1808,9 +1808,9 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2904bea16a1ae962b483322a1c7b81d976029203aea1f461e51cd7705db7ba9" +checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" dependencies = [ "digest", "keccak", diff --git a/fog/ingest/enclave/trusted/Cargo.lock b/fog/ingest/enclave/trusted/Cargo.lock index 5cdb2a7242..26b0a87d34 100644 --- a/fog/ingest/enclave/trusted/Cargo.lock +++ b/fog/ingest/enclave/trusted/Cargo.lock @@ -131,9 +131,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "bindgen" @@ -231,9 +231,9 @@ checksum = "1582e1c9e755dd6ad6b224dcffb135d199399a4568d454bd89fe515ca8425695" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" [[package]] name = "cexpr" @@ -1694,9 +1694,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "polyval" @@ -1870,9 +1870,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.145" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" +checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" dependencies = [ "serde_derive", ] @@ -1897,9 +1897,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.145" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" +checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" dependencies = [ "proc-macro2", "quote", diff --git a/fog/ledger/enclave/trusted/Cargo.lock b/fog/ledger/enclave/trusted/Cargo.lock index abb6064892..a26054eca4 100644 --- a/fog/ledger/enclave/trusted/Cargo.lock +++ b/fog/ledger/enclave/trusted/Cargo.lock @@ -132,9 +132,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "bindgen" @@ -232,9 +232,9 @@ checksum = "1582e1c9e755dd6ad6b224dcffb135d199399a4568d454bd89fe515ca8425695" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" [[package]] name = "cexpr" @@ -1642,9 +1642,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "polyval" @@ -1675,9 +1675,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" +checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a" dependencies = [ "bytes", "prost-derive", @@ -1817,9 +1817,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.145" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" +checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" dependencies = [ "serde_derive", ] @@ -1844,9 +1844,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.145" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" +checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" dependencies = [ "proc-macro2", "quote", diff --git a/fog/view/enclave/trusted/Cargo.lock b/fog/view/enclave/trusted/Cargo.lock index 4a5be6ea7f..61021d5116 100644 --- a/fog/view/enclave/trusted/Cargo.lock +++ b/fog/view/enclave/trusted/Cargo.lock @@ -69,9 +69,9 @@ dependencies = [ [[package]] name = "android_system_properties" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ "libc", ] @@ -132,9 +132,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "bindgen" @@ -232,9 +232,9 @@ checksum = "1582e1c9e755dd6ad6b224dcffb135d199399a4568d454bd89fe515ca8425695" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" [[package]] name = "cexpr" @@ -570,9 +570,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iana-time-zone" -version = "0.1.46" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad2bfd338099682614d3ee3fe0cd72e0b6a41ca6a87f6a74a3bd593c91650501" +checksum = "fd911b35d940d2bd0bea0f9100068e5b97b51a1cbe13d13382f132e0365257a0" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1713,9 +1713,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "polyval" @@ -1746,9 +1746,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" +checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a" dependencies = [ "bytes", "prost-derive", @@ -1889,9 +1889,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.145" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" +checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" dependencies = [ "serde_derive", ] @@ -1916,9 +1916,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.145" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" +checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" dependencies = [ "proc-macro2", "quote", From 29bc311718d71ea9f4e76c5e25af98cb38e1ea61 Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Tue, 6 Dec 2022 17:12:20 -0700 Subject: [PATCH 08/13] fix eran comments, random code cleanup --- api/proto/external.proto | 4 +--- .../src/tx_summary_unblinding/verifier.rs | 20 ++++++++----------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/api/proto/external.proto b/api/proto/external.proto index 4ea30caa3c..c45b47bee8 100644 --- a/api/proto/external.proto +++ b/api/proto/external.proto @@ -613,13 +613,11 @@ message UnsignedTx { /// A "ring" of transaction outputs. repeated InputRing rings = 2; - /// The amount and blinding factors of each of the outputs we are creating. - repeated OutputSecret output_secrets = 3 [deprecated = true]; - /// The block version that this transaction is valid for. uint32 block_version = 4; /// The unblinding data for each of the outputs we are creating. + /// This also contains the output secrets needed for building the signature. repeated TxOutSummaryUnblindingData tx_out_unblinding_data = 5; } diff --git a/transaction/extra/src/tx_summary_unblinding/verifier.rs b/transaction/extra/src/tx_summary_unblinding/verifier.rs index b49cf817da..dc12b4b3c9 100644 --- a/transaction/extra/src/tx_summary_unblinding/verifier.rs +++ b/transaction/extra/src/tx_summary_unblinding/verifier.rs @@ -234,9 +234,8 @@ impl TxSummaryStreamingVerifier { { return Err(Error::AmountVerificationFailed); } - let amount = Amount::new(value, token_id.into()); self.report - .balance_add(TransactionEntity::Swap, amount.token_id, amount.value)?; + .balance_add(TransactionEntity::Swap, token_id.into(), value)?; } // We've now verified the tx_out_summary and added it to the report. @@ -279,19 +278,16 @@ impl TxSummaryStreamingVerifier { if expected_commitment != tx_in_summary.pseudo_output_commitment { return Err(Error::AmountVerificationFailed); } - let amount = Amount::new(value, token_id.into()); // Now understand whose input this is. There are two cases - if !tx_in_summary.input_rules_digest.is_empty() { - self.report - .balance_subtract(TransactionEntity::Swap, amount.token_id, amount.value)?; + let entity = if tx_in_summary.input_rules_digest.is_empty() { + TransactionEntity::Ourself } else { - self.report.balance_subtract( - TransactionEntity::Ourself, - amount.token_id, - amount.value, - )?; - } + TransactionEntity::Swap + }; + + self.report + .balance_subtract(entity, token_id.into(), value)?; // We've now verified the tx_in_summary and added it to the report. // Now we need to add it to the digest From 9455b2e0697051d121e4d8feea000cdc9657aca8 Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Mon, 5 Dec 2022 14:39:04 -0700 Subject: [PATCH 09/13] Make the `Tx` object zeroize itself on drop This is an experimental change to improve hygeine of memory in the consensus enclave (but also in the clients) This makes a bunch of objects derive `Zeroize` in transaction-core, and makes the `Tx` object zeroize itself on drop. For examples of why this is a good change, consider that, in the `mc-connection` ThickClient crate, after we serialize a Tx to protobuf and encrypt it for the enclave, we zeroize the plaintext. However, before this change, we do not zeroize the `Tx` object (since it would not have been possible), so another copy of the data that we zeroized continues to exist in memory. After this change, the `Tx` will zeroize itself automatically as well. The main reason not to do this would be if it hurts the performance of the consensus nodes, but I consider this unlikely, because, the untrusted side never actually sees `Tx` objects so SCP should not be meaningfully impacted by this, only the transaction validation handles the decrypted `Tx`. And the elliptic curve operations done to validate a Tx should be many orders of magnitude more expensive than a zeroizing operation. So I expect no measurable performance difference as a result of this change. See github issue #2717 --- crypto/ring-signature/src/ring_signature/key_image.rs | 2 +- crypto/ring-signature/src/ring_signature/mlsag.rs | 2 +- ledger/db/src/test_utils/mod.rs | 2 +- transaction/core/src/ring_ct/rct_bulletproofs.rs | 4 ++-- transaction/core/src/tx.rs | 7 ++++--- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/crypto/ring-signature/src/ring_signature/key_image.rs b/crypto/ring-signature/src/ring_signature/key_image.rs index e065b920dd..642c7fb507 100644 --- a/crypto/ring-signature/src/ring_signature/key_image.rs +++ b/crypto/ring-signature/src/ring_signature/key_image.rs @@ -8,13 +8,13 @@ use mc_util_repr_bytes::{ derive_core_cmp_from_as_ref, derive_debug_and_display_hex_from_as_ref, derive_repr_bytes_from_as_ref_and_try_from, typenum::U32, LengthMismatch, }; +use zeroize::Zeroize; #[cfg(feature = "prost")] use mc_util_repr_bytes::derive_prost_message_from_repr_bytes; #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; -use zeroize::Zeroize; #[derive(Clone, Copy, Default, Digestible, Zeroize)] #[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] diff --git a/crypto/ring-signature/src/ring_signature/mlsag.rs b/crypto/ring-signature/src/ring_signature/mlsag.rs index 40e88bd7e7..db34fdb3f8 100644 --- a/crypto/ring-signature/src/ring_signature/mlsag.rs +++ b/crypto/ring-signature/src/ring_signature/mlsag.rs @@ -34,7 +34,7 @@ pub struct ReducedTxOut { /// MLSAG for a ring of public keys and amount commitments. /// Note: Serialize and Deserialize appear to be cruft left over from /// sdk_json_interface. -#[derive(Clone, Digestible, PartialEq, Eq, Serialize, Deserialize, Message, Zeroize)] +#[derive(Clone, Deserialize, Digestible, Eq, Message, PartialEq, Serialize, Zeroize)] pub struct RingMLSAG { /// The initial challenge `c[0]`. #[prost(message, required, tag = "1")] diff --git a/ledger/db/src/test_utils/mod.rs b/ledger/db/src/test_utils/mod.rs index a9dff53022..c3a164b512 100644 --- a/ledger/db/src/test_utils/mod.rs +++ b/ledger/db/src/test_utils/mod.rs @@ -310,7 +310,7 @@ pub fn initialize_ledger( ); let key_images = tx.key_images(); - (tx.prefix.outputs, key_images) + (tx.prefix.outputs.clone(), key_images) } None => { // Create an origin block. diff --git a/transaction/core/src/ring_ct/rct_bulletproofs.rs b/transaction/core/src/ring_ct/rct_bulletproofs.rs index 7aab39beaa..2cc917d65a 100644 --- a/transaction/core/src/ring_ct/rct_bulletproofs.rs +++ b/transaction/core/src/ring_ct/rct_bulletproofs.rs @@ -102,7 +102,7 @@ pub struct SignedInputRing { /// having the view private key for a set of input TxOuts, and it can then be /// moved to a separate machine/service that then takes it + the spend private /// key and uses that to generate a fully signed transaction. -#[derive(Clone, Debug, Deserialize, Digestible, Eq, PartialEq, Serialize)] +#[derive(Clone, Debug, Deserialize, Digestible, Eq, PartialEq, Serialize, Zeroize)] pub struct SigningData { /// The bytes actually signed by MLSAG signatures. /// This is different depending on what block version we are in. @@ -507,7 +507,7 @@ impl SigningData { } /// An RCT_TYPE_BULLETPROOFS_2 signature -#[derive(Clone, Deserialize, Digestible, Eq, Message, PartialEq, Serialize)] +#[derive(Clone, Deserialize, Digestible, Eq, Message, PartialEq, Serialize, Zeroize)] pub struct SignatureRctBulletproofs { /// Signature for each input ring. #[prost(message, repeated, tag = "1")] diff --git a/transaction/core/src/tx.rs b/transaction/core/src/tx.rs index 828b363bc7..0905a2e97c 100644 --- a/transaction/core/src/tx.rs +++ b/transaction/core/src/tx.rs @@ -103,7 +103,8 @@ impl fmt::Debug for TxHash { } /// A CryptoNote-style transaction. -#[derive(Clone, Eq, PartialEq, Serialize, Deserialize, Message, Digestible)] +#[derive(Clone, Eq, PartialEq, Serialize, Deserialize, Message, Digestible, Zeroize)] +#[zeroize(drop)] pub struct Tx { /// The transaction contents. #[prost(message, required, tag = "1")] @@ -160,7 +161,7 @@ impl Tx { /// /// Note: If you add something here, consider if it should be added to the /// TxSummary also for hardware wallet visibility. -#[derive(Clone, Deserialize, Eq, PartialEq, Serialize, Message, Digestible)] +#[derive(Clone, Deserialize, Digestible, Eq, Message, PartialEq, Serialize, Zeroize)] pub struct TxPrefix { /// List of inputs to the transaction. #[prost(message, repeated, tag = "1")] @@ -244,7 +245,7 @@ impl TxPrefix { } /// An "input" to a transaction. -#[derive(Clone, Deserialize, Digestible, Eq, PartialEq, Message, Serialize, Zeroize)] +#[derive(Clone, Deserialize, Digestible, Eq, Message, PartialEq, Serialize, Zeroize)] pub struct TxIn { /// A "ring" of outputs containing the single output that is being spent. /// It would be nice to use [TxOut; RING_SIZE] here, but Prost only works From 8e115f4a205b933da54d10bb47c1b698d64122dc Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Mon, 5 Dec 2022 16:16:00 -0700 Subject: [PATCH 10/13] fix more test code --- consensus/enclave/mock/src/lib.rs | 2 +- fog/sample-paykit/src/client.rs | 2 +- mobilecoind/src/service.rs | 4 ++-- transaction/builder/src/transaction_builder.rs | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/consensus/enclave/mock/src/lib.rs b/consensus/enclave/mock/src/lib.rs index fc3d53c9d0..3fcaa00306 100644 --- a/consensus/enclave/mock/src/lib.rs +++ b/consensus/enclave/mock/src/lib.rs @@ -284,7 +284,7 @@ impl ConsensusEnclave for ConsensusServiceMockEnclave { let mut outputs: Vec = Vec::new(); for (tx, _proofs) in transactions_with_proofs { key_images.extend(tx.key_images().into_iter()); - outputs.extend(tx.prefix.outputs.into_iter()); + outputs.extend(tx.prefix.outputs.iter().cloned()); } let minted_tx_outs = get_outputs( diff --git a/fog/sample-paykit/src/client.rs b/fog/sample-paykit/src/client.rs index b261246362..8048eecb7b 100644 --- a/fog/sample-paykit/src/client.rs +++ b/fog/sample-paykit/src/client.rs @@ -1304,7 +1304,7 @@ mod test_build_transaction_helper { // Each TxIn should contain a ring of `ring_size` elements. If `ring_size` is // zero, the ring will have size 1 after the input is included. - for tx_in in tx.prefix.inputs { + for tx_in in tx.prefix.inputs.iter() { assert_eq!(tx_in.ring.len(), ring_size); } diff --git a/mobilecoind/src/service.rs b/mobilecoind/src/service.rs index c045db54dc..a5e46c506f 100644 --- a/mobilecoind/src/service.rs +++ b/mobilecoind/src/service.rs @@ -4137,7 +4137,7 @@ mod test { { let tx_proposal = TxProposal::try_from(response.get_tx_proposal()).unwrap(); let key_images = tx_proposal.tx.key_images(); - let outputs = tx_proposal.tx.prefix.outputs; + let outputs = tx_proposal.tx.prefix.outputs.clone(); add_txos_and_key_images_to_ledger( &mut ledger_db, BLOCK_VERSION, @@ -5286,7 +5286,7 @@ mod test { let submitted_tx = opt_submitted_tx.unwrap(); let mut change_subaddress_found = false; - for tx_out in submitted_tx.prefix.outputs { + for tx_out in submitted_tx.prefix.outputs.iter() { let tx_out_target_key = RistrettoPublic::try_from(&tx_out.target_key).unwrap(); let tx_public_key = RistrettoPublic::try_from(&tx_out.public_key).unwrap(); diff --git a/transaction/builder/src/transaction_builder.rs b/transaction/builder/src/transaction_builder.rs index f8d881cf4f..044e504c92 100644 --- a/transaction/builder/src/transaction_builder.rs +++ b/transaction/builder/src/transaction_builder.rs @@ -2930,7 +2930,7 @@ pub mod transaction_builder_tests { ) .unwrap(); - let outputs = tx.prefix.outputs; + let outputs = tx.prefix.outputs.clone(); let mut expected_outputs = outputs.clone(); expected_outputs.sort_by(|a, b| a.public_key.cmp(&b.public_key)); assert_eq!(outputs, expected_outputs); @@ -2961,7 +2961,7 @@ pub mod transaction_builder_tests { ) .unwrap(); - let inputs = tx.prefix.inputs; + let inputs = tx.prefix.inputs.clone(); let mut expected_inputs = inputs.clone(); expected_inputs.sort_by(|a, b| a.ring[0].public_key.cmp(&b.ring[0].public_key)); assert_eq!(inputs, expected_inputs); From 09d1a6f6156ff80df7213a17661514e248c3dcbf Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Mon, 5 Dec 2022 16:44:20 -0700 Subject: [PATCH 11/13] address nick remark --- transaction/core/src/tx.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/transaction/core/src/tx.rs b/transaction/core/src/tx.rs index 0905a2e97c..8d6187ae7e 100644 --- a/transaction/core/src/tx.rs +++ b/transaction/core/src/tx.rs @@ -15,7 +15,7 @@ use mc_util_repr_bytes::{ }; use prost::Message; use serde::{Deserialize, Serialize}; -use zeroize::Zeroize; +use zeroize::{Zeroize, ZeroizeOnDrop}; use crate::{ amount::MaskedAmount, @@ -103,8 +103,9 @@ impl fmt::Debug for TxHash { } /// A CryptoNote-style transaction. -#[derive(Clone, Eq, PartialEq, Serialize, Deserialize, Message, Digestible, Zeroize)] -#[zeroize(drop)] +#[derive( + Clone, Eq, PartialEq, Serialize, Deserialize, Message, Digestible, Zeroize, ZeroizeOnDrop, +)] pub struct Tx { /// The transaction contents. #[prost(message, required, tag = "1")] From 99d6dc7deb8fda1b9315e2f0cb9934f4c9b4525d Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Wed, 7 Dec 2022 13:35:13 -0700 Subject: [PATCH 12/13] Add a benchmark for zeroizing a max-size Tx --- transaction/extra/tests/verifier.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/transaction/extra/tests/verifier.rs b/transaction/extra/tests/verifier.rs index faf78f18d2..6a9b503d30 100644 --- a/transaction/extra/tests/verifier.rs +++ b/transaction/extra/tests/verifier.rs @@ -2,6 +2,9 @@ //! Tests of the streaming verifier +#![feature(test)] +extern crate test; + use mc_account_keys::{AccountKey, ShortAddressHash}; use mc_crypto_keys::{RistrettoPrivate, RistrettoPublic}; use mc_crypto_ring_signature_signer::NoKeysRingSigner; @@ -18,6 +21,7 @@ use mc_util_serial::encode; use rand::{rngs::StdRng, SeedableRng}; use rand_core::CryptoRngCore; use std::collections::BTreeMap; +use test::Bencher; // Get an unsigned Tx and the sender account keys with the maximum allowed size // right now @@ -143,6 +147,25 @@ fn test_max_size_tx_payload_sizes() { assert_eq!(tx_in_summary_unblinding_wire.len(), 45); } +#[bench] +fn bench_max_size_zeroize(b: &mut Bencher) { + let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]); + + let (unsigned_tx, _sender, _recipient) = get_current_max_size_transaction(&mut rng); + let (signing_data, _tx_summary, _tx_summary_unblinding_data, _extended_message_digest) = + unsigned_tx.get_signing_data(&mut rng).unwrap(); + let signature_rct = signing_data + .sign(&unsigned_tx.rings, &NoKeysRingSigner {}, &mut rng) + .unwrap(); + let tx = Tx { + prefix: unsigned_tx.tx_prefix.clone(), + signature: signature_rct, + fee_map_digest: Default::default(), + }; + + b.iter(|| tx.clone()); +} + #[test] fn test_min_size_tx_payload_sizes() { let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]); From df98ae7506d7b774f805b14a717bec420e0e0fef Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Wed, 7 Dec 2022 14:33:26 -0700 Subject: [PATCH 13/13] add a bench of just the clone operation --- transaction/extra/tests/verifier.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/transaction/extra/tests/verifier.rs b/transaction/extra/tests/verifier.rs index 6a9b503d30..d9e434a9c9 100644 --- a/transaction/extra/tests/verifier.rs +++ b/transaction/extra/tests/verifier.rs @@ -148,7 +148,7 @@ fn test_max_size_tx_payload_sizes() { } #[bench] -fn bench_max_size_zeroize(b: &mut Bencher) { +fn bench_max_size_clone_and_zeroize(b: &mut Bencher) { let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]); let (unsigned_tx, _sender, _recipient) = get_current_max_size_transaction(&mut rng); @@ -166,6 +166,25 @@ fn bench_max_size_zeroize(b: &mut Bencher) { b.iter(|| tx.clone()); } +#[bench] +fn bench_max_size_clone_no_zeroize(b: &mut Bencher) { + let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]); + + let (unsigned_tx, _sender, _recipient) = get_current_max_size_transaction(&mut rng); + let (signing_data, _tx_summary, _tx_summary_unblinding_data, _extended_message_digest) = + unsigned_tx.get_signing_data(&mut rng).unwrap(); + let signature_rct = signing_data + .sign(&unsigned_tx.rings, &NoKeysRingSigner {}, &mut rng) + .unwrap(); + let tx = Tx { + prefix: unsigned_tx.tx_prefix.clone(), + signature: signature_rct, + fee_map_digest: Default::default(), + }; + + b.iter(|| std::mem::forget(tx.clone())); +} + #[test] fn test_min_size_tx_payload_sizes() { let mut rng: StdRng = SeedableRng::from_seed([1u8; 32]);