@aztec/foundation 3.0.0-canary.a9708bd → 3.0.0-devnet.2-patch.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/array/array.d.ts +1 -9
- package/dest/array/array.d.ts.map +1 -1
- package/dest/array/array.js +0 -11
- package/dest/array/index.d.ts +1 -1
- package/dest/async-map/index.d.ts +1 -1
- package/dest/async-pool/index.d.ts +1 -1
- package/dest/bigint/index.d.ts +1 -1
- package/dest/bigint-buffer/index.d.ts +1 -1
- package/dest/branded-types/block_number.d.ts +53 -0
- package/dest/branded-types/block_number.d.ts.map +1 -0
- package/dest/branded-types/block_number.js +75 -0
- package/dest/branded-types/checkpoint_number.d.ts +46 -0
- package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
- package/dest/branded-types/checkpoint_number.js +68 -0
- package/dest/branded-types/epoch.d.ts +42 -0
- package/dest/branded-types/epoch.d.ts.map +1 -0
- package/dest/branded-types/epoch.js +59 -0
- package/dest/branded-types/index.d.ts +6 -0
- package/dest/branded-types/index.d.ts.map +1 -0
- package/dest/branded-types/index.js +4 -0
- package/dest/branded-types/slot.d.ts +42 -0
- package/dest/branded-types/slot.d.ts.map +1 -0
- package/dest/branded-types/slot.js +59 -0
- package/dest/branded-types/types.d.ts +5 -0
- package/dest/branded-types/types.d.ts.map +1 -0
- package/dest/branded-types/types.js +1 -0
- package/dest/buffer/buffer16.d.ts +2 -5
- package/dest/buffer/buffer16.d.ts.map +1 -1
- package/dest/buffer/buffer16.js +1 -1
- package/dest/buffer/buffer32.d.ts +2 -5
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +1 -1
- package/dest/buffer/index.d.ts +1 -1
- package/dest/collection/array.d.ts +3 -1
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +12 -3
- package/dest/collection/index.d.ts +1 -1
- package/dest/collection/object.d.ts +5 -1
- package/dest/collection/object.d.ts.map +1 -1
- package/dest/collection/object.js +6 -0
- package/dest/committable/committable.d.ts +1 -1
- package/dest/committable/committable.d.ts.map +1 -1
- package/dest/committable/index.d.ts +1 -1
- package/dest/config/env_var.d.ts +2 -2
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/config/index.d.ts +12 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +18 -3
- package/dest/config/network_config.d.ts +42 -0
- package/dest/config/network_config.d.ts.map +1 -0
- package/dest/config/network_config.js +9 -0
- package/dest/config/network_name.d.ts +2 -2
- package/dest/config/network_name.d.ts.map +1 -1
- package/dest/config/network_name.js +10 -2
- package/dest/config/secret_value.d.ts +1 -1
- package/dest/config/secret_value.d.ts.map +1 -1
- package/dest/crypto/aes128/index.d.ts +1 -1
- package/dest/crypto/aes128/index.d.ts.map +1 -1
- package/dest/crypto/aes128/index.js +19 -6
- package/dest/crypto/bls/bn254_keystore.d.ts +296 -0
- package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -0
- package/dest/crypto/bls/bn254_keystore.js +218 -0
- package/dest/crypto/bls/index.d.ts +13 -0
- package/dest/crypto/bls/index.d.ts.map +1 -0
- package/dest/crypto/bls/index.js +87 -0
- package/dest/crypto/bn254/index.d.ts +39 -0
- package/dest/crypto/bn254/index.d.ts.map +1 -0
- package/dest/crypto/bn254/index.js +56 -0
- package/dest/crypto/ecdsa/index.d.ts +1 -1
- package/dest/crypto/ecdsa/index.d.ts.map +1 -1
- package/dest/crypto/ecdsa/index.js +58 -48
- package/dest/crypto/ecdsa/signature.d.ts +2 -11
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
- package/dest/crypto/ecdsa/signature.js +2 -2
- package/dest/crypto/grumpkin/index.d.ts +10 -13
- package/dest/crypto/grumpkin/index.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.js +61 -55
- package/dest/crypto/keccak/index.d.ts +1 -1
- package/dest/crypto/keys/index.d.ts +2 -2
- package/dest/crypto/keys/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.js +8 -5
- package/dest/crypto/pedersen/index.d.ts +1 -1
- package/dest/crypto/pedersen/pedersen.noble.d.ts +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -2
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +24 -14
- package/dest/crypto/poseidon/index.d.ts +2 -2
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +33 -18
- package/dest/crypto/random/index.d.ts +1 -1
- package/dest/crypto/random/index.d.ts.map +1 -1
- package/dest/crypto/random/randomness_singleton.d.ts +1 -1
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.d.ts +3 -2
- package/dest/crypto/schnorr/index.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.js +30 -38
- package/dest/crypto/schnorr/signature.d.ts +2 -2
- package/dest/crypto/schnorr/signature.d.ts.map +1 -1
- package/dest/crypto/schnorr/signature.js +2 -2
- package/dest/crypto/secp256k1/index.d.ts +1 -1
- package/dest/crypto/secp256k1/index.d.ts.map +1 -1
- package/dest/crypto/secp256k1/index.js +23 -18
- package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/utils.d.ts +49 -3
- package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/utils.js +87 -5
- package/dest/crypto/serialize.d.ts +1 -1
- package/dest/crypto/sha256/index.d.ts +2 -2
- package/dest/crypto/sha256/index.d.ts.map +1 -1
- package/dest/crypto/sha256/index.js +1 -1
- package/dest/crypto/sha512/index.d.ts +3 -3
- package/dest/crypto/sha512/index.d.ts.map +1 -1
- package/dest/crypto/sha512/index.js +1 -1
- package/dest/crypto/signature/index.d.ts +2 -2
- package/dest/crypto/signature/index.d.ts.map +1 -1
- package/dest/crypto/sync/index.d.ts +1 -1
- package/dest/crypto/sync/index.js +1 -1
- package/dest/crypto/sync/pedersen/index.d.ts +2 -2
- package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
- package/dest/crypto/sync/pedersen/index.js +18 -11
- package/dest/crypto/sync/poseidon/index.d.ts +2 -2
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/sync/poseidon/index.js +28 -13
- package/dest/{fields/bls12_fields.d.ts → curves/bls12/field.d.ts} +3 -3
- package/dest/curves/bls12/field.d.ts.map +1 -0
- package/dest/{fields/bls12_fields.js → curves/bls12/field.js} +6 -6
- package/dest/curves/bls12/index.d.ts +3 -0
- package/dest/curves/bls12/index.d.ts.map +1 -0
- package/dest/curves/bls12/index.js +2 -0
- package/dest/{fields/bls12_point.d.ts → curves/bls12/point.d.ts} +11 -20
- package/dest/curves/bls12/point.d.ts.map +1 -0
- package/dest/{fields/bls12_point.js → curves/bls12/point.js} +14 -14
- package/dest/{fields/fields.d.ts → curves/bn254/field.d.ts} +16 -9
- package/dest/curves/bn254/field.d.ts.map +1 -0
- package/dest/{fields/fields.js → curves/bn254/field.js} +41 -16
- package/dest/curves/bn254/index.d.ts +3 -0
- package/dest/curves/bn254/index.d.ts.map +1 -0
- package/dest/curves/bn254/index.js +2 -0
- package/dest/curves/bn254/point.d.ts +54 -0
- package/dest/curves/bn254/point.d.ts.map +1 -0
- package/dest/curves/bn254/point.js +143 -0
- package/dest/curves/grumpkin/index.d.ts +10 -0
- package/dest/curves/grumpkin/index.d.ts.map +1 -0
- package/dest/curves/grumpkin/index.js +3 -0
- package/dest/{fields → curves/grumpkin}/point.d.ts +13 -13
- package/dest/curves/grumpkin/point.d.ts.map +1 -0
- package/dest/{fields → curves/grumpkin}/point.js +24 -7
- package/dest/decorators/index.d.ts +1 -1
- package/dest/decorators/memoize.d.ts +1 -1
- package/dest/decorators/memoize.d.ts.map +1 -1
- package/dest/error/index.d.ts +4 -4
- package/dest/error/index.d.ts.map +1 -1
- package/dest/eth-address/index.d.ts +14 -4
- package/dest/eth-address/index.d.ts.map +1 -1
- package/dest/eth-address/index.js +23 -1
- package/dest/eth-signature/eth_signature.d.ts +1 -4
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/eth-signature/eth_signature.js +2 -4
- package/dest/eth-signature/index.d.ts +1 -1
- package/dest/fs/index.d.ts +1 -1
- package/dest/fs/run_in_dir.d.ts +1 -1
- package/dest/fs/try_rm_dir.d.ts +1 -1
- package/dest/iterable/all.d.ts +1 -1
- package/dest/iterable/filter.d.ts +1 -1
- package/dest/iterable/index.d.ts +1 -1
- package/dest/iterable/isAsyncIt.d.ts +1 -1
- package/dest/iterable/map.d.ts +1 -1
- package/dest/iterable/peek.d.ts +1 -1
- package/dest/iterable/sort.d.ts +1 -1
- package/dest/iterable/take.d.ts +1 -1
- package/dest/iterable/toArray.d.ts +1 -1
- package/dest/json-rpc/client/fetch.d.ts +1 -1
- package/dest/json-rpc/client/index.d.ts +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +9 -0
- package/dest/json-rpc/client/undici.d.ts +1 -1
- package/dest/json-rpc/convert.d.ts +1 -1
- package/dest/json-rpc/errors.d.ts +1 -1
- package/dest/json-rpc/errors.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/class_a.d.ts +3 -3
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/class_b.d.ts +3 -3
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/test_state.d.ts +1 -1
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
- package/dest/json-rpc/index.d.ts +1 -1
- package/dest/json-rpc/js_utils.d.ts +1 -1
- package/dest/json-rpc/js_utils.d.ts.map +1 -1
- package/dest/json-rpc/server/index.d.ts +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
- package/dest/json-rpc/server/telemetry.d.ts +1 -1
- package/dest/json-rpc/test/index.d.ts +1 -1
- package/dest/json-rpc/test/integration.d.ts +1 -1
- package/dest/log/console.d.ts +1 -1
- package/dest/log/gcloud-logger-config.d.ts +1 -1
- package/dest/log/gcloud-logger-config.d.ts.map +1 -1
- package/dest/log/index.d.ts +1 -1
- package/dest/log/libp2p_logger.d.ts +1 -1
- package/dest/log/log-filters.d.ts +1 -1
- package/dest/log/log-levels.d.ts +1 -1
- package/dest/log/log_fn.d.ts +2 -2
- package/dest/log/log_fn.d.ts.map +1 -1
- package/dest/log/noir_debug_log_util.d.ts +1 -1
- package/dest/log/pino-logger.d.ts +2 -2
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +0 -1
- package/dest/message/index.d.ts +1 -1
- package/dest/message/index.d.ts.map +1 -1
- package/dest/mutex/index.d.ts +1 -1
- package/dest/mutex/index.d.ts.map +1 -1
- package/dest/mutex/mutex_database.d.ts +1 -1
- package/dest/noir/index.d.ts +1 -1
- package/dest/noir/noir_package_config.d.ts +9 -9
- package/dest/number/index.d.ts +1 -1
- package/dest/profiler/index.d.ts +2 -0
- package/dest/profiler/index.d.ts.map +1 -0
- package/dest/profiler/index.js +1 -0
- package/dest/profiler/profiler.d.ts +8 -0
- package/dest/profiler/profiler.d.ts.map +1 -0
- package/dest/profiler/profiler.js +97 -0
- package/dest/promise/index.d.ts +1 -1
- package/dest/promise/running-promise.d.ts +1 -1
- package/dest/promise/running-promise.d.ts.map +1 -1
- package/dest/promise/utils.d.ts +1 -1
- package/dest/queue/base_memory_queue.d.ts +1 -1
- package/dest/queue/base_memory_queue.d.ts.map +1 -1
- package/dest/queue/batch_queue.d.ts +1 -1
- package/dest/queue/batch_queue.d.ts.map +1 -1
- package/dest/queue/bounded_serial_queue.d.ts +1 -1
- package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
- package/dest/queue/fifo_memory_queue.d.ts +1 -1
- package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
- package/dest/queue/index.d.ts +1 -1
- package/dest/queue/priority_memory_queue.d.ts +1 -1
- package/dest/queue/priority_memory_queue.d.ts.map +1 -1
- package/dest/queue/priority_queue.d.ts +1 -1
- package/dest/queue/priority_queue.d.ts.map +1 -1
- package/dest/queue/semaphore.d.ts +1 -1
- package/dest/queue/semaphore.d.ts.map +1 -1
- package/dest/queue/serial_queue.d.ts +1 -1
- package/dest/queue/serial_queue.d.ts.map +1 -1
- package/dest/retry/index.d.ts +1 -1
- package/dest/running-promise/index.d.ts +1 -1
- package/dest/schemas/api.d.ts +1 -1
- package/dest/schemas/index.d.ts +1 -1
- package/dest/schemas/parse.d.ts +1 -1
- package/dest/schemas/schemas.d.ts +13 -17
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +9 -10
- package/dest/schemas/types.d.ts +1 -1
- package/dest/schemas/utils.d.ts +4 -4
- package/dest/schemas/utils.d.ts.map +1 -1
- package/dest/schemas/utils.js +15 -5
- package/dest/serialize/buffer_reader.d.ts +3 -1
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +3 -0
- package/dest/serialize/field_reader.d.ts +2 -2
- package/dest/serialize/field_reader.d.ts.map +1 -1
- package/dest/serialize/field_reader.js +1 -1
- package/dest/serialize/free_funcs.d.ts +2 -2
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +1 -1
- package/dest/serialize/index.d.ts +1 -1
- package/dest/serialize/serialize.d.ts +2 -2
- package/dest/serialize/serialize.d.ts.map +1 -1
- package/dest/serialize/serialize.js +1 -1
- package/dest/serialize/type_registry.d.ts +1 -1
- package/dest/serialize/type_registry.d.ts.map +1 -1
- package/dest/serialize/types.d.ts +1 -1
- package/dest/sleep/index.d.ts +1 -1
- package/dest/sleep/index.d.ts.map +1 -1
- package/dest/string/index.d.ts +5 -1
- package/dest/string/index.d.ts.map +1 -1
- package/dest/string/index.js +19 -2
- package/dest/testing/files/index.d.ts +2 -1
- package/dest/testing/files/index.d.ts.map +1 -1
- package/dest/testing/files/index.js +1 -1
- package/dest/testing/formatting.d.ts +4 -0
- package/dest/testing/formatting.d.ts.map +1 -0
- package/dest/testing/formatting.js +3 -0
- package/dest/testing/index.d.ts +2 -1
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +1 -0
- package/dest/testing/port_allocator.d.ts +1 -1
- package/dest/testing/snapshot_serializer.d.ts +1 -1
- package/dest/testing/test_data.d.ts +1 -1
- package/dest/timer/date.d.ts +1 -1
- package/dest/timer/date.d.ts.map +1 -1
- package/dest/timer/elapsed.d.ts +1 -1
- package/dest/timer/index.d.ts +2 -2
- package/dest/timer/index.d.ts.map +1 -1
- package/dest/timer/index.js +1 -1
- package/dest/timer/timeout.d.ts +3 -1
- package/dest/timer/timeout.d.ts.map +1 -1
- package/dest/timer/timeout.js +9 -0
- package/dest/timer/timer.d.ts +1 -1
- package/dest/timer/timer.d.ts.map +1 -1
- package/dest/transport/dispatch/create_dispatch_fn.d.ts +1 -1
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +1 -1
- package/dest/transport/dispatch/messages.d.ts +1 -1
- package/dest/transport/index.d.ts +1 -1
- package/dest/transport/interface/connector.d.ts +1 -1
- package/dest/transport/interface/listener.d.ts +1 -1
- package/dest/transport/interface/socket.d.ts +1 -1
- package/dest/transport/interface/transferable.d.ts +1 -1
- package/dest/transport/node/index.d.ts +1 -1
- package/dest/transport/node/node_connector.d.ts +1 -1
- package/dest/transport/node/node_connector.d.ts.map +1 -1
- package/dest/transport/node/node_connector_socket.d.ts +1 -1
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
- package/dest/transport/node/node_listener.d.ts +1 -1
- package/dest/transport/node/node_listener.d.ts.map +1 -1
- package/dest/transport/node/node_listener_socket.d.ts +1 -1
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
- package/dest/transport/transport_client.d.ts +1 -1
- package/dest/transport/transport_client.d.ts.map +1 -1
- package/dest/transport/transport_server.d.ts +1 -10
- package/dest/transport/transport_server.d.ts.map +1 -1
- package/dest/trees/balanced_merkle_tree.d.ts +22 -0
- package/dest/trees/balanced_merkle_tree.d.ts.map +1 -0
- package/dest/trees/balanced_merkle_tree.js +66 -0
- package/dest/trees/hasher.d.ts +1 -1
- package/dest/trees/index.d.ts +2 -1
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +1 -0
- package/dest/trees/indexed_merkle_tree.d.ts +1 -1
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree.js +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/indexed_tree_leaf.d.ts +1 -1
- package/dest/trees/membership_witness.d.ts +3 -24
- package/dest/trees/membership_witness.d.ts.map +1 -1
- package/dest/trees/membership_witness.js +1 -1
- package/dest/trees/merkle_tree.d.ts +1 -1
- package/dest/trees/merkle_tree.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.d.ts +2 -12
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.js +1 -31
- package/dest/trees/sibling_path.d.ts +5 -39
- package/dest/trees/sibling_path.d.ts.map +1 -1
- package/dest/trees/sibling_path.js +2 -2
- package/dest/trees/unbalanced_merkle_tree.d.ts +5 -4
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree.js +33 -10
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +27 -23
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree_calculator.js +123 -97
- package/dest/trees/unbalanced_tree_store.d.ts +2 -1
- package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
- package/dest/trees/unbalanced_tree_store.js +6 -0
- package/dest/types/index.d.ts +1 -1
- package/dest/url/index.d.ts +1 -1
- package/dest/validation/index.d.ts +1 -1
- package/package.json +31 -8
- package/src/array/array.ts +0 -16
- package/src/branded-types/block_number.ts +112 -0
- package/src/branded-types/checkpoint_number.ts +100 -0
- package/src/branded-types/epoch.ts +88 -0
- package/src/branded-types/index.ts +6 -0
- package/src/branded-types/slot.ts +88 -0
- package/src/branded-types/types.ts +2 -0
- package/src/buffer/buffer16.ts +2 -2
- package/src/buffer/buffer32.ts +2 -2
- package/src/collection/array.ts +15 -3
- package/src/collection/object.ts +8 -0
- package/src/config/env_var.ts +38 -21
- package/src/config/index.ts +23 -3
- package/src/config/network_config.ts +16 -0
- package/src/config/network_name.ts +18 -3
- package/src/crypto/aes128/index.ts +19 -10
- package/src/crypto/bls/bn254_keystore.ts +287 -0
- package/src/crypto/bls/index.ts +77 -0
- package/src/crypto/bn254/index.ts +64 -0
- package/src/crypto/ecdsa/index.ts +40 -37
- package/src/crypto/ecdsa/signature.ts +2 -2
- package/src/crypto/grumpkin/index.ts +38 -46
- package/src/crypto/keys/index.ts +6 -6
- package/src/crypto/pedersen/pedersen.wasm.ts +23 -19
- package/src/crypto/poseidon/index.ts +33 -25
- package/src/crypto/schnorr/index.ts +22 -18
- package/src/crypto/schnorr/signature.ts +2 -2
- package/src/crypto/secp256k1/index.ts +15 -11
- package/src/crypto/secp256k1-signer/utils.ts +115 -7
- package/src/crypto/sha256/index.ts +1 -1
- package/src/crypto/sha512/index.ts +1 -1
- package/src/crypto/signature/index.ts +1 -1
- package/src/crypto/sync/index.ts +1 -1
- package/src/crypto/sync/pedersen/index.ts +17 -16
- package/src/crypto/sync/poseidon/index.ts +28 -23
- package/src/{fields/bls12_fields.ts → curves/bls12/field.ts} +6 -6
- package/src/curves/bls12/index.ts +2 -0
- package/src/{fields/bls12_point.ts → curves/bls12/point.ts} +14 -14
- package/src/{fields/fields.ts → curves/bn254/field.ts} +41 -19
- package/src/curves/bn254/index.ts +2 -0
- package/src/curves/bn254/point.ts +170 -0
- package/src/curves/grumpkin/index.ts +11 -0
- package/src/{fields → curves/grumpkin}/point.ts +26 -7
- package/src/eth-address/index.ts +28 -3
- package/src/eth-signature/eth_signature.ts +2 -4
- package/src/json-rpc/client/safe_json_rpc_client.ts +9 -0
- package/src/log/log_fn.ts +1 -1
- package/src/log/pino-logger.ts +0 -1
- package/src/profiler/index.ts +1 -0
- package/src/profiler/profiler.ts +125 -0
- package/src/schemas/schemas.ts +16 -13
- package/src/schemas/utils.ts +21 -8
- package/src/serialize/buffer_reader.ts +5 -0
- package/src/serialize/field_reader.ts +1 -1
- package/src/serialize/free_funcs.ts +1 -1
- package/src/serialize/serialize.ts +1 -1
- package/src/string/index.ts +24 -1
- package/src/testing/files/index.ts +1 -1
- package/src/testing/formatting.ts +3 -0
- package/src/testing/index.ts +1 -0
- package/src/timer/index.ts +1 -1
- package/src/timer/timeout.ts +13 -0
- package/src/trees/balanced_merkle_tree.ts +84 -0
- package/src/trees/index.ts +1 -0
- package/src/trees/indexed_merkle_tree.ts +1 -1
- package/src/trees/membership_witness.ts +1 -1
- package/src/trees/merkle_tree_calculator.ts +1 -34
- package/src/trees/sibling_path.ts +2 -2
- package/src/trees/unbalanced_merkle_tree.ts +55 -7
- package/src/trees/unbalanced_merkle_tree_calculator.ts +134 -93
- package/src/trees/unbalanced_tree_store.ts +5 -1
- package/dest/crypto/index.d.ts +0 -15
- package/dest/crypto/index.d.ts.map +0 -1
- package/dest/crypto/index.js +0 -14
- package/dest/fields/bls12_fields.d.ts.map +0 -1
- package/dest/fields/bls12_point.d.ts.map +0 -1
- package/dest/fields/coordinate.d.ts +0 -66
- package/dest/fields/coordinate.d.ts.map +0 -1
- package/dest/fields/coordinate.js +0 -96
- package/dest/fields/fields.d.ts.map +0 -1
- package/dest/fields/index.d.ts +0 -6
- package/dest/fields/index.d.ts.map +0 -1
- package/dest/fields/index.js +0 -5
- package/dest/fields/point.d.ts.map +0 -1
- package/dest/index.d.ts +0 -29
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -29
- package/src/crypto/index.ts +0 -14
- package/src/fields/coordinate.ts +0 -104
- package/src/fields/index.ts +0 -5
- package/src/index.ts +0 -29
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BarretenbergSync
|
|
2
|
-
import { Fr } from '../../
|
|
1
|
+
import { BarretenbergSync } from '@aztec/bb.js';
|
|
2
|
+
import { Fr } from '../../curves/bn254/field.js';
|
|
3
3
|
import { serializeToFields } from '../../serialize/serialize.js';
|
|
4
4
|
/**
|
|
5
5
|
* Create a poseidon hash (field) from an array of input fields.
|
|
@@ -7,9 +7,12 @@ import { serializeToFields } from '../../serialize/serialize.js';
|
|
|
7
7
|
* @returns The poseidon hash.
|
|
8
8
|
*/ export async function poseidon2Hash(input) {
|
|
9
9
|
const inputFields = serializeToFields(input);
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
10
|
+
await BarretenbergSync.initSingleton();
|
|
11
|
+
const api = BarretenbergSync.getSingleton();
|
|
12
|
+
const response = api.poseidon2Hash({
|
|
13
|
+
inputs: inputFields.map((i)=>i.toBuffer())
|
|
14
|
+
});
|
|
15
|
+
return Fr.fromBuffer(Buffer.from(response.hash));
|
|
13
16
|
}
|
|
14
17
|
/**
|
|
15
18
|
* Create a poseidon hash (field) from an array of input fields and a domain separator.
|
|
@@ -19,15 +22,21 @@ import { serializeToFields } from '../../serialize/serialize.js';
|
|
|
19
22
|
*/ export async function poseidon2HashWithSeparator(input, separator) {
|
|
20
23
|
const inputFields = serializeToFields(input);
|
|
21
24
|
inputFields.unshift(new Fr(separator));
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
+
await BarretenbergSync.initSingleton();
|
|
26
|
+
const api = BarretenbergSync.getSingleton();
|
|
27
|
+
const response = api.poseidon2Hash({
|
|
28
|
+
inputs: inputFields.map((i)=>i.toBuffer())
|
|
29
|
+
});
|
|
30
|
+
return Fr.fromBuffer(Buffer.from(response.hash));
|
|
25
31
|
}
|
|
26
32
|
export async function poseidon2HashAccumulate(input) {
|
|
27
33
|
const inputFields = serializeToFields(input);
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
|
|
34
|
+
await BarretenbergSync.initSingleton();
|
|
35
|
+
const api = BarretenbergSync.getSingleton();
|
|
36
|
+
const response = api.poseidon2HashAccumulate({
|
|
37
|
+
inputs: inputFields.map((i)=>i.toBuffer())
|
|
38
|
+
});
|
|
39
|
+
return Fr.fromBuffer(Buffer.from(response.hash));
|
|
31
40
|
}
|
|
32
41
|
/**
|
|
33
42
|
* Runs a Poseidon2 permutation.
|
|
@@ -37,11 +46,14 @@ export async function poseidon2HashAccumulate(input) {
|
|
|
37
46
|
const inputFields = serializeToFields(input);
|
|
38
47
|
// We'd like this assertion but it's not possible to use it in the browser.
|
|
39
48
|
// assert(input.length === 4, 'Input state must be of size 4');
|
|
40
|
-
|
|
41
|
-
const
|
|
49
|
+
await BarretenbergSync.initSingleton();
|
|
50
|
+
const api = BarretenbergSync.getSingleton();
|
|
51
|
+
const response = api.poseidon2Permutation({
|
|
52
|
+
inputs: inputFields.map((i)=>i.toBuffer())
|
|
53
|
+
});
|
|
42
54
|
// We'd like this assertion but it's not possible to use it in the browser.
|
|
43
|
-
// assert(
|
|
44
|
-
return
|
|
55
|
+
// assert(response.outputs.length === 4, 'Output state must be of size 4');
|
|
56
|
+
return response.outputs.map((o)=>Fr.fromBuffer(Buffer.from(o)));
|
|
45
57
|
}
|
|
46
58
|
export async function poseidon2HashBytes(input) {
|
|
47
59
|
const inputFields = [];
|
|
@@ -52,7 +64,10 @@ export async function poseidon2HashBytes(input) {
|
|
|
52
64
|
fieldBytes.reverse();
|
|
53
65
|
inputFields.push(Fr.fromBuffer(fieldBytes));
|
|
54
66
|
}
|
|
55
|
-
|
|
56
|
-
const
|
|
57
|
-
|
|
67
|
+
await BarretenbergSync.initSingleton();
|
|
68
|
+
const api = BarretenbergSync.getSingleton();
|
|
69
|
+
const response = api.poseidon2Hash({
|
|
70
|
+
inputs: inputFields.map((i)=>i.toBuffer())
|
|
71
|
+
});
|
|
72
|
+
return Fr.fromBuffer(Buffer.from(response.hash));
|
|
58
73
|
}
|
|
@@ -20,4 +20,4 @@ export declare const randomBigInt: (max: bigint) => bigint;
|
|
|
20
20
|
* @returns A random boolean value.
|
|
21
21
|
*/
|
|
22
22
|
export declare const randomBoolean: () => boolean;
|
|
23
|
-
//# sourceMappingURL=
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vcmFuZG9tL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLGVBQU8sTUFBTSxXQUFXLDBDQU92QixDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsZUFBTyxNQUFNLFNBQVMseUJBSXJCLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxlQUFPLE1BQU0sWUFBWSx5QkFJeEIsQ0FBQztBQUVGOzs7R0FHRztBQUNILGVBQU8sTUFBTSxhQUFhLGVBR3pCLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/random/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/random/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,0CAOvB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,yBAIrB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,yBAIxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,eAGzB,CAAC"}
|
|
@@ -20,4 +20,4 @@ export declare class RandomnessSingleton {
|
|
|
20
20
|
isDeterministic(): boolean;
|
|
21
21
|
getBytes(length: number): Buffer;
|
|
22
22
|
}
|
|
23
|
-
//# sourceMappingURL=
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9tbmVzc19zaW5nbGV0b24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vcmFuZG9tL3JhbmRvbW5lc3Nfc2luZ2xldG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7Ozs7O0dBT0c7QUFDSCxxQkFBYSxtQkFBbUI7SUFNNUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0lBTnRCLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFzQjtJQUU3QyxPQUFPLENBQUMsT0FBTyxDQUFLO0lBRXBCLE9BQU8sZUFVTjtJQUVELE9BQWMsV0FBVyxJQUFJLG1CQUFtQixDQU8vQztJQUVEOzs7T0FHRztJQUNJLGVBQWUsSUFBSSxPQUFPLENBRWhDO0lBRU0sUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsTUFBTSxDQWdCdEM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"randomness_singleton.d.ts","sourceRoot":"","sources":["../../../src/crypto/random/randomness_singleton.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAM5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IANtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsB;IAE7C,OAAO,CAAC,OAAO,CAAK;IAEpB,OAAO;
|
|
1
|
+
{"version":3,"file":"randomness_singleton.d.ts","sourceRoot":"","sources":["../../../src/crypto/random/randomness_singleton.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAM5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IANtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsB;IAE7C,OAAO,CAAC,OAAO,CAAK;IAEpB,OAAO,eAUN;IAED,OAAc,WAAW,IAAI,mBAAmB,CAO/C;IAED;;;OAGG;IACI,eAAe,IAAI,OAAO,CAEhC;IAEM,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBtC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
|
|
2
|
+
import { Point } from '@aztec/foundation/curves/grumpkin';
|
|
2
3
|
import { SchnorrSignature } from './signature.js';
|
|
3
4
|
export * from './signature.js';
|
|
4
5
|
/**
|
|
@@ -27,4 +28,4 @@ export declare class Schnorr {
|
|
|
27
28
|
*/
|
|
28
29
|
verifySignature(msg: Uint8Array, pubKey: Point, sig: SchnorrSignature): Promise<boolean>;
|
|
29
30
|
}
|
|
30
|
-
//# sourceMappingURL=
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vc2Nobm9yci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQjs7R0FFRztBQUNILHFCQUFhLE9BQU87SUFDbEI7Ozs7T0FJRztJQUNVLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUt4RTtJQUVEOzs7OztPQUtHO0lBQ1Usa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyw2QkFRMUU7SUFFRDs7Ozs7O09BTUc7SUFDVSxlQUFlLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0Isb0JBVWpGO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/schnorr/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/schnorr/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,cAAc,gBAAgB,CAAC;AAE/B;;GAEG;AACH,qBAAa,OAAO;IAClB;;;;OAIG;IACU,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAKxE;IAED;;;;;OAKG;IACU,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,6BAQ1E;IAED;;;;;;OAMG;IACU,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,oBAUjF;CACF"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { BarretenbergSync } from '@aztec/bb.js';
|
|
2
|
-
import { Point } from '@aztec/foundation/
|
|
3
|
-
import { numToInt32BE } from '@aztec/foundation/serialize';
|
|
4
|
-
import { concatenateUint8Arrays } from '../serialize.js';
|
|
2
|
+
import { Point } from '@aztec/foundation/curves/grumpkin';
|
|
5
3
|
import { SchnorrSignature } from './signature.js';
|
|
6
4
|
export * from './signature.js';
|
|
7
5
|
/**
|
|
@@ -12,13 +10,15 @@ export * from './signature.js';
|
|
|
12
10
|
* @param privateKey - The private key.
|
|
13
11
|
* @returns A grumpkin public key.
|
|
14
12
|
*/ async computePublicKey(privateKey) {
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
await BarretenbergSync.initSingleton();
|
|
14
|
+
const api = BarretenbergSync.getSingleton();
|
|
15
|
+
const response = api.schnorrComputePublicKey({
|
|
16
|
+
privateKey: privateKey.toBuffer()
|
|
17
|
+
});
|
|
18
|
+
return Point.fromBuffer(Buffer.concat([
|
|
19
|
+
Buffer.from(response.publicKey.x),
|
|
20
|
+
Buffer.from(response.publicKey.y)
|
|
21
|
+
]));
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* Constructs a Schnorr signature given a msg and a private key.
|
|
@@ -26,21 +26,15 @@ export * from './signature.js';
|
|
|
26
26
|
* @param privateKey - The private key of the signer.
|
|
27
27
|
* @returns A Schnorr signature of the form (s, e).
|
|
28
28
|
*/ async constructSignature(msg, privateKey) {
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
msg
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
messageArray,
|
|
36
|
-
privateKey.toBuffer()
|
|
37
|
-
], [
|
|
38
|
-
32,
|
|
39
|
-
32
|
|
40
|
-
]);
|
|
29
|
+
await BarretenbergSync.initSingleton();
|
|
30
|
+
const api = BarretenbergSync.getSingleton();
|
|
31
|
+
const response = api.schnorrConstructSignature({
|
|
32
|
+
message: msg,
|
|
33
|
+
privateKey: privateKey.toBuffer()
|
|
34
|
+
});
|
|
41
35
|
return new SchnorrSignature(Buffer.from([
|
|
42
|
-
...s,
|
|
43
|
-
...e
|
|
36
|
+
...response.s,
|
|
37
|
+
...response.e
|
|
44
38
|
]));
|
|
45
39
|
}
|
|
46
40
|
/**
|
|
@@ -50,19 +44,17 @@ export * from './signature.js';
|
|
|
50
44
|
* @param sig - The Schnorr signature.
|
|
51
45
|
* @returns True or false.
|
|
52
46
|
*/ async verifySignature(msg, pubKey, sig) {
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
msg
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
sig.s,
|
|
62
|
-
sig.e
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
]);
|
|
66
|
-
return result[0] === 1;
|
|
47
|
+
await BarretenbergSync.initSingleton();
|
|
48
|
+
const api = BarretenbergSync.getSingleton();
|
|
49
|
+
const response = api.schnorrVerifySignature({
|
|
50
|
+
message: msg,
|
|
51
|
+
publicKey: {
|
|
52
|
+
x: pubKey.x.toBuffer(),
|
|
53
|
+
y: pubKey.y.toBuffer()
|
|
54
|
+
},
|
|
55
|
+
s: sig.s,
|
|
56
|
+
e: sig.e
|
|
57
|
+
});
|
|
58
|
+
return response.verified;
|
|
67
59
|
}
|
|
68
60
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
3
3
|
import type { Signature } from '../signature/index.js';
|
|
4
4
|
/**
|
|
@@ -65,4 +65,4 @@ export declare class SchnorrSignature implements Signature {
|
|
|
65
65
|
*/
|
|
66
66
|
toFields(): Fr[];
|
|
67
67
|
}
|
|
68
|
-
//# sourceMappingURL=
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3J5cHRvL3NjaG5vcnIvc2lnbmF0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sNkJBQTZCLENBQUM7QUFFckUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQ7OztHQUdHO0FBQ0gscUJBQWEsZ0JBQWlCLFlBQVcsU0FBUztJQVdwQyxPQUFPLENBQUMsTUFBTTtJQVYxQjs7T0FFRztJQUNILE9BQWMsSUFBSSxTQUFNO0lBRXhCOztPQUVHO0lBQ0gsT0FBYyxLQUFLLG1CQUEwQztJQUU3RCxZQUFvQixNQUFNLEVBQUUsTUFBTSxFQUlqQztJQUVEOzs7O09BSUc7SUFDSCxPQUFjLFdBQVcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxXQUUxQztJQUVEOzs7O09BSUc7SUFDSCxPQUFjLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxvQkFLekM7SUFFRDs7O09BR0c7SUFDSCxPQUFjLE1BQU0scUJBRW5CO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLDRCQUVKO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLDRCQUVKO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSw0QkFFUDtJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLGdCQUFnQixDQUdqRTtJQUVEOzs7T0FHRztJQUNILFFBQVEsV0FFUDtJQUVEOzs7T0FHRztJQUNILFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FZZjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/crypto/schnorr/signature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/crypto/schnorr/signature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAY,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAWpC,OAAO,CAAC,MAAM;IAV1B;;OAEG;IACH,OAAc,IAAI,SAAM;IAExB;;OAEG;IACH,OAAc,KAAK,mBAA0C;IAE7D,YAAoB,MAAM,EAAE,MAAM,EAIjC;IAED;;;;OAIG;IACH,OAAc,WAAW,CAAC,SAAS,EAAE,MAAM,WAE1C;IAED;;;;OAIG;IACH,OAAc,UAAU,CAAC,SAAS,EAAE,MAAM,oBAKzC;IAED;;;OAGG;IACH,OAAc,MAAM,qBAEnB;IAED;;;OAGG;IACH,IAAI,CAAC,4BAEJ;IAED;;;OAGG;IACH,IAAI,CAAC,4BAEJ;IAED;;;OAGG;IACH,QAAQ,4BAEP;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAGjE;IAED;;;OAGG;IACH,QAAQ,WAEP;IAED;;;OAGG;IACH,QAAQ,IAAI,EAAE,EAAE,CAYf;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { randomBytes } from '@aztec/foundation/crypto';
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { BufferReader, mapTuple } from '@aztec/foundation/serialize';
|
|
4
4
|
/**
|
|
5
5
|
* Schnorr signature used for transactions.
|
|
@@ -27,4 +27,4 @@ export declare class Secp256k1 {
|
|
|
27
27
|
*/
|
|
28
28
|
reduce512BufferToFr(uint512Buf: Buffer): Promise<Buffer<ArrayBuffer>>;
|
|
29
29
|
}
|
|
30
|
-
//# sourceMappingURL=
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vc2VjcDI1NmsxL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gscUJBQWEsU0FBUztJQUVwQixNQUFNLENBQUMsU0FBUyxzQkFLYjtJQUVIOzs7T0FHRztJQUNJLFNBQVMsSUFBSSxNQUFNLENBRXpCO0lBRUQ7Ozs7O09BS0c7SUFDVSxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxnQ0FRckQ7SUFFRDs7O09BR0c7SUFDVSxXQUFXLGlDQUt2QjtJQUVEOzs7O09BSUc7SUFDVSxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxnQ0FLbEQ7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/secp256k1/index.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,SAAS;IAEpB,MAAM,CAAC,SAAS,sBAKb;IAEH;;;OAGG;IACI,SAAS,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/secp256k1/index.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,SAAS;IAEpB,MAAM,CAAC,SAAS,sBAKb;IAEH;;;OAGG;IACI,SAAS,IAAI,MAAM,CAEzB;IAED;;;;;OAKG;IACU,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,gCAQrD;IAED;;;OAGG;IACU,WAAW,iCAKvB;IAED;;;;OAIG;IACU,mBAAmB,CAAC,UAAU,EAAE,MAAM,gCAKlD;CACF"}
|
|
@@ -81,36 +81,41 @@ import { BarretenbergSync } from '@aztec/bb.js';
|
|
|
81
81
|
* @param scalar - Scalar to multiply by.
|
|
82
82
|
* @returns Result of the multiplication.
|
|
83
83
|
*/ async mul(point, scalar) {
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
84
|
+
await BarretenbergSync.initSingleton();
|
|
85
|
+
const api = BarretenbergSync.getSingleton();
|
|
86
|
+
const response = api.secp256k1Mul({
|
|
87
|
+
point: {
|
|
88
|
+
x: point.subarray(0, 32),
|
|
89
|
+
y: point.subarray(32, 64)
|
|
90
|
+
},
|
|
87
91
|
scalar
|
|
88
|
-
|
|
89
|
-
|
|
92
|
+
});
|
|
93
|
+
return Buffer.concat([
|
|
94
|
+
Buffer.from(response.point.x),
|
|
95
|
+
Buffer.from(response.point.y)
|
|
90
96
|
]);
|
|
91
|
-
return Buffer.from(result);
|
|
92
97
|
}
|
|
93
98
|
/**
|
|
94
99
|
* Gets a random field element.
|
|
95
100
|
* @returns Random field element.
|
|
96
101
|
*/ async getRandomFr() {
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
+
await BarretenbergSync.initSingleton();
|
|
103
|
+
const api = BarretenbergSync.getSingleton();
|
|
104
|
+
const response = api.secp256k1GetRandomFr({
|
|
105
|
+
dummy: 0
|
|
106
|
+
});
|
|
107
|
+
return Buffer.from(response.value);
|
|
102
108
|
}
|
|
103
109
|
/**
|
|
104
110
|
* Converts a 512 bits long buffer to a field.
|
|
105
111
|
* @param uint512Buf - The buffer to convert.
|
|
106
112
|
* @returns Buffer representation of the field element.
|
|
107
113
|
*/ async reduce512BufferToFr(uint512Buf) {
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
return Buffer.from(result);
|
|
114
|
+
await BarretenbergSync.initSingleton();
|
|
115
|
+
const api = BarretenbergSync.getSingleton();
|
|
116
|
+
const response = api.secp256k1Reduce512({
|
|
117
|
+
input: uint512Buf
|
|
118
|
+
});
|
|
119
|
+
return Buffer.from(response.value);
|
|
115
120
|
}
|
|
116
121
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './secp256k1_signer.js';
|
|
2
2
|
export * from './utils.js';
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vc2VjcDI1NmsxLXNpZ25lci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsWUFBWSxDQUFDIn0=
|
|
@@ -21,4 +21,4 @@ export declare class Secp256k1Signer {
|
|
|
21
21
|
signMessage(message: Buffer32): Signature;
|
|
22
22
|
static random(): Secp256k1Signer;
|
|
23
23
|
}
|
|
24
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcDI1NmsxX3NpZ25lci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NyeXB0by9zZWNwMjU2azEtc2lnbmVyL3NlY3AyNTZrMV9zaWduZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSWpFOzs7Ozs7R0FNRztBQUNILHFCQUFhLGVBQWU7SUFHZCxPQUFPLENBQUMsVUFBVTtJQUY5QixTQUFnQixPQUFPLEVBQUUsVUFBVSxDQUFDO0lBRXBDLFlBQW9CLFVBQVUsRUFBRSxRQUFRLEVBRXZDO0lBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEdBQUcsU0FBUyxDQUVqQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsR0FBRyxTQUFTLENBR3hDO0lBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxlQUFlLENBRS9CO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secp256k1_signer.d.ts","sourceRoot":"","sources":["../../../src/crypto/secp256k1-signer/secp256k1_signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAIjE;;;;;;GAMG;AACH,qBAAa,eAAe;IAGd,OAAO,CAAC,UAAU;IAF9B,SAAgB,OAAO,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"secp256k1_signer.d.ts","sourceRoot":"","sources":["../../../src/crypto/secp256k1-signer/secp256k1_signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAIjE;;;;;;GAMG;AACH,qBAAa,eAAe;IAGd,OAAO,CAAC,UAAU;IAF9B,SAAgB,OAAO,EAAE,UAAU,CAAC;IAEpC,YAAoB,UAAU,EAAE,QAAQ,EAEvC;IAED,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,CAEjC;IAED;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,CAGxC;IAED,MAAM,CAAC,MAAM,IAAI,eAAe,CAE/B;CACF"}
|
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
import { Buffer32 } from '../../buffer/buffer32.js';
|
|
2
2
|
import { EthAddress } from '../../eth-address/index.js';
|
|
3
3
|
import { Signature } from '../../eth-signature/eth_signature.js';
|
|
4
|
+
/** Signature recovery options */
|
|
5
|
+
type RecoveryOpts = {
|
|
6
|
+
/**
|
|
7
|
+
* Whether to allow s-values in the high half of the curve (s >= CURVE.n/2).
|
|
8
|
+
* These are discouraged by EIP2 to prevent signature malleability, and outright
|
|
9
|
+
* rejected in OpenZeppelin's ECDSA recover, which we use in our Rollup contract.
|
|
10
|
+
*/
|
|
11
|
+
allowMalleable?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Whether to allow an y-parity 0-1 bit instead of the standard v value 27-28.
|
|
14
|
+
*/
|
|
15
|
+
allowYParityAsV?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare class Secp256k1Error extends Error {
|
|
18
|
+
constructor(message: string, opts?: {
|
|
19
|
+
cause: unknown;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
4
22
|
export declare function makeEthSignDigest(message: Buffer32): Buffer32;
|
|
5
23
|
/**
|
|
6
24
|
* Converts a private key to a public key.
|
|
@@ -18,9 +36,19 @@ export declare function addressFromPrivateKey(privateKey: Buffer): EthAddress;
|
|
|
18
36
|
* Recovers an address from a hash and a signature.
|
|
19
37
|
* @param hash - The hash to recover the address from.
|
|
20
38
|
* @param signature - The signature to recover the address from.
|
|
39
|
+
* @param opts - Recovery options.
|
|
21
40
|
* @returns The address.
|
|
41
|
+
* @throws Error if signature recovery fails or if signature is malleable and allowMalleable is false.
|
|
22
42
|
*/
|
|
23
|
-
export declare function recoverAddress(hash: Buffer32, signature: Signature): EthAddress;
|
|
43
|
+
export declare function recoverAddress(hash: Buffer32, signature: Signature, opts?: RecoveryOpts): EthAddress;
|
|
44
|
+
/**
|
|
45
|
+
* Safely attempts to recover an address from a hash and a signature.
|
|
46
|
+
* @param hash - The hash to recover the address from.
|
|
47
|
+
* @param signature - The signature to recover the address from.
|
|
48
|
+
* @param opts - Recovery options.
|
|
49
|
+
* @returns The address if recovery succeeds, undefined otherwise.
|
|
50
|
+
*/
|
|
51
|
+
export declare function tryRecoverAddress(hash: Buffer32, signature: Signature, opts?: RecoveryOpts): EthAddress | undefined;
|
|
24
52
|
/**
|
|
25
53
|
* @attribution - viem
|
|
26
54
|
* Converts a yParityOrV value to a recovery bit.
|
|
@@ -35,11 +63,29 @@ export declare function toRecoveryBit(yParityOrV: number): 0 | 1;
|
|
|
35
63
|
* @returns The signature.
|
|
36
64
|
*/
|
|
37
65
|
export declare function signMessage(message: Buffer32, privateKey: Buffer): Signature;
|
|
66
|
+
/**
|
|
67
|
+
* Flips an ECDSA signature.
|
|
68
|
+
* If the signature has a low s-value (s < CURVE.n/2), it flips it to high s-value (CURVE.n - s) and vice versa.
|
|
69
|
+
* Also flips the v value accordingly (27 <-> 28, or 0 <-> 1).
|
|
70
|
+
* This is useful for testing signature malleability handling.
|
|
71
|
+
* @param signature - The signature to flip.
|
|
72
|
+
* @returns A new signature with flipped s-value and v-value.
|
|
73
|
+
*/
|
|
74
|
+
export declare function flipSignature(signature: Signature): Signature;
|
|
75
|
+
/**
|
|
76
|
+
* Normalizes an ECDSA signature.
|
|
77
|
+
* If the signature has a high s-value (s >= CURVE.n/2), it flips it to low s-value (CURVE.n - s), and flips v accordingly.
|
|
78
|
+
* If the signature uses a recovery bit of 0/1, it is converted to a v-value 27/28 for ecrecover.
|
|
79
|
+
* @remarks This does not handle post EIP155 tx signatures which embed the chain id in v. Use it only for feeding into ECRECOVER precompiles.
|
|
80
|
+
* @param signature - The signature to normalize.
|
|
81
|
+
*/
|
|
82
|
+
export declare function normalizeSignature(signature: Signature): Signature;
|
|
38
83
|
/**
|
|
39
84
|
* Recovers a public key from a hash and a signature.
|
|
40
85
|
* @param hash - The hash to recover the public key from.
|
|
41
86
|
* @param signature - The signature to recover the public key from.
|
|
42
87
|
* @returns The public key.
|
|
43
88
|
*/
|
|
44
|
-
export declare function recoverPublicKey(hash: Buffer32, signature: Signature): Buffer;
|
|
45
|
-
|
|
89
|
+
export declare function recoverPublicKey(hash: Buffer32, signature: Signature, opts?: RecoveryOpts): Buffer;
|
|
90
|
+
export {};
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vc2VjcDI1NmsxLXNpZ25lci91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUtqRSxpQ0FBaUM7QUFDakMsS0FBSyxZQUFZLEdBQUc7SUFDbEI7Ozs7T0FJRztJQUNILGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN6Qjs7T0FFRztJQUNILGVBQWUsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUMzQixDQUFDO0FBRUYscUJBQWEsY0FBZSxTQUFRLEtBQUs7SUFDdkMsWUFBWSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEVBR3JEO0NBQ0Y7QUFHRCx3QkFBZ0IsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFFBQVEsR0FBRyxRQUFRLENBRzdEO0FBWUQ7Ozs7R0FJRztBQUNILHdCQUFnQix1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFbEU7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsVUFBVSxDQUdwRTtBQUVEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBZ0IsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxZQUFZLEdBQUcsVUFBVSxDQVVwRztBQUVEOzs7Ozs7R0FNRztBQUNILHdCQUFnQixpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsWUFBWSxHQUFHLFVBQVUsR0FBRyxTQUFTLENBT25IO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBZ0IsYUFBYSxDQUFDLFVBQVUsRUFBRSxNQUFNLFNBVy9DO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBZ0IsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFHaEU7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQWdCLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxHQUFHLFNBQVMsQ0FNN0Q7QUFFRDs7Ozs7O0dBTUc7QUFDSCx3QkFBZ0Isa0JBQWtCLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxTQUFTLENBVWxFO0FBNkJEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGdCQUFnQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEdBQUUsWUFBaUIsR0FBRyxNQUFNLENBWXRHIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/crypto/secp256k1-signer/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/crypto/secp256k1-signer/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAKjE,iCAAiC;AACjC,KAAK,YAAY,GAAG;IAClB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,qBAAa,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,EAGrD;CACF;AAGD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAG7D;AAYD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAGpE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,CAUpG;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAOnH;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,SAW/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAGhE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAM7D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAUlE;AA6BD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,GAAE,YAAiB,GAAG,MAAM,CAYtG"}
|
|
@@ -4,6 +4,12 @@ import { EthAddress } from '../../eth-address/index.js';
|
|
|
4
4
|
import { Signature } from '../../eth-signature/eth_signature.js';
|
|
5
5
|
import { keccak256 } from '../keccak/index.js';
|
|
6
6
|
const ETH_SIGN_PREFIX = '\x19Ethereum Signed Message:\n32';
|
|
7
|
+
export class Secp256k1Error extends Error {
|
|
8
|
+
constructor(message, opts){
|
|
9
|
+
super(message, opts);
|
|
10
|
+
this.name = 'Secp256k1Error';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
7
13
|
// We just hash the message to make it easier to work with in the smart contract.
|
|
8
14
|
export function makeEthSignDigest(message) {
|
|
9
15
|
const prefix = Buffer.from(ETH_SIGN_PREFIX);
|
|
@@ -39,13 +45,31 @@ export function makeEthSignDigest(message) {
|
|
|
39
45
|
* Recovers an address from a hash and a signature.
|
|
40
46
|
* @param hash - The hash to recover the address from.
|
|
41
47
|
* @param signature - The signature to recover the address from.
|
|
48
|
+
* @param opts - Recovery options.
|
|
42
49
|
* @returns The address.
|
|
43
|
-
|
|
50
|
+
* @throws Error if signature recovery fails or if signature is malleable and allowMalleable is false.
|
|
51
|
+
*/ export function recoverAddress(hash, signature, opts) {
|
|
44
52
|
try {
|
|
45
|
-
const publicKey = recoverPublicKey(hash, signature);
|
|
53
|
+
const publicKey = recoverPublicKey(hash, signature, opts);
|
|
46
54
|
return publicKeyToAddress(publicKey);
|
|
47
55
|
} catch (err) {
|
|
48
|
-
throw new
|
|
56
|
+
throw new Secp256k1Error(`Error recovering Ethereum address from hash ${hash.toString()} and signature ${signature.toString()}`, {
|
|
57
|
+
cause: err
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Safely attempts to recover an address from a hash and a signature.
|
|
63
|
+
* @param hash - The hash to recover the address from.
|
|
64
|
+
* @param signature - The signature to recover the address from.
|
|
65
|
+
* @param opts - Recovery options.
|
|
66
|
+
* @returns The address if recovery succeeds, undefined otherwise.
|
|
67
|
+
*/ export function tryRecoverAddress(hash, signature, opts) {
|
|
68
|
+
try {
|
|
69
|
+
const publicKey = recoverPublicKey(hash, signature, opts);
|
|
70
|
+
return publicKeyToAddress(publicKey);
|
|
71
|
+
} catch {
|
|
72
|
+
return undefined;
|
|
49
73
|
}
|
|
50
74
|
}
|
|
51
75
|
/**
|
|
@@ -63,7 +87,7 @@ export function makeEthSignDigest(message) {
|
|
|
63
87
|
if (yParityOrV === 28) {
|
|
64
88
|
return 1;
|
|
65
89
|
}
|
|
66
|
-
throw new
|
|
90
|
+
throw new Secp256k1Error(`Invalid yParityOrV value ${yParityOrV}`);
|
|
67
91
|
}
|
|
68
92
|
/**
|
|
69
93
|
* Signs a message using ecdsa over the secp256k1 curve.
|
|
@@ -74,15 +98,73 @@ export function makeEthSignDigest(message) {
|
|
|
74
98
|
const { r, s, recovery } = secp256k1.sign(message.buffer, privateKey);
|
|
75
99
|
return new Signature(Buffer32.fromBigInt(r), Buffer32.fromBigInt(s), recovery ? 28 : 27);
|
|
76
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Flips an ECDSA signature.
|
|
103
|
+
* If the signature has a low s-value (s < CURVE.n/2), it flips it to high s-value (CURVE.n - s) and vice versa.
|
|
104
|
+
* Also flips the v value accordingly (27 <-> 28, or 0 <-> 1).
|
|
105
|
+
* This is useful for testing signature malleability handling.
|
|
106
|
+
* @param signature - The signature to flip.
|
|
107
|
+
* @returns A new signature with flipped s-value and v-value.
|
|
108
|
+
*/ export function flipSignature(signature) {
|
|
109
|
+
const { r, s, v } = signature;
|
|
110
|
+
const sig = new secp256k1.Signature(r.toBigInt(), s.toBigInt());
|
|
111
|
+
const flippedS = secp256k1.CURVE.n - sig.s;
|
|
112
|
+
return new Signature(r, Buffer32.fromBigInt(flippedS), flipV(v));
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Normalizes an ECDSA signature.
|
|
116
|
+
* If the signature has a high s-value (s >= CURVE.n/2), it flips it to low s-value (CURVE.n - s), and flips v accordingly.
|
|
117
|
+
* If the signature uses a recovery bit of 0/1, it is converted to a v-value 27/28 for ecrecover.
|
|
118
|
+
* @remarks This does not handle post EIP155 tx signatures which embed the chain id in v. Use it only for feeding into ECRECOVER precompiles.
|
|
119
|
+
* @param signature - The signature to normalize.
|
|
120
|
+
*/ export function normalizeSignature(signature) {
|
|
121
|
+
const { r, s, v } = signature;
|
|
122
|
+
const sig = new secp256k1.Signature(r.toBigInt(), s.toBigInt());
|
|
123
|
+
if (sig.hasHighS()) {
|
|
124
|
+
const newV = flipV(v);
|
|
125
|
+
const newS = sig.normalizeS().s;
|
|
126
|
+
return new Signature(r, Buffer32.fromBigInt(newS), toVFromYParityOrV(newV));
|
|
127
|
+
}
|
|
128
|
+
return new Signature(r, s, toVFromYParityOrV(v));
|
|
129
|
+
}
|
|
130
|
+
/** Converts a yParityOrV value to a pre-EIP155 v-value 27-28. */ function toVFromYParityOrV(yParityOrV) {
|
|
131
|
+
if (yParityOrV === 0 || yParityOrV === 1) {
|
|
132
|
+
return yParityOrV + 27;
|
|
133
|
+
} else if (yParityOrV === 27 || yParityOrV === 28) {
|
|
134
|
+
return yParityOrV;
|
|
135
|
+
} else {
|
|
136
|
+
throw new Secp256k1Error(`Invalid yParityOrV value ${yParityOrV}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** Flips the recovery bit or v-value */ function flipV(v) {
|
|
140
|
+
switch(v){
|
|
141
|
+
case 27:
|
|
142
|
+
return 28;
|
|
143
|
+
case 28:
|
|
144
|
+
return 27;
|
|
145
|
+
case 0:
|
|
146
|
+
return 1;
|
|
147
|
+
case 1:
|
|
148
|
+
return 0;
|
|
149
|
+
default:
|
|
150
|
+
throw new Secp256k1Error(`Invalid v value ${v}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
77
153
|
/**
|
|
78
154
|
* Recovers a public key from a hash and a signature.
|
|
79
155
|
* @param hash - The hash to recover the public key from.
|
|
80
156
|
* @param signature - The signature to recover the public key from.
|
|
81
157
|
* @returns The public key.
|
|
82
|
-
*/ export function recoverPublicKey(hash, signature) {
|
|
158
|
+
*/ export function recoverPublicKey(hash, signature, opts = {}) {
|
|
83
159
|
const { r, s, v } = signature;
|
|
160
|
+
if (!opts.allowYParityAsV && v !== 27 && v !== 28) {
|
|
161
|
+
throw new Secp256k1Error(`Invalid v value ${v} (expected 27 or 28)`);
|
|
162
|
+
}
|
|
84
163
|
const recoveryBit = toRecoveryBit(v);
|
|
85
164
|
const sig = new secp256k1.Signature(r.toBigInt(), s.toBigInt()).addRecoveryBit(recoveryBit);
|
|
165
|
+
if (!opts.allowMalleable && sig.hasHighS()) {
|
|
166
|
+
throw new Secp256k1Error('Signature has high s-value (malleable signature)');
|
|
167
|
+
}
|
|
86
168
|
const publicKey = sig.recoverPublicKey(hash.buffer).toHex(false);
|
|
87
169
|
return Buffer.from(publicKey, 'hex');
|
|
88
170
|
}
|
|
@@ -48,4 +48,4 @@ export declare function deserializeField(buf: Buffer, offset?: number): {
|
|
|
48
48
|
};
|
|
49
49
|
export declare function concatenateUint8Arrays(arrayOfUint8Arrays: Uint8Array[]): Uint8Array<ArrayBuffer>;
|
|
50
50
|
export {};
|
|
51
|
-
//# sourceMappingURL=
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3J5cHRvL3NlcmlhbGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWhDOzs7OztHQUtHO0FBQ0gsd0JBQWdCLDRCQUE0QixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsdUJBSXpEO0FBRUQ7O0dBRUc7QUFDSCxLQUFLLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FDdEIsR0FBRyxFQUFFLE1BQU0sRUFDWCxNQUFNLEVBQUUsTUFBTSxLQUNYO0lBQ0g7O09BRUc7SUFDSCxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ1I7O09BRUc7SUFDSCxHQUFHLEVBQUUsTUFBTSxDQUFDO0NBQ2IsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsd0JBQWdCLDBCQUEwQixDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFJOzs7RUFXdEc7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQixhQUFhLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLFNBQUksdUJBSXREO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBZ0IsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQUk7OztFQUd2RDtBQUVELHdCQUFnQixzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsMkJBU3RFIn0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '../../
|
|
1
|
+
import { Fr } from '../../curves/bn254/field.js';
|
|
2
2
|
import { type Bufferable } from '../../serialize/serialize.js';
|
|
3
3
|
import type { Hasher } from '../../trees/hasher.js';
|
|
4
4
|
export declare function sha256(data: Buffer): Buffer<ArrayBuffer>;
|
|
@@ -34,4 +34,4 @@ export declare class SHA256Trunc implements Hasher {
|
|
|
34
34
|
hash(lhs: Uint8Array, rhs: Uint8Array): Buffer<ArrayBuffer>;
|
|
35
35
|
hashInputs(inputs: Buffer[]): Buffer<ArrayBuffer>;
|
|
36
36
|
}
|
|
37
|
-
//# sourceMappingURL=
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vc2hhMjU2L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQXFCLE1BQU0sOEJBQThCLENBQUM7QUFDbEYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsd0JBQWdCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSx1QkFFbEM7QUFFRCx3QkFBZ0IsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLDJCQUV2QztBQUVELHdCQUFnQixhQUFhLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUcvQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCx3QkFBZ0IsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxHQUFHLFdBQVcsQ0F5RXRGO0FBNENEOzs7O0dBSUc7QUFDSCxxQkFBYSxNQUFPLFlBQVcsTUFBTTtJQUs1QixJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSx1QkFFM0M7SUFNTSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSx1QkFFakM7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCxxQkFBYSxXQUFZLFlBQVcsTUFBTTtJQUtqQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSx1QkFFM0M7SUFNTSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSx1QkFFakM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/sha256/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/sha256/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAEjD,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,8BAA8B,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,uBAElC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,2BAEvC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,MAG/C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW,CAyEtF;AA4CD;;;;GAIG;AACH,qBAAa,MAAO,YAAW,MAAM;IAK5B,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,uBAE3C;IAMM,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,uBAEjC;CACF;AAED;;;;GAIG;AACH,qBAAa,WAAY,YAAW,MAAM;IAKjC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,uBAE3C;IAMM,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,uBAEjC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable camelcase */ import { default as hash } from 'hash.js';
|
|
2
|
-
import { Fr } from '../../
|
|
2
|
+
import { Fr } from '../../curves/bn254/field.js';
|
|
3
3
|
import { truncateAndPad } from '../../serialize/free_funcs.js';
|
|
4
4
|
import { serializeToBuffer } from '../../serialize/serialize.js';
|
|
5
5
|
export function sha256(data) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type Bufferable } from '../../serialize/serialize.js';
|
|
2
|
-
export declare const sha512: (data: Buffer) => Buffer<ArrayBuffer>;
|
|
2
|
+
export declare const sha512: (data: Buffer<ArrayBufferLike>) => Buffer<ArrayBuffer>;
|
|
3
3
|
/**
|
|
4
4
|
* @dev We don't truncate in this function (unlike in sha256ToField) because this function is used in situations where
|
|
5
5
|
* we don't care only about collision resistance but we need the output to be uniformly distributed as well. This is
|
|
6
6
|
* because we use it as a pseudo-random function.
|
|
7
7
|
*/
|
|
8
|
-
export declare const sha512ToGrumpkinScalar: (data: Bufferable[]) => import("../../
|
|
9
|
-
//# sourceMappingURL=
|
|
8
|
+
export declare const sha512ToGrumpkinScalar: (data: Bufferable[]) => import("../../schemas/schemas.js").Fq;
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vc2hhNTEyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBcUIsTUFBTSw4QkFBOEIsQ0FBQztBQUVsRixlQUFPLE1BQU0sTUFBTSx3REFBcUUsQ0FBQztBQUV6Rjs7OztHQUlHO0FBQ0gsZUFBTyxNQUFNLHNCQUFzQiwrREFHbEMsQ0FBQyJ9
|