@aztec/foundation 0.76.4 → 0.77.0-testnet-ignition.21
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 -1
- package/dest/array/array.d.ts.map +1 -1
- package/dest/array/array.js +19 -26
- package/dest/array/index.js +0 -1
- package/dest/async-map/index.js +2 -4
- package/dest/async-pool/index.js +6 -9
- package/dest/bigint-buffer/index.js +6 -13
- package/dest/buffer/buffer32.d.ts +1 -1
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +53 -66
- package/dest/buffer/index.js +0 -1
- package/dest/collection/array.d.ts +1 -1
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +47 -59
- package/dest/collection/index.js +0 -1
- package/dest/collection/object.js +9 -9
- package/dest/committable/committable.js +15 -20
- package/dest/committable/index.js +0 -1
- package/dest/config/env_var.d.ts +1 -1
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/config/env_var.js +1 -2
- package/dest/config/index.d.ts +1 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +31 -36
- package/dest/crypto/aes128/index.d.ts +34 -0
- package/dest/crypto/aes128/index.d.ts.map +1 -0
- package/dest/crypto/aes128/index.js +49 -0
- package/dest/crypto/ecdsa/index.d.ts +39 -0
- package/dest/crypto/ecdsa/index.d.ts.map +1 -0
- package/dest/crypto/ecdsa/index.js +88 -0
- package/dest/crypto/ecdsa/signature.d.ts +71 -0
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
- package/dest/crypto/ecdsa/signature.js +92 -0
- package/dest/crypto/grumpkin/index.d.ts +47 -0
- package/dest/crypto/grumpkin/index.d.ts.map +1 -0
- package/dest/crypto/grumpkin/index.js +154 -0
- package/dest/crypto/index.d.ts +6 -0
- package/dest/crypto/index.d.ts.map +1 -1
- package/dest/crypto/index.js +6 -1
- package/dest/crypto/keccak/index.js +60 -69
- package/dest/crypto/keys/index.js +2 -3
- package/dest/crypto/pedersen/index.js +0 -1
- package/dest/crypto/pedersen/pedersen.elliptic.js +153 -146
- package/dest/crypto/pedersen/pedersen.noble.js +140 -142
- package/dest/crypto/pedersen/pedersen.wasm.js +17 -16
- package/dest/crypto/poseidon/index.js +15 -19
- package/dest/crypto/random/index.js +7 -12
- package/dest/crypto/random/randomness_singleton.js +12 -12
- package/dest/crypto/schnorr/index.d.ts +30 -0
- package/dest/crypto/schnorr/index.d.ts.map +1 -0
- package/dest/crypto/schnorr/index.js +68 -0
- package/dest/crypto/schnorr/signature.d.ts +70 -0
- package/dest/crypto/schnorr/signature.d.ts.map +1 -0
- package/dest/crypto/schnorr/signature.js +93 -0
- package/dest/crypto/secp256k1/index.d.ts +32 -0
- package/dest/crypto/secp256k1/index.d.ts.map +1 -0
- package/dest/crypto/secp256k1/index.js +116 -0
- package/dest/crypto/secp256k1-signer/index.js +0 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +2 -2
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.js +8 -9
- package/dest/crypto/secp256k1-signer/utils.js +11 -16
- package/dest/crypto/serialize.d.ts +53 -0
- package/dest/crypto/serialize.d.ts.map +1 -0
- package/dest/crypto/serialize.js +68 -0
- package/dest/crypto/sha256/index.js +80 -30
- package/dest/crypto/sha512/index.js +2 -4
- package/dest/crypto/signature/index.d.ts +19 -0
- package/dest/crypto/signature/index.d.ts.map +1 -0
- package/dest/crypto/signature/index.js +3 -0
- package/dest/crypto/sync/index.js +1 -2
- package/dest/crypto/sync/pedersen/index.js +14 -13
- package/dest/crypto/sync/poseidon/index.js +10 -14
- package/dest/decorators/index.js +0 -1
- package/dest/decorators/memoize.js +1 -2
- package/dest/error/index.js +6 -19
- package/dest/eth-address/index.js +92 -113
- package/dest/eth-signature/eth_signature.js +21 -27
- package/dest/eth-signature/index.js +0 -1
- package/dest/fields/coordinate.d.ts +1 -1
- package/dest/fields/coordinate.d.ts.map +1 -1
- package/dest/fields/coordinate.js +47 -46
- package/dest/fields/fields.d.ts.map +1 -1
- package/dest/fields/fields.js +112 -126
- package/dest/fields/index.js +0 -1
- package/dest/fields/point.js +119 -129
- package/dest/fs/index.js +0 -1
- package/dest/fs/run_in_dir.d.ts +1 -1
- package/dest/fs/run_in_dir.d.ts.map +1 -1
- package/dest/fs/run_in_dir.js +16 -7
- package/dest/index.d.ts +0 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +0 -3
- package/dest/iterable/all.js +3 -4
- package/dest/iterable/filter.js +10 -11
- package/dest/iterable/index.js +0 -1
- package/dest/iterable/isAsyncIt.js +1 -3
- package/dest/iterable/map.js +10 -11
- package/dest/iterable/peek.js +14 -14
- package/dest/iterable/sort.js +4 -5
- package/dest/iterable/take.js +6 -7
- package/dest/iterable/toArray.js +1 -2
- package/dest/jest/setup.js +7 -0
- package/dest/json-rpc/client/fetch.js +25 -20
- package/dest/json-rpc/client/index.js +0 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +20 -9
- package/dest/json-rpc/client/undici.d.ts +1 -1
- package/dest/json-rpc/client/undici.d.ts.map +1 -1
- package/dest/json-rpc/client/undici.js +16 -17
- package/dest/json-rpc/convert.d.ts +1 -1
- package/dest/json-rpc/convert.d.ts.map +1 -1
- package/dest/json-rpc/convert.js +10 -20
- package/dest/json-rpc/fixtures/class_a.js +8 -5
- package/dest/json-rpc/fixtures/class_b.js +8 -5
- package/dest/json-rpc/fixtures/test_state.js +53 -40
- package/dest/json-rpc/index.js +0 -1
- package/dest/json-rpc/js_utils.js +2 -5
- package/dest/json-rpc/server/index.js +0 -1
- package/dest/json-rpc/server/safe_json_rpc_server.js +145 -101
- package/dest/json-rpc/server/telemetry.js +0 -2
- package/dest/json-rpc/test/index.js +0 -1
- package/dest/json-rpc/test/integration.d.ts +1 -1
- package/dest/json-rpc/test/integration.d.ts.map +1 -1
- package/dest/json-rpc/test/integration.js +11 -5
- package/dest/log/console.d.ts +1 -1
- package/dest/log/console.d.ts.map +1 -1
- package/dest/log/console.js +14 -16
- package/dest/log/debug.d.ts +1 -1
- package/dest/log/debug.d.ts.map +1 -1
- package/dest/log/debug.js +9 -18
- package/dest/log/gcloud-logger-config.js +17 -15
- package/dest/log/index.d.ts +1 -0
- package/dest/log/index.d.ts.map +1 -1
- package/dest/log/index.js +1 -1
- package/dest/log/libp2p_logger.d.ts +7 -0
- package/dest/log/libp2p_logger.d.ts.map +1 -0
- package/dest/log/libp2p_logger.js +55 -0
- package/dest/log/log-filters.js +14 -13
- package/dest/log/log-levels.js +10 -2
- package/dest/log/log_fn.js +1 -2
- package/dest/log/log_history.js +21 -25
- package/dest/log/pino-logger.d.ts +8 -4
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +92 -74
- package/dest/message/index.js +7 -3
- package/dest/mutex/index.d.ts +1 -1
- package/dest/mutex/index.d.ts.map +1 -1
- package/dest/mutex/index.js +34 -32
- package/dest/mutex/mutex_database.js +4 -2
- package/dest/noir/index.js +0 -1
- package/dest/noir/noir_package_config.js +13 -8
- package/dest/promise/index.js +0 -1
- package/dest/promise/running-promise.d.ts +8 -2
- package/dest/promise/running-promise.d.ts.map +1 -1
- package/dest/promise/running-promise.js +44 -31
- package/dest/promise/utils.js +3 -5
- package/dest/queue/base_memory_queue.js +51 -59
- package/dest/queue/batch_queue.js +34 -27
- package/dest/queue/bounded_serial_queue.js +41 -51
- package/dest/queue/fifo_memory_queue.d.ts +1 -1
- package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
- package/dest/queue/fifo_memory_queue.js +4 -8
- package/dest/queue/index.js +0 -1
- package/dest/queue/priority_memory_queue.js +3 -4
- package/dest/queue/priority_queue.js +5 -5
- package/dest/queue/semaphore.js +15 -19
- package/dest/queue/serial_queue.js +37 -47
- package/dest/retry/index.js +21 -18
- package/dest/running-promise/index.js +0 -1
- package/dest/schemas/api.d.ts +2 -2
- package/dest/schemas/api.d.ts.map +1 -1
- package/dest/schemas/api.js +2 -7
- package/dest/schemas/index.d.ts +1 -1
- package/dest/schemas/index.d.ts.map +1 -1
- package/dest/schemas/index.js +1 -2
- package/dest/schemas/parse.js +4 -8
- package/dest/schemas/schemas.d.ts +1 -16
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +28 -56
- package/dest/schemas/types.d.ts +1 -1
- package/dest/schemas/types.d.ts.map +1 -1
- package/dest/schemas/types.js +1 -2
- package/dest/schemas/utils.d.ts +1 -1
- package/dest/schemas/utils.d.ts.map +1 -1
- package/dest/schemas/utils.js +18 -31
- package/dest/serialize/buffer_reader.d.ts +1 -1
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +164 -188
- package/dest/serialize/field_reader.d.ts +1 -1
- package/dest/serialize/field_reader.d.ts.map +1 -1
- package/dest/serialize/field_reader.js +70 -79
- package/dest/serialize/free_funcs.d.ts +1 -1
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +40 -37
- package/dest/serialize/index.js +0 -1
- package/dest/serialize/serialize.js +72 -83
- package/dest/serialize/type_registry.js +10 -14
- package/dest/serialize/types.js +4 -5
- package/dest/sleep/index.js +25 -29
- package/dest/string/index.js +0 -1
- package/dest/testing/files/index.js +3 -7
- package/dest/testing/index.js +0 -1
- package/dest/testing/port_allocator.js +7 -10
- package/dest/testing/snapshot_serializer.d.ts +1 -1
- package/dest/testing/snapshot_serializer.d.ts.map +1 -1
- package/dest/testing/snapshot_serializer.js +14 -9
- package/dest/testing/test_data.js +7 -8
- package/dest/timer/date.js +9 -7
- package/dest/timer/elapsed.js +10 -7
- package/dest/timer/index.js +0 -1
- package/dest/timer/timeout.js +34 -34
- package/dest/timer/timer.js +17 -21
- package/dest/transport/browser/index.js +0 -1
- package/dest/transport/browser/message_port_socket.d.ts +1 -1
- package/dest/transport/browser/message_port_socket.d.ts.map +1 -1
- package/dest/transport/browser/message_port_socket.js +26 -30
- package/dest/transport/browser/shared_worker_connector.d.ts +1 -1
- package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -1
- package/dest/transport/browser/shared_worker_connector.js +8 -10
- package/dest/transport/browser/shared_worker_listener.d.ts +1 -1
- package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -1
- package/dest/transport/browser/shared_worker_listener.js +13 -17
- package/dest/transport/browser/worker_connector.d.ts +1 -1
- package/dest/transport/browser/worker_connector.d.ts.map +1 -1
- package/dest/transport/browser/worker_connector.js +12 -12
- package/dest/transport/browser/worker_listener.d.ts +1 -1
- package/dest/transport/browser/worker_listener.d.ts.map +1 -1
- package/dest/transport/browser/worker_listener.js +13 -17
- package/dest/transport/dispatch/create_dispatch_fn.js +2 -4
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +2 -2
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
- package/dest/transport/dispatch/create_dispatch_proxy.js +16 -13
- package/dest/transport/dispatch/messages.js +4 -3
- package/dest/transport/index.js +0 -1
- package/dest/transport/interface/connector.d.ts +1 -1
- package/dest/transport/interface/connector.d.ts.map +1 -1
- package/dest/transport/interface/connector.js +3 -2
- package/dest/transport/interface/listener.d.ts +1 -1
- package/dest/transport/interface/listener.d.ts.map +1 -1
- package/dest/transport/interface/listener.js +4 -2
- package/dest/transport/interface/socket.js +7 -2
- package/dest/transport/interface/transferable.js +7 -9
- package/dest/transport/node/index.js +0 -1
- package/dest/transport/node/node_connector.d.ts +2 -2
- package/dest/transport/node/node_connector.d.ts.map +1 -1
- package/dest/transport/node/node_connector.js +9 -11
- package/dest/transport/node/node_connector_socket.d.ts +2 -2
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
- package/dest/transport/node/node_connector_socket.js +21 -25
- 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.js +11 -15
- package/dest/transport/node/node_listener_socket.d.ts +2 -2
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
- package/dest/transport/node/node_listener_socket.js +23 -27
- package/dest/transport/transport_client.d.ts +1 -1
- package/dest/transport/transport_client.d.ts.map +1 -1
- package/dest/transport/transport_client.js +47 -46
- package/dest/transport/transport_server.d.ts +1 -1
- package/dest/transport/transport_server.d.ts.map +1 -1
- package/dest/transport/transport_server.js +68 -55
- package/dest/trees/hasher.d.ts +39 -0
- package/dest/trees/hasher.d.ts.map +1 -0
- package/dest/trees/hasher.js +5 -0
- package/dest/trees/index.d.ts +8 -56
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +8 -1
- package/dest/trees/indexed_merkle_tree.d.ts +13 -0
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
- package/dest/trees/indexed_merkle_tree.js +27 -0
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +23 -0
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/indexed_merkle_tree_calculator.js +83 -0
- package/dest/trees/indexed_tree_leaf.d.ts +57 -0
- package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
- package/dest/trees/indexed_tree_leaf.js +5 -0
- package/dest/trees/membership_witness.d.ts +62 -0
- package/dest/trees/membership_witness.d.ts.map +1 -0
- package/dest/trees/membership_witness.js +70 -0
- package/dest/trees/merkle_tree.d.ts +18 -0
- package/dest/trees/merkle_tree.d.ts.map +1 -0
- package/dest/trees/merkle_tree.js +58 -0
- package/dest/trees/merkle_tree_calculator.d.ts +16 -0
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/merkle_tree_calculator.js +61 -0
- package/dest/trees/sibling_path.d.ts +132 -0
- package/dest/trees/sibling_path.d.ts.map +1 -0
- package/dest/trees/sibling_path.js +144 -0
- package/dest/trees/unbalanced_merkle_tree.d.ts +1 -1
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree.js +28 -18
- package/dest/trees/unbalanced_tree_store.js +43 -29
- package/dest/types/index.js +1 -3
- package/dest/url/index.js +4 -8
- package/dest/validation/index.js +2 -5
- package/dest/wasm/empty_wasi_sdk.js +142 -160
- package/dest/wasm/index.d.ts +1 -1
- package/dest/wasm/index.d.ts.map +1 -1
- package/dest/wasm/index.js +0 -1
- package/dest/wasm/wasm_module.js +80 -90
- package/dest/worker/browser/index.js +0 -1
- package/dest/worker/browser/start_web_module.d.ts +1 -1
- package/dest/worker/browser/start_web_module.d.ts.map +1 -1
- package/dest/worker/browser/start_web_module.js +9 -5
- package/dest/worker/browser/web_data_store.d.ts +1 -1
- package/dest/worker/browser/web_data_store.d.ts.map +1 -1
- package/dest/worker/browser/web_data_store.js +12 -15
- package/dest/worker/browser/web_worker.d.ts +1 -1
- package/dest/worker/browser/web_worker.d.ts.map +1 -1
- package/dest/worker/browser/web_worker.js +6 -5
- package/dest/worker/data_store.js +3 -2
- package/dest/worker/index.d.ts +1 -1
- package/dest/worker/index.d.ts.map +1 -1
- package/dest/worker/index.js +0 -1
- package/dest/worker/node/index.js +0 -1
- package/dest/worker/node/node_data_store.d.ts +1 -1
- package/dest/worker/node/node_data_store.d.ts.map +1 -1
- package/dest/worker/node/node_data_store.js +4 -5
- package/dest/worker/node/node_worker.d.ts +1 -1
- package/dest/worker/node/node_worker.d.ts.map +1 -1
- package/dest/worker/node/node_worker.js +6 -5
- package/dest/worker/node/start_node_module.d.ts +1 -1
- package/dest/worker/node/start_node_module.d.ts.map +1 -1
- package/dest/worker/node/start_node_module.js +9 -5
- package/dest/worker/wasm_worker.d.ts +2 -2
- package/dest/worker/wasm_worker.d.ts.map +1 -1
- package/dest/worker/wasm_worker.js +3 -2
- package/dest/worker/worker_pool.d.ts +1 -1
- package/dest/worker/worker_pool.d.ts.map +1 -1
- package/dest/worker/worker_pool.js +32 -43
- package/package.json +5 -5
- package/src/array/array.ts +1 -1
- package/src/buffer/buffer32.ts +1 -1
- package/src/collection/array.ts +1 -1
- package/src/config/env_var.ts +7 -5
- package/src/config/index.ts +1 -1
- package/src/crypto/aes128/index.ts +59 -0
- package/src/crypto/ecdsa/index.ts +70 -0
- package/src/crypto/ecdsa/signature.ts +100 -0
- package/src/crypto/grumpkin/index.ts +97 -0
- package/src/crypto/index.ts +6 -0
- package/src/crypto/keys/index.ts +1 -1
- package/src/crypto/pedersen/pedersen.wasm.ts +3 -3
- package/src/crypto/poseidon/index.ts +5 -5
- package/src/crypto/schnorr/index.ts +55 -0
- package/src/crypto/schnorr/signature.ts +116 -0
- package/src/crypto/secp256k1/index.ts +57 -0
- package/src/crypto/secp256k1-signer/secp256k1_signer.ts +2 -2
- package/src/crypto/serialize.ts +85 -0
- package/src/crypto/signature/index.ts +17 -0
- package/src/crypto/sync/index.ts +1 -1
- package/src/fields/coordinate.ts +1 -1
- package/src/fields/fields.ts +2 -1
- package/src/fs/run_in_dir.ts +8 -1
- package/src/index.ts +0 -2
- package/src/json-rpc/client/undici.ts +1 -1
- package/src/json-rpc/convert.ts +1 -1
- package/src/json-rpc/server/safe_json_rpc_server.ts +1 -1
- package/src/json-rpc/test/integration.ts +1 -1
- package/src/log/console.ts +1 -1
- package/src/log/debug.ts +1 -1
- package/src/log/gcloud-logger-config.ts +1 -1
- package/src/log/index.ts +1 -0
- package/src/log/libp2p_logger.ts +67 -0
- package/src/log/pino-logger.ts +16 -16
- package/src/mutex/index.ts +1 -1
- package/src/promise/running-promise.ts +24 -5
- package/src/queue/fifo_memory_queue.ts +1 -1
- package/src/schemas/api.ts +2 -2
- package/src/schemas/index.ts +1 -1
- package/src/schemas/schemas.ts +2 -26
- package/src/schemas/types.ts +1 -1
- package/src/schemas/utils.ts +1 -1
- package/src/serialize/buffer_reader.ts +1 -1
- package/src/serialize/field_reader.ts +1 -1
- package/src/serialize/free_funcs.ts +1 -1
- package/src/testing/snapshot_serializer.ts +1 -1
- package/src/transport/browser/message_port_socket.ts +1 -1
- package/src/transport/browser/shared_worker_connector.ts +1 -1
- package/src/transport/browser/shared_worker_listener.ts +1 -1
- package/src/transport/browser/worker_connector.ts +1 -1
- package/src/transport/browser/worker_listener.ts +1 -1
- package/src/transport/dispatch/create_dispatch_proxy.ts +2 -2
- package/src/transport/interface/connector.ts +1 -1
- package/src/transport/interface/listener.ts +1 -1
- package/src/transport/node/node_connector.ts +2 -2
- package/src/transport/node/node_connector_socket.ts +2 -2
- package/src/transport/node/node_listener.ts +1 -1
- package/src/transport/node/node_listener_socket.ts +2 -2
- package/src/transport/transport_client.ts +2 -2
- package/src/transport/transport_server.ts +3 -3
- package/src/trees/hasher.ts +39 -0
- package/src/trees/index.ts +8 -57
- package/src/trees/indexed_merkle_tree.ts +36 -0
- package/src/trees/indexed_merkle_tree_calculator.ts +94 -0
- package/src/trees/indexed_tree_leaf.ts +56 -0
- package/src/trees/membership_witness.ts +99 -0
- package/src/trees/merkle_tree.ts +72 -0
- package/src/trees/merkle_tree_calculator.ts +67 -0
- package/src/trees/sibling_path.ts +183 -0
- package/src/trees/unbalanced_merkle_tree.ts +2 -2
- package/src/wasm/index.ts +1 -1
- package/src/worker/browser/start_web_module.ts +1 -1
- package/src/worker/browser/web_data_store.ts +1 -1
- package/src/worker/browser/web_worker.ts +1 -1
- package/src/worker/index.ts +1 -1
- package/src/worker/node/node_data_store.ts +1 -1
- package/src/worker/node/node_worker.ts +1 -1
- package/src/worker/node/start_node_module.ts +1 -1
- package/src/worker/wasm_worker.ts +2 -2
- package/src/worker/worker_pool.ts +1 -1
- package/dest/abi/abi.d.ts +0 -853
- package/dest/abi/abi.d.ts.map +0 -1
- package/dest/abi/abi.js +0 -214
- package/dest/abi/buffer.d.ts +0 -18
- package/dest/abi/buffer.d.ts.map +0 -1
- package/dest/abi/buffer.js +0 -34
- package/dest/abi/decoder.d.ts +0 -58
- package/dest/abi/decoder.d.ts.map +0 -1
- package/dest/abi/decoder.js +0 -180
- package/dest/abi/encoder.d.ts +0 -16
- package/dest/abi/encoder.d.ts.map +0 -1
- package/dest/abi/encoder.js +0 -174
- package/dest/abi/event_selector.d.ts +0 -52
- package/dest/abi/event_selector.d.ts.map +0 -1
- package/dest/abi/event_selector.js +0 -76
- package/dest/abi/function_selector.d.ts +0 -65
- package/dest/abi/function_selector.d.ts.map +0 -1
- package/dest/abi/function_selector.js +0 -92
- package/dest/abi/index.d.ts +0 -10
- package/dest/abi/index.d.ts.map +0 -1
- package/dest/abi/index.js +0 -10
- package/dest/abi/note_selector.d.ts +0 -42
- package/dest/abi/note_selector.d.ts.map +0 -1
- package/dest/abi/note_selector.js +0 -63
- package/dest/abi/selector.d.ts +0 -42
- package/dest/abi/selector.d.ts.map +0 -1
- package/dest/abi/selector.js +0 -57
- package/dest/abi/u128.d.ts +0 -13
- package/dest/abi/u128.d.ts.map +0 -1
- package/dest/abi/u128.js +0 -58
- package/dest/abi/utils.d.ts +0 -44
- package/dest/abi/utils.d.ts.map +0 -1
- package/dest/abi/utils.js +0 -72
- package/dest/aztec-address/index.d.ts +0 -57
- package/dest/aztec-address/index.d.ts.map +0 -1
- package/dest/aztec-address/index.js +0 -114
- package/src/abi/abi.ts +0 -504
- package/src/abi/buffer.ts +0 -36
- package/src/abi/decoder.ts +0 -195
- package/src/abi/encoder.ts +0 -170
- package/src/abi/event_selector.ts +0 -92
- package/src/abi/function_selector.ts +0 -124
- package/src/abi/index.ts +0 -9
- package/src/abi/note_selector.ts +0 -78
- package/src/abi/selector.ts +0 -64
- package/src/abi/u128.ts +0 -71
- package/src/abi/utils.ts +0 -86
- package/src/aztec-address/index.ts +0 -146
|
@@ -4,37 +4,38 @@ import { serializeToFields } from '../../serialize/serialize.js';
|
|
|
4
4
|
/**
|
|
5
5
|
* Create a pedersen commitment (point) from an array of input fields.
|
|
6
6
|
* Left pads any inputs less than 32 bytes.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
if (!input.every(i => i.length <= 32)) {
|
|
7
|
+
*/ export async function pedersenCommit(input, offset = 0) {
|
|
8
|
+
if (!input.every((i)=>i.length <= 32)) {
|
|
10
9
|
throw new Error('All Pedersen Commit input buffers must be <= 32 bytes.');
|
|
11
10
|
}
|
|
12
|
-
input = input.map(i
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
input = input.map((i)=>i.length < 32 ? Buffer.concat([
|
|
12
|
+
Buffer.alloc(32 - i.length, 0),
|
|
13
|
+
i
|
|
14
|
+
]) : i);
|
|
15
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
16
|
+
const point = api.pedersenCommit(input.map((i)=>new FrBarretenberg(i)), offset);
|
|
15
17
|
// toBuffer returns Uint8Arrays (browser/worker-boundary friendly).
|
|
16
18
|
// TODO: rename toTypedArray()?
|
|
17
|
-
return [
|
|
19
|
+
return [
|
|
20
|
+
Buffer.from(point.x.toBuffer()),
|
|
21
|
+
Buffer.from(point.y.toBuffer())
|
|
22
|
+
];
|
|
18
23
|
}
|
|
19
24
|
/**
|
|
20
25
|
* Create a pedersen hash (field) from an array of input fields.
|
|
21
26
|
* @param input - The input fieldables to hash.
|
|
22
27
|
* @param index - The separator index to use for the hash.
|
|
23
28
|
* @returns The pedersen hash.
|
|
24
|
-
*/
|
|
25
|
-
export async function pedersenHash(input, index = 0) {
|
|
29
|
+
*/ export async function pedersenHash(input, index = 0) {
|
|
26
30
|
const inputFields = serializeToFields(input);
|
|
27
|
-
const api = await BarretenbergSync.initSingleton();
|
|
28
|
-
const hash = api.pedersenHash(inputFields.map(i
|
|
29
|
-
index);
|
|
31
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
32
|
+
const hash = api.pedersenHash(inputFields.map((i)=>new FrBarretenberg(i.toBuffer())), index);
|
|
30
33
|
return Fr.fromBuffer(Buffer.from(hash.toBuffer()));
|
|
31
34
|
}
|
|
32
35
|
/**
|
|
33
36
|
* Create a pedersen hash from an arbitrary length buffer.
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
const api = await BarretenbergSync.initSingleton();
|
|
37
|
+
*/ export async function pedersenHashBuffer(input, index = 0) {
|
|
38
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
37
39
|
const result = api.pedersenHashBuffer(input, index);
|
|
38
40
|
return Buffer.from(result.toBuffer());
|
|
39
41
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVkZXJzZW4ud2FzbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vcGVkZXJzZW4vcGVkZXJzZW4ud2FzbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUMsT0FBTyxFQUFrQixpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLEtBQWUsRUFBRSxNQUFNLEdBQUcsQ0FBQztJQUM5RCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRyxNQUFNLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25ELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQzlCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNyQyxNQUFNLENBQ1AsQ0FBQztJQUNGLG1FQUFtRTtJQUNuRSwrQkFBK0I7SUFDL0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQUMsS0FBa0IsRUFBRSxLQUFLLEdBQUcsQ0FBQztJQUM5RCxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxNQUFNLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25ELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQzNCLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLDZDQUE2QztJQUNyRyxLQUFLLENBQ04sQ0FBQztJQUNGLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxLQUFhLEVBQUUsS0FBSyxHQUFHLENBQUM7SUFDL0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDIn0=
|
|
@@ -5,11 +5,10 @@ import { serializeToFields } from '../../serialize/serialize.js';
|
|
|
5
5
|
* Create a poseidon hash (field) from an array of input fields.
|
|
6
6
|
* @param input - The input fields to hash.
|
|
7
7
|
* @returns The poseidon hash.
|
|
8
|
-
*/
|
|
9
|
-
export async function poseidon2Hash(input) {
|
|
8
|
+
*/ export async function poseidon2Hash(input) {
|
|
10
9
|
const inputFields = serializeToFields(input);
|
|
11
|
-
const api = await BarretenbergSync.initSingleton();
|
|
12
|
-
const hash = api.poseidon2Hash(inputFields.map(i
|
|
10
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
11
|
+
const hash = api.poseidon2Hash(inputFields.map((i)=>new FrBarretenberg(i.toBuffer())));
|
|
13
12
|
return Fr.fromBuffer(Buffer.from(hash.toBuffer()));
|
|
14
13
|
}
|
|
15
14
|
/**
|
|
@@ -17,46 +16,43 @@ export async function poseidon2Hash(input) {
|
|
|
17
16
|
* @param input - The input fields to hash.
|
|
18
17
|
* @param separator - The domain separator.
|
|
19
18
|
* @returns The poseidon hash.
|
|
20
|
-
*/
|
|
21
|
-
export async function poseidon2HashWithSeparator(input, separator) {
|
|
19
|
+
*/ export async function poseidon2HashWithSeparator(input, separator) {
|
|
22
20
|
const inputFields = serializeToFields(input);
|
|
23
21
|
inputFields.unshift(new Fr(separator));
|
|
24
|
-
const api = await BarretenbergSync.initSingleton();
|
|
25
|
-
const hash = api.poseidon2Hash(inputFields.map(i
|
|
22
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
23
|
+
const hash = api.poseidon2Hash(inputFields.map((i)=>new FrBarretenberg(i.toBuffer())));
|
|
26
24
|
return Fr.fromBuffer(Buffer.from(hash.toBuffer()));
|
|
27
25
|
}
|
|
28
26
|
export async function poseidon2HashAccumulate(input) {
|
|
29
27
|
const inputFields = serializeToFields(input);
|
|
30
|
-
const api = await BarretenbergSync.initSingleton();
|
|
31
|
-
const result = api.poseidon2HashAccumulate(inputFields.map(i
|
|
28
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
29
|
+
const result = api.poseidon2HashAccumulate(inputFields.map((i)=>new FrBarretenberg(i.toBuffer())));
|
|
32
30
|
return Fr.fromBuffer(Buffer.from(result.toBuffer()));
|
|
33
31
|
}
|
|
34
32
|
/**
|
|
35
33
|
* Runs a Poseidon2 permutation.
|
|
36
34
|
* @param input the input state. Expected to be of size 4.
|
|
37
35
|
* @returns the output state, size 4.
|
|
38
|
-
*/
|
|
39
|
-
export async function poseidon2Permutation(input) {
|
|
36
|
+
*/ export async function poseidon2Permutation(input) {
|
|
40
37
|
const inputFields = serializeToFields(input);
|
|
41
38
|
// We'd like this assertion but it's not possible to use it in the browser.
|
|
42
39
|
// assert(input.length === 4, 'Input state must be of size 4');
|
|
43
|
-
const api = await BarretenbergSync.initSingleton();
|
|
44
|
-
const res = api.poseidon2Permutation(inputFields.map(i
|
|
40
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
41
|
+
const res = api.poseidon2Permutation(inputFields.map((i)=>new FrBarretenberg(i.toBuffer())));
|
|
45
42
|
// We'd like this assertion but it's not possible to use it in the browser.
|
|
46
43
|
// assert(res.length === 4, 'Output state must be of size 4');
|
|
47
|
-
return res.map(o
|
|
44
|
+
return res.map((o)=>Fr.fromBuffer(Buffer.from(o.toBuffer())));
|
|
48
45
|
}
|
|
49
46
|
export async function poseidon2HashBytes(input) {
|
|
50
47
|
const inputFields = [];
|
|
51
|
-
for
|
|
48
|
+
for(let i = 0; i < input.length; i += 31){
|
|
52
49
|
const fieldBytes = Buffer.alloc(32, 0);
|
|
53
50
|
input.slice(i, i + 31).copy(fieldBytes);
|
|
54
51
|
// Noir builds the bytes as little-endian, so we need to reverse them.
|
|
55
52
|
fieldBytes.reverse();
|
|
56
53
|
inputFields.push(Fr.fromBuffer(fieldBytes));
|
|
57
54
|
}
|
|
58
|
-
const api = await BarretenbergSync.initSingleton();
|
|
59
|
-
const res = api.poseidon2Hash(inputFields.map(i
|
|
55
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
56
|
+
const res = api.poseidon2Hash(inputFields.map((i)=>new FrBarretenberg(i.toBuffer())));
|
|
60
57
|
return Fr.fromBuffer(Buffer.from(res.toBuffer()));
|
|
61
58
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3J5cHRvL3Bvc2VpZG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLElBQUksY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFakY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUFDLEtBQWtCO0lBQ3BELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLE1BQU0sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FDNUIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQ3ZELENBQUM7SUFDRixPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsMEJBQTBCLENBQUMsS0FBa0IsRUFBRSxTQUFpQjtJQUNwRixNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsTUFBTSxHQUFHLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUVuRCxN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
|
|
@@ -4,7 +4,7 @@ import { RandomnessSingleton } from './randomness_singleton.js';
|
|
|
4
4
|
// limit of Crypto.getRandomValues()
|
|
5
5
|
// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues
|
|
6
6
|
const MAX_BYTES = 65536;
|
|
7
|
-
const getWebCrypto = ()
|
|
7
|
+
const getWebCrypto = ()=>{
|
|
8
8
|
if (typeof window !== 'undefined' && window.crypto) {
|
|
9
9
|
return window.crypto;
|
|
10
10
|
}
|
|
@@ -13,7 +13,7 @@ const getWebCrypto = () => {
|
|
|
13
13
|
}
|
|
14
14
|
return undefined;
|
|
15
15
|
};
|
|
16
|
-
export const randomBytes = (len)
|
|
16
|
+
export const randomBytes = (len)=>{
|
|
17
17
|
const singleton = RandomnessSingleton.getInstance();
|
|
18
18
|
if (singleton.isDeterministic()) {
|
|
19
19
|
return singleton.getBytes(len);
|
|
@@ -29,13 +29,12 @@ export const randomBytes = (len) => {
|
|
|
29
29
|
if (len > MAX_BYTES) {
|
|
30
30
|
// this is the max bytes crypto.getRandomValues
|
|
31
31
|
// can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
|
|
32
|
-
for
|
|
32
|
+
for(let generated = 0; generated < len; generated += MAX_BYTES){
|
|
33
33
|
// buffer.slice automatically checks if the end is past the end of
|
|
34
34
|
// the buffer so we don't have to here
|
|
35
35
|
crypto.getRandomValues(buf.slice(generated, generated + MAX_BYTES));
|
|
36
36
|
}
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
37
|
+
} else {
|
|
39
38
|
crypto.getRandomValues(buf);
|
|
40
39
|
}
|
|
41
40
|
return buf;
|
|
@@ -46,8 +45,7 @@ export const randomBytes = (len) => {
|
|
|
46
45
|
* @returns A random integer.
|
|
47
46
|
*
|
|
48
47
|
* TODO(#3949): This is insecure as it's modulo biased. Nuke or safeguard before mainnet.
|
|
49
|
-
*/
|
|
50
|
-
export const randomInt = (max) => {
|
|
48
|
+
*/ export const randomInt = (max)=>{
|
|
51
49
|
const randomBuffer = randomBytes(6); // Generate a buffer of 6 random bytes.
|
|
52
50
|
const randomInt = parseInt(randomBuffer.toString('hex'), 16); // Convert buffer to a large integer.
|
|
53
51
|
return randomInt % max; // Use modulo to ensure the result is less than max.
|
|
@@ -58,8 +56,7 @@ export const randomInt = (max) => {
|
|
|
58
56
|
* @returns A random bigint.
|
|
59
57
|
*
|
|
60
58
|
* TODO(#3949): This is insecure as it's modulo biased. Nuke or safeguard before mainnet.
|
|
61
|
-
*/
|
|
62
|
-
export const randomBigInt = (max) => {
|
|
59
|
+
*/ export const randomBigInt = (max)=>{
|
|
63
60
|
const randomBuffer = randomBytes(8); // Generate a buffer of 8 random bytes.
|
|
64
61
|
const randomBigInt = BigInt(`0x${randomBuffer.toString('hex')}`); // Convert buffer to a large integer.
|
|
65
62
|
return randomBigInt % max; // Use modulo to ensure the result is less than max.
|
|
@@ -67,9 +64,7 @@ export const randomBigInt = (max) => {
|
|
|
67
64
|
/**
|
|
68
65
|
* Generate a random boolean value.
|
|
69
66
|
* @returns A random boolean value.
|
|
70
|
-
*/
|
|
71
|
-
export const randomBoolean = () => {
|
|
67
|
+
*/ export const randomBoolean = ()=>{
|
|
72
68
|
const randomByte = randomBytes(1)[0]; // Generate a single random byte.
|
|
73
69
|
return randomByte % 2 === 0; // Use modulo to determine if the byte is even or odd.
|
|
74
70
|
};
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3J5cHRvL3JhbmRvbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFVBQVUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWhFLG9DQUFvQztBQUNwQywwRUFBMEU7QUFDMUUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBRXhCLE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRTtJQUN4QixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUN6QyxNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUVwRCxJQUFJLFNBQVMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLElBQUksR0FBRyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ3BCLCtDQUErQztRQUMvQyxvR0FBb0c7UUFDcEcsS0FBSyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLEdBQUcsRUFBRSxTQUFTLElBQUksU0FBUyxFQUFFLENBQUM7WUFDaEUsa0VBQWtFO1lBQ2xFLHNDQUFzQztZQUN0QyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7SUFDdkMsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsdUNBQXVDO0lBQzVFLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMscUNBQXFDO0lBQ25HLE9BQU8sU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDLG9EQUFvRDtBQUM5RSxDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUMxQyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUM7SUFDNUUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxxQ0FBcUM7SUFDdkcsT0FBTyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsb0RBQW9EO0FBQ2pGLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDaEMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO0lBQ3ZFLE9BQU8sVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxzREFBc0Q7QUFDckYsQ0FBQyxDQUFDIn0=
|
|
@@ -6,17 +6,19 @@ import { createLogger } from '../../log/pino-logger.js';
|
|
|
6
6
|
* @remarks This class was implemented so that tests can be run deterministically.
|
|
7
7
|
*
|
|
8
8
|
* TODO(#3949): This is not safe enough for production and should be made safer or removed before mainnet.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
*/ export class RandomnessSingleton {
|
|
10
|
+
seed;
|
|
11
|
+
log;
|
|
12
|
+
static instance;
|
|
13
|
+
counter;
|
|
14
|
+
constructor(seed, log = createLogger('foundation:randomness_singleton')){
|
|
12
15
|
this.seed = seed;
|
|
13
16
|
this.log = log;
|
|
14
17
|
this.counter = 0;
|
|
15
18
|
if (seed !== undefined) {
|
|
16
19
|
this.log.debug(`Using pseudo-randomness with seed: ${seed}`);
|
|
17
20
|
this.counter = seed;
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
21
|
+
} else {
|
|
20
22
|
this.log.debug('Using true randomness');
|
|
21
23
|
}
|
|
22
24
|
}
|
|
@@ -28,10 +30,9 @@ export class RandomnessSingleton {
|
|
|
28
30
|
return RandomnessSingleton.instance;
|
|
29
31
|
}
|
|
30
32
|
/**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
isDeterministic() {
|
|
33
|
+
* Indicates whether the generator is deterministic (was seeded) or not.
|
|
34
|
+
* @returns Whether the generator is deterministic.
|
|
35
|
+
*/ isDeterministic() {
|
|
35
36
|
return this.seed !== undefined;
|
|
36
37
|
}
|
|
37
38
|
getBytes(length) {
|
|
@@ -43,13 +44,12 @@ export class RandomnessSingleton {
|
|
|
43
44
|
throw new Error('RandomnessSingleton is not implemented for non-deterministic mode');
|
|
44
45
|
}
|
|
45
46
|
const result = Buffer.alloc(length);
|
|
46
|
-
for
|
|
47
|
+
for(let i = 0; i < length; i++){
|
|
47
48
|
// Each byte of the buffer is set to a 1 byte of this.counter's value. 0xff is 255 in decimal and it's used as
|
|
48
49
|
// a mask to get the last 8 bits of the shifted counter.
|
|
49
|
-
result[i] =
|
|
50
|
+
result[i] = this.counter >> i * 8 & 0xff;
|
|
50
51
|
}
|
|
51
52
|
this.counter++;
|
|
52
53
|
return result;
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9tbmVzc19zaW5nbGV0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3J5cHRvL3JhbmRvbS9yYW5kb21uZXNzX3NpbmdsZXRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFLOUIsWUFDbUIsSUFBYSxFQUNiLE1BQU0sWUFBWSxDQUFDLGlDQUFpQyxDQUFDO1FBRHJELFNBQUksR0FBSixJQUFJLENBQVM7UUFDYixRQUFHLEdBQUgsR0FBRyxDQUFrRDtRQUpoRSxZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBTWxCLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNyRSxtQkFBbUIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQWM7UUFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVCLDZGQUE2RjtZQUM3Riw0RkFBNEY7WUFDNUYsOEZBQThGO1lBQzlGLGlEQUFpRDtZQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLDhHQUE4RztZQUM5Ryx3REFBd0Q7WUFDeEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMvQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type GrumpkinScalar, Point } from '@aztec/foundation/fields';
|
|
2
|
+
import { SchnorrSignature } from './signature.js';
|
|
3
|
+
export * from './signature.js';
|
|
4
|
+
/**
|
|
5
|
+
* Schnorr signature construction and helper operations.
|
|
6
|
+
*/
|
|
7
|
+
export declare class Schnorr {
|
|
8
|
+
/**
|
|
9
|
+
* Computes a grumpkin public key from a private key.
|
|
10
|
+
* @param privateKey - The private key.
|
|
11
|
+
* @returns A grumpkin public key.
|
|
12
|
+
*/
|
|
13
|
+
computePublicKey(privateKey: GrumpkinScalar): Promise<Point>;
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a Schnorr signature given a msg and a private key.
|
|
16
|
+
* @param msg - Message over which the signature is constructed.
|
|
17
|
+
* @param privateKey - The private key of the signer.
|
|
18
|
+
* @returns A Schnorr signature of the form (s, e).
|
|
19
|
+
*/
|
|
20
|
+
constructSignature(msg: Uint8Array, privateKey: GrumpkinScalar): Promise<SchnorrSignature>;
|
|
21
|
+
/**
|
|
22
|
+
* Verifies a Schnorr signature given a Grumpkin public key.
|
|
23
|
+
* @param msg - Message over which the signature was constructed.
|
|
24
|
+
* @param pubKey - The Grumpkin public key of the signer.
|
|
25
|
+
* @param sig - The Schnorr signature.
|
|
26
|
+
* @returns True or false.
|
|
27
|
+
*/
|
|
28
|
+
verifySignature(msg: Uint8Array, pubKey: Point, sig: SchnorrSignature): Promise<boolean>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/schnorr/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAItE,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;IAMzE;;;;;OAKG;IACU,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc;IAS3E;;;;;;OAMG;IACU,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB;CAQnF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { BarretenbergSync } from '@aztec/bb.js';
|
|
2
|
+
import { Point } from '@aztec/foundation/fields';
|
|
3
|
+
import { numToInt32BE } from '@aztec/foundation/serialize';
|
|
4
|
+
import { concatenateUint8Arrays } from '../serialize.js';
|
|
5
|
+
import { SchnorrSignature } from './signature.js';
|
|
6
|
+
export * from './signature.js';
|
|
7
|
+
/**
|
|
8
|
+
* Schnorr signature construction and helper operations.
|
|
9
|
+
*/ export class Schnorr {
|
|
10
|
+
/**
|
|
11
|
+
* Computes a grumpkin public key from a private key.
|
|
12
|
+
* @param privateKey - The private key.
|
|
13
|
+
* @returns A grumpkin public key.
|
|
14
|
+
*/ async computePublicKey(privateKey) {
|
|
15
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
16
|
+
const [result] = api.getWasm().callWasmExport('schnorr_compute_public_key', [
|
|
17
|
+
privateKey.toBuffer()
|
|
18
|
+
], [
|
|
19
|
+
64
|
|
20
|
+
]);
|
|
21
|
+
return Point.fromBuffer(Buffer.from(result));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a Schnorr signature given a msg and a private key.
|
|
25
|
+
* @param msg - Message over which the signature is constructed.
|
|
26
|
+
* @param privateKey - The private key of the signer.
|
|
27
|
+
* @returns A Schnorr signature of the form (s, e).
|
|
28
|
+
*/ async constructSignature(msg, privateKey) {
|
|
29
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
30
|
+
const messageArray = concatenateUint8Arrays([
|
|
31
|
+
numToInt32BE(msg.length),
|
|
32
|
+
msg
|
|
33
|
+
]);
|
|
34
|
+
const [s, e] = api.getWasm().callWasmExport('schnorr_construct_signature', [
|
|
35
|
+
messageArray,
|
|
36
|
+
privateKey.toBuffer()
|
|
37
|
+
], [
|
|
38
|
+
32,
|
|
39
|
+
32
|
|
40
|
+
]);
|
|
41
|
+
return new SchnorrSignature(Buffer.from([
|
|
42
|
+
...s,
|
|
43
|
+
...e
|
|
44
|
+
]));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Verifies a Schnorr signature given a Grumpkin public key.
|
|
48
|
+
* @param msg - Message over which the signature was constructed.
|
|
49
|
+
* @param pubKey - The Grumpkin public key of the signer.
|
|
50
|
+
* @param sig - The Schnorr signature.
|
|
51
|
+
* @returns True or false.
|
|
52
|
+
*/ async verifySignature(msg, pubKey, sig) {
|
|
53
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
54
|
+
const messageArray = concatenateUint8Arrays([
|
|
55
|
+
numToInt32BE(msg.length),
|
|
56
|
+
msg
|
|
57
|
+
]);
|
|
58
|
+
const [result] = api.getWasm().callWasmExport('schnorr_verify_signature', [
|
|
59
|
+
messageArray,
|
|
60
|
+
pubKey.toBuffer(),
|
|
61
|
+
sig.s,
|
|
62
|
+
sig.e
|
|
63
|
+
], [
|
|
64
|
+
1
|
|
65
|
+
]);
|
|
66
|
+
return result[0] === 1;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
4
|
+
import { BufferReader } from '@aztec/foundation/serialize';
|
|
5
|
+
import type { Signature } from '../signature/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Schnorr signature used for transactions.
|
|
8
|
+
* @see cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.hpp
|
|
9
|
+
*/
|
|
10
|
+
export declare class SchnorrSignature implements Signature {
|
|
11
|
+
private buffer;
|
|
12
|
+
/**
|
|
13
|
+
* The size of the signature in bytes.
|
|
14
|
+
*/
|
|
15
|
+
static SIZE: number;
|
|
16
|
+
/**
|
|
17
|
+
* An empty signature.
|
|
18
|
+
*/
|
|
19
|
+
static EMPTY: SchnorrSignature;
|
|
20
|
+
constructor(buffer: Buffer);
|
|
21
|
+
/**
|
|
22
|
+
* Determines if the provided signature is valid or not.
|
|
23
|
+
* @param signature - The data to be checked.
|
|
24
|
+
* @returns Boolean indicating if the provided data is a valid schnorr signature.
|
|
25
|
+
*/
|
|
26
|
+
static isSignature(signature: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Constructs a SchnorrSignature from the provided string.
|
|
29
|
+
* @param signature - The string to be converted to a schnorr signature.
|
|
30
|
+
* @returns The constructed schnorr signature.
|
|
31
|
+
*/
|
|
32
|
+
static fromString(signature: string): SchnorrSignature;
|
|
33
|
+
/**
|
|
34
|
+
* Generates a random schnorr signature.
|
|
35
|
+
* @returns The randomly constructed signature.
|
|
36
|
+
*/
|
|
37
|
+
static random(): SchnorrSignature;
|
|
38
|
+
/**
|
|
39
|
+
* Returns the 's' component of the signature.
|
|
40
|
+
* @returns A buffer containing the signature's 's' component.
|
|
41
|
+
*/
|
|
42
|
+
get s(): Buffer;
|
|
43
|
+
/**
|
|
44
|
+
* Returns the 'e' component of the signature.
|
|
45
|
+
* @returns A buffer containing the signature's 'e' component.
|
|
46
|
+
*/
|
|
47
|
+
get e(): Buffer;
|
|
48
|
+
/**
|
|
49
|
+
* Returns the full signature as a buffer.
|
|
50
|
+
* @returns A buffer containing the signature.
|
|
51
|
+
*/
|
|
52
|
+
toBuffer(): Buffer;
|
|
53
|
+
/**
|
|
54
|
+
* Deserializes from a buffer.
|
|
55
|
+
* @param buffer - The buffer representation of the object.
|
|
56
|
+
* @returns The new object.
|
|
57
|
+
*/
|
|
58
|
+
static fromBuffer(buffer: Buffer | BufferReader): SchnorrSignature;
|
|
59
|
+
/**
|
|
60
|
+
* Returns the full signature as a hex string.
|
|
61
|
+
* @returns A string containing the signature in hex format.
|
|
62
|
+
*/
|
|
63
|
+
toString(): string;
|
|
64
|
+
/**
|
|
65
|
+
* Converts the signature to an array of three fields.
|
|
66
|
+
* @returns The signature components as an array of three fields
|
|
67
|
+
*/
|
|
68
|
+
toFields(): Fr[];
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=signature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/crypto/schnorr/signature.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,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;gBAEzC,MAAM,EAAE,MAAM;IAMlC;;;;OAIG;WACW,WAAW,CAAC,SAAS,EAAE,MAAM;IAI3C;;;;OAIG;WACW,UAAU,CAAC,SAAS,EAAE,MAAM;IAO1C;;;OAGG;WACW,MAAM;IAIpB;;;OAGG;IACH,IAAI,CAAC,WAEJ;IAED;;;OAGG;IACH,IAAI,CAAC,WAEJ;IAED;;;OAGG;IACH,QAAQ;IAIR;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB;IAKlE;;;OAGG;IACH,QAAQ;IAIR;;;OAGG;IACH,QAAQ,IAAI,EAAE,EAAE;CAajB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { randomBytes } from '@aztec/foundation/crypto';
|
|
2
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import { BufferReader, mapTuple } from '@aztec/foundation/serialize';
|
|
4
|
+
/**
|
|
5
|
+
* Schnorr signature used for transactions.
|
|
6
|
+
* @see cpp/barretenberg/cpp/src/barretenberg/crypto/schnorr/schnorr.hpp
|
|
7
|
+
*/ export class SchnorrSignature {
|
|
8
|
+
buffer;
|
|
9
|
+
/**
|
|
10
|
+
* The size of the signature in bytes.
|
|
11
|
+
*/ static SIZE = 64;
|
|
12
|
+
/**
|
|
13
|
+
* An empty signature.
|
|
14
|
+
*/ static EMPTY = new SchnorrSignature(Buffer.alloc(64));
|
|
15
|
+
constructor(buffer){
|
|
16
|
+
this.buffer = buffer;
|
|
17
|
+
if (buffer.length !== SchnorrSignature.SIZE) {
|
|
18
|
+
throw new Error(`Invalid signature buffer of length ${buffer.length}.`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Determines if the provided signature is valid or not.
|
|
23
|
+
* @param signature - The data to be checked.
|
|
24
|
+
* @returns Boolean indicating if the provided data is a valid schnorr signature.
|
|
25
|
+
*/ static isSignature(signature) {
|
|
26
|
+
return /^(0x)?[0-9a-f]{128}$/i.test(signature);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a SchnorrSignature from the provided string.
|
|
30
|
+
* @param signature - The string to be converted to a schnorr signature.
|
|
31
|
+
* @returns The constructed schnorr signature.
|
|
32
|
+
*/ static fromString(signature) {
|
|
33
|
+
if (!SchnorrSignature.isSignature(signature)) {
|
|
34
|
+
throw new Error(`Invalid signature string: ${signature}`);
|
|
35
|
+
}
|
|
36
|
+
return new SchnorrSignature(Buffer.from(signature.replace(/^0x/i, ''), 'hex'));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Generates a random schnorr signature.
|
|
40
|
+
* @returns The randomly constructed signature.
|
|
41
|
+
*/ static random() {
|
|
42
|
+
return new SchnorrSignature(randomBytes(64));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Returns the 's' component of the signature.
|
|
46
|
+
* @returns A buffer containing the signature's 's' component.
|
|
47
|
+
*/ get s() {
|
|
48
|
+
return this.buffer.subarray(0, 32);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Returns the 'e' component of the signature.
|
|
52
|
+
* @returns A buffer containing the signature's 'e' component.
|
|
53
|
+
*/ get e() {
|
|
54
|
+
return this.buffer.subarray(32);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Returns the full signature as a buffer.
|
|
58
|
+
* @returns A buffer containing the signature.
|
|
59
|
+
*/ toBuffer() {
|
|
60
|
+
return this.buffer;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Deserializes from a buffer.
|
|
64
|
+
* @param buffer - The buffer representation of the object.
|
|
65
|
+
* @returns The new object.
|
|
66
|
+
*/ static fromBuffer(buffer) {
|
|
67
|
+
const reader = BufferReader.asReader(buffer);
|
|
68
|
+
return new SchnorrSignature(reader.readBytes(SchnorrSignature.SIZE));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Returns the full signature as a hex string.
|
|
72
|
+
* @returns A string containing the signature in hex format.
|
|
73
|
+
*/ toString() {
|
|
74
|
+
return `0x${this.buffer.toString('hex')}`;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Converts the signature to an array of three fields.
|
|
78
|
+
* @returns The signature components as an array of three fields
|
|
79
|
+
*/ toFields() {
|
|
80
|
+
const sig = this.toBuffer();
|
|
81
|
+
const buf1 = Buffer.alloc(32);
|
|
82
|
+
const buf2 = Buffer.alloc(32);
|
|
83
|
+
const buf3 = Buffer.alloc(32);
|
|
84
|
+
sig.copy(buf1, 1, 0, 31);
|
|
85
|
+
sig.copy(buf2, 1, 31, 62);
|
|
86
|
+
sig.copy(buf3, 1, 62, 64);
|
|
87
|
+
return mapTuple([
|
|
88
|
+
buf1,
|
|
89
|
+
buf2,
|
|
90
|
+
buf3
|
|
91
|
+
], Fr.fromBuffer);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
/**
|
|
4
|
+
* Secp256k1 elliptic curve operations.
|
|
5
|
+
*/
|
|
6
|
+
export declare class Secp256k1 {
|
|
7
|
+
static generator: Buffer;
|
|
8
|
+
/**
|
|
9
|
+
* Point generator
|
|
10
|
+
* @returns The generator for the curve.
|
|
11
|
+
*/
|
|
12
|
+
generator(): Buffer;
|
|
13
|
+
/**
|
|
14
|
+
* Multiplies a point by a scalar (adds the point `scalar` amount of time).
|
|
15
|
+
* @param point - Point to multiply.
|
|
16
|
+
* @param scalar - Scalar to multiply by.
|
|
17
|
+
* @returns Result of the multiplication.
|
|
18
|
+
*/
|
|
19
|
+
mul(point: Uint8Array, scalar: Uint8Array): Promise<Buffer>;
|
|
20
|
+
/**
|
|
21
|
+
* Gets a random field element.
|
|
22
|
+
* @returns Random field element.
|
|
23
|
+
*/
|
|
24
|
+
getRandomFr(): Promise<Buffer>;
|
|
25
|
+
/**
|
|
26
|
+
* Converts a 512 bits long buffer to a field.
|
|
27
|
+
* @param uint512Buf - The buffer to convert.
|
|
28
|
+
* @returns Buffer representation of the field element.
|
|
29
|
+
*/
|
|
30
|
+
reduce512BufferToFr(uint512Buf: Buffer): Promise<Buffer>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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,SAKb;IAEH;;;OAGG;IACI,SAAS,IAAI,MAAM;IAI1B;;;;;OAKG;IACU,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;IAMtD;;;OAGG;IACU,WAAW;IAMxB;;;;OAIG;IACU,mBAAmB,CAAC,UAAU,EAAE,MAAM;CAOpD"}
|