@aztec/foundation 0.0.0-test.0
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/README.md +1 -0
- package/dest/array/array.d.ts +71 -0
- package/dest/array/array.d.ts.map +1 -0
- package/dest/array/array.js +100 -0
- package/dest/array/index.d.ts +2 -0
- package/dest/array/index.d.ts.map +1 -0
- package/dest/array/index.js +1 -0
- package/dest/async-map/index.d.ts +13 -0
- package/dest/async-map/index.d.ts.map +1 -0
- package/dest/async-map/index.js +17 -0
- package/dest/async-pool/index.d.ts +3 -0
- package/dest/async-pool/index.d.ts.map +1 -0
- package/dest/async-pool/index.js +47 -0
- package/dest/bigint-buffer/index.d.ts +42 -0
- package/dest/bigint-buffer/index.d.ts.map +1 -0
- package/dest/bigint-buffer/index.js +76 -0
- package/dest/buffer/buffer32.d.ts +91 -0
- package/dest/buffer/buffer32.d.ts.map +1 -0
- package/dest/buffer/buffer32.js +115 -0
- package/dest/buffer/index.d.ts +2 -0
- package/dest/buffer/index.d.ts.map +1 -0
- package/dest/buffer/index.js +1 -0
- package/dest/collection/array.d.ts +101 -0
- package/dest/collection/array.d.ts.map +1 -0
- package/dest/collection/array.js +164 -0
- package/dest/collection/index.d.ts +3 -0
- package/dest/collection/index.d.ts.map +1 -0
- package/dest/collection/index.js +2 -0
- package/dest/collection/object.d.ts +14 -0
- package/dest/collection/object.d.ts.map +1 -0
- package/dest/collection/object.js +32 -0
- package/dest/committable/committable.d.ts +28 -0
- package/dest/committable/committable.d.ts.map +1 -0
- package/dest/committable/committable.js +36 -0
- package/dest/committable/index.d.ts +2 -0
- package/dest/committable/index.d.ts.map +1 -0
- package/dest/committable/index.js +1 -0
- package/dest/config/env_var.d.ts +2 -0
- package/dest/config/env_var.d.ts.map +1 -0
- package/dest/config/env_var.js +1 -0
- package/dest/config/index.d.ts +66 -0
- package/dest/config/index.d.ts.map +1 -0
- package/dest/config/index.js +125 -0
- 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 +15 -0
- package/dest/crypto/index.d.ts.map +1 -0
- package/dest/crypto/index.js +14 -0
- package/dest/crypto/keccak/index.d.ts +28 -0
- package/dest/crypto/keccak/index.d.ts.map +1 -0
- package/dest/crypto/keccak/index.js +248 -0
- package/dest/crypto/keys/index.d.ts +5 -0
- package/dest/crypto/keys/index.d.ts.map +1 -0
- package/dest/crypto/keys/index.js +7 -0
- package/dest/crypto/pedersen/index.d.ts +2 -0
- package/dest/crypto/pedersen/index.d.ts.map +1 -0
- package/dest/crypto/pedersen/index.js +1 -0
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts +13 -0
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.elliptic.js +582 -0
- package/dest/crypto/pedersen/pedersen.noble.d.ts +11 -0
- package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.noble.js +558 -0
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +21 -0
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.wasm.js +41 -0
- package/dest/crypto/poseidon/index.d.ts +26 -0
- package/dest/crypto/poseidon/index.d.ts.map +1 -0
- package/dest/crypto/poseidon/index.js +58 -0
- package/dest/crypto/random/index.d.ts +25 -0
- package/dest/crypto/random/index.d.ts.map +1 -0
- package/dest/crypto/random/index.js +70 -0
- package/dest/crypto/random/randomness_singleton.d.ts +25 -0
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -0
- package/dest/crypto/random/randomness_singleton.js +55 -0
- 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.d.ts +3 -0
- package/dest/crypto/secp256k1-signer/index.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/index.js +2 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +24 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.js +30 -0
- package/dest/crypto/secp256k1-signer/utils.d.ts +40 -0
- package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/utils.js +84 -0
- 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.d.ts +20 -0
- package/dest/crypto/sha256/index.d.ts.map +1 -0
- package/dest/crypto/sha256/index.js +166 -0
- package/dest/crypto/sha512/index.d.ts +11 -0
- package/dest/crypto/sha512/index.d.ts.map +1 -0
- package/dest/crypto/sha512/index.js +12 -0
- 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.d.ts +3 -0
- package/dest/crypto/sync/index.d.ts.map +1 -0
- package/dest/crypto/sync/index.js +4 -0
- package/dest/crypto/sync/pedersen/index.d.ts +21 -0
- package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
- package/dest/crypto/sync/pedersen/index.js +38 -0
- package/dest/crypto/sync/poseidon/index.d.ts +26 -0
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
- package/dest/crypto/sync/poseidon/index.js +53 -0
- package/dest/decorators/index.d.ts +2 -0
- package/dest/decorators/index.d.ts.map +1 -0
- package/dest/decorators/index.js +1 -0
- package/dest/decorators/memoize.d.ts +2 -0
- package/dest/decorators/memoize.d.ts.map +1 -0
- package/dest/decorators/memoize.js +11 -0
- package/dest/error/index.d.ts +21 -0
- package/dest/error/index.d.ts.map +1 -0
- package/dest/error/index.js +17 -0
- package/dest/eth-address/index.d.ts +134 -0
- package/dest/eth-address/index.d.ts.map +1 -0
- package/dest/eth-address/index.js +198 -0
- package/dest/eth-signature/eth_signature.d.ts +62 -0
- package/dest/eth-signature/eth_signature.d.ts.map +1 -0
- package/dest/eth-signature/eth_signature.js +91 -0
- package/dest/eth-signature/index.d.ts +2 -0
- package/dest/eth-signature/index.d.ts.map +1 -0
- package/dest/eth-signature/index.js +1 -0
- package/dest/fields/coordinate.d.ts +68 -0
- package/dest/fields/coordinate.d.ts.map +1 -0
- package/dest/fields/coordinate.js +96 -0
- package/dest/fields/fields.d.ts +176 -0
- package/dest/fields/fields.d.ts.map +1 -0
- package/dest/fields/fields.js +383 -0
- package/dest/fields/index.d.ts +4 -0
- package/dest/fields/index.d.ts.map +1 -0
- package/dest/fields/index.js +3 -0
- package/dest/fields/point.d.ts +175 -0
- package/dest/fields/point.d.ts.map +1 -0
- package/dest/fields/point.js +260 -0
- package/dest/fs/index.d.ts +2 -0
- package/dest/fs/index.d.ts.map +1 -0
- package/dest/fs/index.js +1 -0
- package/dest/fs/run_in_dir.d.ts +2 -0
- package/dest/fs/run_in_dir.d.ts.map +1 -0
- package/dest/fs/run_in_dir.js +31 -0
- package/dest/index.d.ts +31 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +31 -0
- package/dest/iterable/all.d.ts +9 -0
- package/dest/iterable/all.d.ts.map +1 -0
- package/dest/iterable/all.js +18 -0
- package/dest/iterable/filter.d.ts +10 -0
- package/dest/iterable/filter.d.ts.map +1 -0
- package/dest/iterable/filter.js +48 -0
- package/dest/iterable/index.d.ts +8 -0
- package/dest/iterable/index.d.ts.map +1 -0
- package/dest/iterable/index.js +7 -0
- package/dest/iterable/isAsyncIt.d.ts +7 -0
- package/dest/iterable/isAsyncIt.d.ts.map +1 -0
- package/dest/iterable/isAsyncIt.js +7 -0
- package/dest/iterable/map.d.ts +12 -0
- package/dest/iterable/map.d.ts.map +1 -0
- package/dest/iterable/map.js +36 -0
- package/dest/iterable/peek.d.ts +19 -0
- package/dest/iterable/peek.d.ts.map +1 -0
- package/dest/iterable/peek.js +33 -0
- package/dest/iterable/sort.d.ts +14 -0
- package/dest/iterable/sort.d.ts.map +1 -0
- package/dest/iterable/sort.js +15 -0
- package/dest/iterable/take.d.ts +10 -0
- package/dest/iterable/take.d.ts.map +1 -0
- package/dest/iterable/take.js +32 -0
- package/dest/iterable/toArray.d.ts +2 -0
- package/dest/iterable/toArray.d.ts.map +1 -0
- package/dest/iterable/toArray.js +7 -0
- package/dest/jest/setup.js +7 -0
- package/dest/json-rpc/client/fetch.d.ts +32 -0
- package/dest/json-rpc/client/fetch.d.ts.map +1 -0
- package/dest/json-rpc/client/fetch.js +77 -0
- package/dest/json-rpc/client/index.d.ts +3 -0
- package/dest/json-rpc/client/index.d.ts.map +1 -0
- package/dest/json-rpc/client/index.js +2 -0
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +26 -0
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
- package/dest/json-rpc/client/safe_json_rpc_client.js +57 -0
- package/dest/json-rpc/client/undici.d.ts +5 -0
- package/dest/json-rpc/client/undici.d.ts.map +1 -0
- package/dest/json-rpc/client/undici.js +63 -0
- package/dest/json-rpc/convert.d.ts +27 -0
- package/dest/json-rpc/convert.d.ts.map +1 -0
- package/dest/json-rpc/convert.js +48 -0
- package/dest/json-rpc/fixtures/class_a.d.ts +11 -0
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/class_a.js +20 -0
- package/dest/json-rpc/fixtures/class_b.d.ts +11 -0
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/class_b.js +20 -0
- package/dest/json-rpc/fixtures/test_state.d.ts +89 -0
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/test_state.js +131 -0
- package/dest/json-rpc/index.d.ts +2 -0
- package/dest/json-rpc/index.d.ts.map +1 -0
- package/dest/json-rpc/index.js +1 -0
- package/dest/json-rpc/js_utils.d.ts +13 -0
- package/dest/json-rpc/js_utils.d.ts.map +1 -0
- package/dest/json-rpc/js_utils.js +16 -0
- package/dest/json-rpc/server/index.d.ts +2 -0
- package/dest/json-rpc/server/index.d.ts.map +1 -0
- package/dest/json-rpc/server/index.js +1 -0
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +140 -0
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
- package/dest/json-rpc/server/safe_json_rpc_server.js +346 -0
- package/dest/json-rpc/server/telemetry.d.ts +2 -0
- package/dest/json-rpc/server/telemetry.d.ts.map +1 -0
- package/dest/json-rpc/server/telemetry.js +0 -0
- package/dest/json-rpc/test/index.d.ts +2 -0
- package/dest/json-rpc/test/index.d.ts.map +1 -0
- package/dest/json-rpc/test/index.js +1 -0
- package/dest/json-rpc/test/integration.d.ts +15 -0
- package/dest/json-rpc/test/integration.d.ts.map +1 -0
- package/dest/json-rpc/test/integration.js +21 -0
- package/dest/log/console.d.ts +11 -0
- package/dest/log/console.d.ts.map +1 -0
- package/dest/log/console.js +36 -0
- package/dest/log/debug.d.ts +56 -0
- package/dest/log/debug.d.ts.map +1 -0
- package/dest/log/debug.js +75 -0
- package/dest/log/gcloud-logger-config.d.ts +14 -0
- package/dest/log/gcloud-logger-config.d.ts.map +1 -0
- package/dest/log/gcloud-logger-config.js +66 -0
- package/dest/log/index.d.ts +7 -0
- package/dest/log/index.d.ts.map +1 -0
- package/dest/log/index.js +6 -0
- 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.d.ts +7 -0
- package/dest/log/log-filters.d.ts.map +1 -0
- package/dest/log/log-filters.js +59 -0
- package/dest/log/log-levels.d.ts +3 -0
- package/dest/log/log-levels.d.ts.map +1 -0
- package/dest/log/log-levels.js +10 -0
- package/dest/log/log_fn.d.ts +7 -0
- package/dest/log/log_fn.d.ts.map +1 -0
- package/dest/log/log_fn.js +1 -0
- package/dest/log/log_history.d.ts +31 -0
- package/dest/log/log_history.d.ts.map +1 -0
- package/dest/log/log_history.js +38 -0
- package/dest/log/pino-logger.d.ts +57 -0
- package/dest/log/pino-logger.d.ts.map +1 -0
- package/dest/log/pino-logger.js +207 -0
- package/dest/message/index.d.ts +32 -0
- package/dest/message/index.d.ts.map +1 -0
- package/dest/message/index.js +27 -0
- package/dest/mutex/index.d.ts +53 -0
- package/dest/mutex/index.d.ts.map +1 -0
- package/dest/mutex/index.js +78 -0
- package/dest/mutex/mutex_database.d.ts +10 -0
- package/dest/mutex/mutex_database.d.ts.map +1 -0
- package/dest/mutex/mutex_database.js +4 -0
- package/dest/noir/index.d.ts +2 -0
- package/dest/noir/index.d.ts.map +1 -0
- package/dest/noir/index.js +1 -0
- package/dest/noir/noir_package_config.d.ts +129 -0
- package/dest/noir/noir_package_config.d.ts.map +1 -0
- package/dest/noir/noir_package_config.js +36 -0
- package/dest/promise/index.d.ts +3 -0
- package/dest/promise/index.d.ts.map +1 -0
- package/dest/promise/index.js +2 -0
- package/dest/promise/running-promise.d.ts +47 -0
- package/dest/promise/running-promise.d.ts.map +1 -0
- package/dest/promise/running-promise.js +110 -0
- package/dest/promise/utils.d.ts +12 -0
- package/dest/promise/utils.d.ts.map +1 -0
- package/dest/promise/utils.js +20 -0
- package/dest/queue/base_memory_queue.d.ts +65 -0
- package/dest/queue/base_memory_queue.d.ts.map +1 -0
- package/dest/queue/base_memory_queue.js +116 -0
- package/dest/queue/batch_queue.d.ts +47 -0
- package/dest/queue/batch_queue.d.ts.map +1 -0
- package/dest/queue/batch_queue.js +105 -0
- package/dest/queue/bounded_serial_queue.d.ts +56 -0
- package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
- package/dest/queue/bounded_serial_queue.js +84 -0
- package/dest/queue/fifo_memory_queue.d.ts +21 -0
- package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
- package/dest/queue/fifo_memory_queue.js +29 -0
- package/dest/queue/index.d.ts +7 -0
- package/dest/queue/index.d.ts.map +1 -0
- package/dest/queue/index.js +6 -0
- package/dest/queue/priority_memory_queue.d.ts +13 -0
- package/dest/queue/priority_memory_queue.d.ts.map +1 -0
- package/dest/queue/priority_memory_queue.js +16 -0
- package/dest/queue/priority_queue.d.ts +14 -0
- package/dest/queue/priority_queue.d.ts.map +1 -0
- package/dest/queue/priority_queue.js +29 -0
- package/dest/queue/semaphore.d.ts +23 -0
- package/dest/queue/semaphore.d.ts.map +1 -0
- package/dest/queue/semaphore.js +26 -0
- package/dest/queue/serial_queue.d.ts +49 -0
- package/dest/queue/serial_queue.d.ts.map +1 -0
- package/dest/queue/serial_queue.js +72 -0
- package/dest/retry/index.d.ts +44 -0
- package/dest/retry/index.d.ts.map +1 -0
- package/dest/retry/index.js +93 -0
- package/dest/running-promise/index.d.ts +2 -0
- package/dest/running-promise/index.d.ts.map +1 -0
- package/dest/running-promise/index.js +1 -0
- package/dest/schemas/api.d.ts +21 -0
- package/dest/schemas/api.d.ts.map +1 -0
- package/dest/schemas/api.js +3 -0
- package/dest/schemas/index.d.ts +6 -0
- package/dest/schemas/index.d.ts.map +1 -0
- package/dest/schemas/index.js +5 -0
- package/dest/schemas/parse.d.ts +9 -0
- package/dest/schemas/parse.d.ts.map +1 -0
- package/dest/schemas/parse.js +22 -0
- package/dest/schemas/schemas.d.ts +45 -0
- package/dest/schemas/schemas.d.ts.map +1 -0
- package/dest/schemas/schemas.js +38 -0
- package/dest/schemas/types.d.ts +3 -0
- package/dest/schemas/types.d.ts.map +1 -0
- package/dest/schemas/types.js +1 -0
- package/dest/schemas/utils.d.ts +53 -0
- package/dest/schemas/utils.d.ts.map +1 -0
- package/dest/schemas/utils.js +60 -0
- package/dest/serialize/buffer_reader.d.ts +239 -0
- package/dest/serialize/buffer_reader.d.ts.map +1 -0
- package/dest/serialize/buffer_reader.js +290 -0
- package/dest/serialize/field_reader.d.ts +112 -0
- package/dest/serialize/field_reader.d.ts.map +1 -0
- package/dest/serialize/field_reader.js +147 -0
- package/dest/serialize/free_funcs.d.ts +105 -0
- package/dest/serialize/free_funcs.d.ts.map +1 -0
- package/dest/serialize/free_funcs.js +189 -0
- package/dest/serialize/index.d.ts +7 -0
- package/dest/serialize/index.d.ts.map +1 -0
- package/dest/serialize/index.js +6 -0
- package/dest/serialize/serialize.d.ts +182 -0
- package/dest/serialize/serialize.d.ts.map +1 -0
- package/dest/serialize/serialize.js +248 -0
- package/dest/serialize/type_registry.d.ts +23 -0
- package/dest/serialize/type_registry.d.ts.map +1 -0
- package/dest/serialize/type_registry.js +61 -0
- package/dest/serialize/types.d.ts +33 -0
- package/dest/serialize/types.d.ts.map +1 -0
- package/dest/serialize/types.js +21 -0
- package/dest/sleep/index.d.ts +51 -0
- package/dest/sleep/index.d.ts.map +1 -0
- package/dest/sleep/index.js +67 -0
- package/dest/string/index.d.ts +11 -0
- package/dest/string/index.d.ts.map +1 -0
- package/dest/string/index.js +24 -0
- package/dest/testing/files/index.d.ts +20 -0
- package/dest/testing/files/index.d.ts.map +1 -0
- package/dest/testing/files/index.js +58 -0
- package/dest/testing/index.d.ts +4 -0
- package/dest/testing/index.d.ts.map +1 -0
- package/dest/testing/index.js +3 -0
- package/dest/testing/port_allocator.d.ts +10 -0
- package/dest/testing/port_allocator.d.ts.map +1 -0
- package/dest/testing/port_allocator.js +29 -0
- package/dest/testing/snapshot_serializer.d.ts +5 -0
- package/dest/testing/snapshot_serializer.d.ts.map +1 -0
- package/dest/testing/snapshot_serializer.js +32 -0
- package/dest/testing/test_data.d.ts +7 -0
- package/dest/testing/test_data.d.ts.map +1 -0
- package/dest/testing/test_data.js +29 -0
- package/dest/timer/date.d.ts +13 -0
- package/dest/timer/date.d.ts.map +1 -0
- package/dest/timer/date.js +24 -0
- package/dest/timer/elapsed.d.ts +13 -0
- package/dest/timer/elapsed.d.ts.map +1 -0
- package/dest/timer/elapsed.js +25 -0
- package/dest/timer/index.d.ts +5 -0
- package/dest/timer/index.d.ts.map +1 -0
- package/dest/timer/index.js +4 -0
- package/dest/timer/timeout.d.ts +41 -0
- package/dest/timer/timeout.d.ts.map +1 -0
- package/dest/timer/timeout.js +66 -0
- package/dest/timer/timer.d.ts +37 -0
- package/dest/timer/timer.d.ts.map +1 -0
- package/dest/timer/timer.js +40 -0
- package/dest/transport/browser/index.d.ts +5 -0
- package/dest/transport/browser/index.d.ts.map +1 -0
- package/dest/transport/browser/index.js +4 -0
- package/dest/transport/browser/message_port_socket.d.ts +37 -0
- package/dest/transport/browser/message_port_socket.d.ts.map +1 -0
- package/dest/transport/browser/message_port_socket.js +42 -0
- package/dest/transport/browser/shared_worker_connector.d.ts +19 -0
- package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -0
- package/dest/transport/browser/shared_worker_connector.js +19 -0
- package/dest/transport/browser/shared_worker_listener.d.ts +38 -0
- package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -0
- package/dest/transport/browser/shared_worker_listener.js +33 -0
- package/dest/transport/browser/worker_connector.d.ts +26 -0
- package/dest/transport/browser/worker_connector.d.ts.map +1 -0
- package/dest/transport/browser/worker_connector.js +30 -0
- package/dest/transport/browser/worker_listener.d.ts +39 -0
- package/dest/transport/browser/worker_listener.d.ts.map +1 -0
- package/dest/transport/browser/worker_listener.js +35 -0
- package/dest/transport/dispatch/create_dispatch_fn.d.ts +25 -0
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -0
- package/dest/transport/dispatch/create_dispatch_fn.js +17 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +102 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -0
- package/dest/transport/dispatch/create_dispatch_proxy.js +59 -0
- package/dest/transport/dispatch/messages.d.ts +52 -0
- package/dest/transport/dispatch/messages.d.ts.map +1 -0
- package/dest/transport/dispatch/messages.js +13 -0
- package/dest/transport/index.d.ts +12 -0
- package/dest/transport/index.d.ts.map +1 -0
- package/dest/transport/index.js +11 -0
- package/dest/transport/interface/connector.d.ts +8 -0
- package/dest/transport/interface/connector.d.ts.map +1 -0
- package/dest/transport/interface/connector.js +3 -0
- package/dest/transport/interface/listener.d.ts +13 -0
- package/dest/transport/interface/listener.d.ts.map +1 -0
- package/dest/transport/interface/listener.js +4 -0
- package/dest/transport/interface/socket.d.ts +13 -0
- package/dest/transport/interface/socket.d.ts.map +1 -0
- package/dest/transport/interface/socket.js +7 -0
- package/dest/transport/interface/transferable.d.ts +68 -0
- package/dest/transport/interface/transferable.d.ts.map +1 -0
- package/dest/transport/interface/transferable.js +63 -0
- package/dest/transport/node/index.d.ts +3 -0
- package/dest/transport/node/index.d.ts.map +1 -0
- package/dest/transport/node/index.js +2 -0
- package/dest/transport/node/node_connector.d.ts +28 -0
- package/dest/transport/node/node_connector.d.ts.map +1 -0
- package/dest/transport/node/node_connector.js +26 -0
- package/dest/transport/node/node_connector_socket.d.ts +42 -0
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -0
- package/dest/transport/node/node_connector_socket.js +44 -0
- package/dest/transport/node/node_listener.d.ts +26 -0
- package/dest/transport/node/node_listener.d.ts.map +1 -0
- package/dest/transport/node/node_listener.js +26 -0
- package/dest/transport/node/node_listener_socket.d.ts +37 -0
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -0
- package/dest/transport/node/node_listener_socket.js +40 -0
- package/dest/transport/transport_client.d.ts +61 -0
- package/dest/transport/transport_client.d.ts.map +1 -0
- package/dest/transport/transport_client.js +96 -0
- package/dest/transport/transport_server.d.ts +56 -0
- package/dest/transport/transport_server.d.ts.map +1 -0
- package/dest/transport/transport_server.js +114 -0
- 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 +11 -0
- package/dest/trees/index.d.ts.map +1 -0
- package/dest/trees/index.js +10 -0
- 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 +17 -0
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -0
- package/dest/trees/unbalanced_merkle_tree.js +100 -0
- package/dest/trees/unbalanced_tree_store.d.ts +19 -0
- package/dest/trees/unbalanced_tree_store.d.ts.map +1 -0
- package/dest/trees/unbalanced_tree_store.js +94 -0
- package/dest/types/index.d.ts +19 -0
- package/dest/types/index.d.ts.map +1 -0
- package/dest/types/index.js +3 -0
- package/dest/url/index.d.ts +9 -0
- package/dest/url/index.d.ts.map +1 -0
- package/dest/url/index.js +62 -0
- package/dest/validation/index.d.ts +9 -0
- package/dest/validation/index.d.ts.map +1 -0
- package/dest/validation/index.js +15 -0
- package/dest/wasm/empty_wasi_sdk.d.ts +130 -0
- package/dest/wasm/empty_wasi_sdk.d.ts.map +1 -0
- package/dest/wasm/empty_wasi_sdk.js +148 -0
- package/dest/wasm/index.d.ts +2 -0
- package/dest/wasm/index.d.ts.map +1 -0
- package/dest/wasm/index.js +1 -0
- package/dest/wasm/wasm_module.d.ts +136 -0
- package/dest/wasm/wasm_module.d.ts.map +1 -0
- package/dest/wasm/wasm_module.js +196 -0
- package/dest/worker/browser/index.d.ts +3 -0
- package/dest/worker/browser/index.d.ts.map +1 -0
- package/dest/worker/browser/index.js +2 -0
- package/dest/worker/browser/start_web_module.d.ts +7 -0
- package/dest/worker/browser/start_web_module.d.ts.map +1 -0
- package/dest/worker/browser/start_web_module.js +27 -0
- package/dest/worker/browser/web_data_store.d.ts +24 -0
- package/dest/worker/browser/web_data_store.d.ts.map +1 -0
- package/dest/worker/browser/web_data_store.js +29 -0
- package/dest/worker/browser/web_worker.d.ts +10 -0
- package/dest/worker/browser/web_worker.d.ts.map +1 -0
- package/dest/worker/browser/web_worker.js +25 -0
- package/dest/worker/data_store.d.ts +21 -0
- package/dest/worker/data_store.d.ts.map +1 -0
- package/dest/worker/data_store.js +3 -0
- package/dest/worker/index.d.ts +3 -0
- package/dest/worker/index.d.ts.map +1 -0
- package/dest/worker/index.js +1 -0
- package/dest/worker/node/index.d.ts +3 -0
- package/dest/worker/node/index.d.ts.map +1 -0
- package/dest/worker/node/index.js +2 -0
- package/dest/worker/node/node_data_store.d.ts +13 -0
- package/dest/worker/node/node_data_store.d.ts.map +1 -0
- package/dest/worker/node/node_data_store.js +20 -0
- package/dest/worker/node/node_worker.d.ts +6 -0
- package/dest/worker/node/node_worker.d.ts.map +1 -0
- package/dest/worker/node/node_worker.js +22 -0
- package/dest/worker/node/start_node_module.d.ts +7 -0
- package/dest/worker/node/start_node_module.d.ts.map +1 -0
- package/dest/worker/node/start_node_module.js +31 -0
- package/dest/worker/wasm_worker.d.ts +9 -0
- package/dest/worker/wasm_worker.d.ts.map +1 -0
- package/dest/worker/wasm_worker.js +3 -0
- package/dest/worker/worker_pool.d.ts +40 -0
- package/dest/worker/worker_pool.d.ts.map +1 -0
- package/dest/worker/worker_pool.js +51 -0
- package/package.json +176 -0
- package/src/array/array.ts +150 -0
- package/src/array/index.ts +1 -0
- package/src/async-map/index.ts +18 -0
- package/src/async-pool/index.ts +50 -0
- package/src/bigint-buffer/index.ts +87 -0
- package/src/buffer/buffer32.ts +144 -0
- package/src/buffer/index.ts +1 -0
- package/src/collection/array.ts +203 -0
- package/src/collection/index.ts +2 -0
- package/src/collection/object.ts +52 -0
- package/src/committable/committable.ts +46 -0
- package/src/committable/index.ts +1 -0
- package/src/config/env_var.ts +207 -0
- package/src/config/index.ts +167 -0
- 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 +14 -0
- package/src/crypto/keccak/index.ts +283 -0
- package/src/crypto/keys/index.ts +10 -0
- package/src/crypto/pedersen/index.ts +1 -0
- package/src/crypto/pedersen/pedersen.elliptic.ts +584 -0
- package/src/crypto/pedersen/pedersen.noble.ts +573 -0
- package/src/crypto/pedersen/pedersen.wasm.ts +48 -0
- package/src/crypto/poseidon/index.ts +77 -0
- package/src/crypto/random/index.ts +85 -0
- package/src/crypto/random/randomness_singleton.ts +62 -0
- 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/index.ts +2 -0
- package/src/crypto/secp256k1-signer/secp256k1_signer.ts +38 -0
- package/src/crypto/secp256k1-signer/utils.ts +99 -0
- package/src/crypto/serialize.ts +85 -0
- package/src/crypto/sha256/index.ts +147 -0
- package/src/crypto/sha512/index.ts +16 -0
- package/src/crypto/signature/index.ts +17 -0
- package/src/crypto/sync/index.ts +6 -0
- package/src/crypto/sync/pedersen/index.ts +45 -0
- package/src/crypto/sync/poseidon/index.ts +76 -0
- package/src/decorators/index.ts +1 -0
- package/src/decorators/memoize.ts +11 -0
- package/src/error/index.ts +22 -0
- package/src/eth-address/index.ts +241 -0
- package/src/eth-signature/eth_signature.ts +128 -0
- package/src/eth-signature/index.ts +1 -0
- package/src/fields/coordinate.ts +104 -0
- package/src/fields/fields.ts +505 -0
- package/src/fields/index.ts +3 -0
- package/src/fields/point.ts +300 -0
- package/src/fs/index.ts +1 -0
- package/src/fs/run_in_dir.ts +33 -0
- package/src/index.ts +31 -0
- package/src/iterable/all.ts +32 -0
- package/src/iterable/filter.ts +77 -0
- package/src/iterable/index.ts +7 -0
- package/src/iterable/isAsyncIt.ts +8 -0
- package/src/iterable/map.ts +66 -0
- package/src/iterable/peek.ts +58 -0
- package/src/iterable/sort.ts +39 -0
- package/src/iterable/take.ts +54 -0
- package/src/iterable/toArray.ts +9 -0
- package/src/jest/setup.mjs +9 -0
- package/src/json-rpc/README.md +55 -0
- package/src/json-rpc/client/fetch.ts +103 -0
- package/src/json-rpc/client/index.ts +2 -0
- package/src/json-rpc/client/safe_json_rpc_client.ts +67 -0
- package/src/json-rpc/client/undici.ts +75 -0
- package/src/json-rpc/convert.ts +61 -0
- package/src/json-rpc/fixtures/class_a.ts +15 -0
- package/src/json-rpc/fixtures/class_b.ts +15 -0
- package/src/json-rpc/fixtures/test_state.ts +143 -0
- package/src/json-rpc/index.ts +1 -0
- package/src/json-rpc/js_utils.ts +21 -0
- package/src/json-rpc/server/index.ts +1 -0
- package/src/json-rpc/server/safe_json_rpc_server.ts +376 -0
- package/src/json-rpc/server/telemetry.ts +0 -0
- package/src/json-rpc/test/index.ts +1 -0
- package/src/json-rpc/test/integration.ts +35 -0
- package/src/log/console.ts +39 -0
- package/src/log/debug.ts +104 -0
- package/src/log/gcloud-logger-config.ts +71 -0
- package/src/log/index.ts +6 -0
- package/src/log/libp2p_logger.ts +67 -0
- package/src/log/log-filters.ts +63 -0
- package/src/log/log-levels.ts +3 -0
- package/src/log/log_fn.ts +5 -0
- package/src/log/log_history.ts +44 -0
- package/src/log/pino-logger.ts +243 -0
- package/src/message/index.ts +43 -0
- package/src/mutex/index.ts +84 -0
- package/src/mutex/mutex_database.ts +12 -0
- package/src/noir/index.ts +1 -0
- package/src/noir/noir_package_config.ts +54 -0
- package/src/promise/index.ts +2 -0
- package/src/promise/running-promise.ts +125 -0
- package/src/promise/utils.ts +29 -0
- package/src/queue/base_memory_queue.ts +138 -0
- package/src/queue/batch_queue.ts +120 -0
- package/src/queue/bounded_serial_queue.ts +100 -0
- package/src/queue/fifo_memory_queue.ts +39 -0
- package/src/queue/index.ts +6 -0
- package/src/queue/priority_memory_queue.ts +20 -0
- package/src/queue/priority_queue.ts +34 -0
- package/src/queue/semaphore.ts +33 -0
- package/src/queue/serial_queue.ts +86 -0
- package/src/retry/index.ts +100 -0
- package/src/running-promise/index.ts +1 -0
- package/src/schemas/api.ts +47 -0
- package/src/schemas/index.ts +5 -0
- package/src/schemas/parse.ts +29 -0
- package/src/schemas/schemas.ts +64 -0
- package/src/schemas/types.ts +3 -0
- package/src/schemas/utils.ts +112 -0
- package/src/serialize/buffer_reader.ts +383 -0
- package/src/serialize/field_reader.ts +184 -0
- package/src/serialize/free_funcs.ts +204 -0
- package/src/serialize/index.ts +6 -0
- package/src/serialize/serialize.ts +336 -0
- package/src/serialize/type_registry.ts +75 -0
- package/src/serialize/types.ts +40 -0
- package/src/sleep/index.ts +75 -0
- package/src/string/index.ts +31 -0
- package/src/testing/files/index.ts +69 -0
- package/src/testing/index.ts +3 -0
- package/src/testing/port_allocator.ts +31 -0
- package/src/testing/snapshot_serializer.ts +33 -0
- package/src/testing/test_data.ts +36 -0
- package/src/timer/date.ts +24 -0
- package/src/timer/elapsed.ts +23 -0
- package/src/timer/index.ts +4 -0
- package/src/timer/timeout.ts +70 -0
- package/src/timer/timer.ts +48 -0
- package/src/transport/browser/index.ts +4 -0
- package/src/transport/browser/message_port_socket.ts +48 -0
- package/src/transport/browser/shared_worker_connector.ts +21 -0
- package/src/transport/browser/shared_worker_listener.ts +53 -0
- package/src/transport/browser/worker_connector.ts +30 -0
- package/src/transport/browser/worker_listener.ts +54 -0
- package/src/transport/dispatch/create_dispatch_fn.ts +35 -0
- package/src/transport/dispatch/create_dispatch_proxy.ts +141 -0
- package/src/transport/dispatch/messages.ts +58 -0
- package/src/transport/index.ts +11 -0
- package/src/transport/interface/connector.ts +9 -0
- package/src/transport/interface/listener.ts +16 -0
- package/src/transport/interface/socket.ts +15 -0
- package/src/transport/interface/transferable.ts +125 -0
- package/src/transport/node/index.ts +2 -0
- package/src/transport/node/node_connector.ts +30 -0
- package/src/transport/node/node_connector_socket.ts +52 -0
- package/src/transport/node/node_listener.ts +34 -0
- package/src/transport/node/node_listener_socket.ts +48 -0
- package/src/transport/transport_client.ts +131 -0
- package/src/transport/transport_server.ts +108 -0
- package/src/trees/hasher.ts +39 -0
- package/src/trees/index.ts +10 -0
- 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 +103 -0
- package/src/trees/unbalanced_tree_store.ts +102 -0
- package/src/types/index.ts +25 -0
- package/src/url/index.ts +73 -0
- package/src/validation/index.ts +18 -0
- package/src/wasm/README.md +6 -0
- package/src/wasm/empty_wasi_sdk.ts +166 -0
- package/src/wasm/fixtures/gcd.wasm +0 -0
- package/src/wasm/fixtures/gcd.wat +27 -0
- package/src/wasm/index.ts +1 -0
- package/src/wasm/wasm_module.ts +260 -0
- package/src/worker/browser/index.ts +2 -0
- package/src/worker/browser/start_web_module.ts +24 -0
- package/src/worker/browser/web_data_store.ts +38 -0
- package/src/worker/browser/web_worker.ts +25 -0
- package/src/worker/data_store.ts +19 -0
- package/src/worker/index.ts +2 -0
- package/src/worker/node/index.ts +2 -0
- package/src/worker/node/node_data_store.ts +27 -0
- package/src/worker/node/node_worker.ts +23 -0
- package/src/worker/node/start_node_module.ts +30 -0
- package/src/worker/wasm_worker.ts +7 -0
- package/src/worker/worker_pool.ts +73 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { BarretenbergSync, Fr as FrBarretenberg } from '@aztec/bb.js';
|
|
2
|
+
import { Fr } from '../../fields/fields.js';
|
|
3
|
+
import { serializeToFields } from '../../serialize/serialize.js';
|
|
4
|
+
/**
|
|
5
|
+
* Create a poseidon hash (field) from an array of input fields.
|
|
6
|
+
* @param input - The input fields to hash.
|
|
7
|
+
* @returns The poseidon hash.
|
|
8
|
+
*/ export async function poseidon2Hash(input) {
|
|
9
|
+
const inputFields = serializeToFields(input);
|
|
10
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
11
|
+
const hash = api.poseidon2Hash(inputFields.map((i)=>new FrBarretenberg(i.toBuffer())));
|
|
12
|
+
return Fr.fromBuffer(Buffer.from(hash.toBuffer()));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create a poseidon hash (field) from an array of input fields and a domain separator.
|
|
16
|
+
* @param input - The input fields to hash.
|
|
17
|
+
* @param separator - The domain separator.
|
|
18
|
+
* @returns The poseidon hash.
|
|
19
|
+
*/ export async function poseidon2HashWithSeparator(input, separator) {
|
|
20
|
+
const inputFields = serializeToFields(input);
|
|
21
|
+
inputFields.unshift(new Fr(separator));
|
|
22
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
23
|
+
const hash = api.poseidon2Hash(inputFields.map((i)=>new FrBarretenberg(i.toBuffer())));
|
|
24
|
+
return Fr.fromBuffer(Buffer.from(hash.toBuffer()));
|
|
25
|
+
}
|
|
26
|
+
export async function poseidon2HashAccumulate(input) {
|
|
27
|
+
const inputFields = serializeToFields(input);
|
|
28
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
29
|
+
const result = api.poseidon2HashAccumulate(inputFields.map((i)=>new FrBarretenberg(i.toBuffer())));
|
|
30
|
+
return Fr.fromBuffer(Buffer.from(result.toBuffer()));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Runs a Poseidon2 permutation.
|
|
34
|
+
* @param input the input state. Expected to be of size 4.
|
|
35
|
+
* @returns the output state, size 4.
|
|
36
|
+
*/ export async function poseidon2Permutation(input) {
|
|
37
|
+
const inputFields = serializeToFields(input);
|
|
38
|
+
// We'd like this assertion but it's not possible to use it in the browser.
|
|
39
|
+
// assert(input.length === 4, 'Input state must be of size 4');
|
|
40
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
41
|
+
const res = api.poseidon2Permutation(inputFields.map((i)=>new FrBarretenberg(i.toBuffer())));
|
|
42
|
+
// We'd like this assertion but it's not possible to use it in the browser.
|
|
43
|
+
// assert(res.length === 4, 'Output state must be of size 4');
|
|
44
|
+
return res.map((o)=>Fr.fromBuffer(Buffer.from(o.toBuffer())));
|
|
45
|
+
}
|
|
46
|
+
export async function poseidon2HashBytes(input) {
|
|
47
|
+
const inputFields = [];
|
|
48
|
+
for(let i = 0; i < input.length; i += 31){
|
|
49
|
+
const fieldBytes = Buffer.alloc(32, 0);
|
|
50
|
+
input.slice(i, i + 31).copy(fieldBytes);
|
|
51
|
+
// Noir builds the bytes as little-endian, so we need to reverse them.
|
|
52
|
+
fieldBytes.reverse();
|
|
53
|
+
inputFields.push(Fr.fromBuffer(fieldBytes));
|
|
54
|
+
}
|
|
55
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
56
|
+
const res = api.poseidon2Hash(inputFields.map((i)=>new FrBarretenberg(i.toBuffer())));
|
|
57
|
+
return Fr.fromBuffer(Buffer.from(res.toBuffer()));
|
|
58
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
export declare const randomBytes: (len: number) => Buffer;
|
|
4
|
+
/**
|
|
5
|
+
* Generate a random integer less than max.
|
|
6
|
+
* @param max - The maximum value.
|
|
7
|
+
* @returns A random integer.
|
|
8
|
+
*
|
|
9
|
+
* TODO(#3949): This is insecure as it's modulo biased. Nuke or safeguard before mainnet.
|
|
10
|
+
*/
|
|
11
|
+
export declare const randomInt: (max: number) => number;
|
|
12
|
+
/**
|
|
13
|
+
* Generate a random bigint less than max.
|
|
14
|
+
* @param max - The maximum value.
|
|
15
|
+
* @returns A random bigint.
|
|
16
|
+
*
|
|
17
|
+
* TODO(#3949): This is insecure as it's modulo biased. Nuke or safeguard before mainnet.
|
|
18
|
+
*/
|
|
19
|
+
export declare const randomBigInt: (max: bigint) => bigint;
|
|
20
|
+
/**
|
|
21
|
+
* Generate a random boolean value.
|
|
22
|
+
* @returns A random boolean value.
|
|
23
|
+
*/
|
|
24
|
+
export declare const randomBoolean: () => boolean;
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/random/index.ts"],"names":[],"mappings":";;AAmBA,eAAO,MAAM,WAAW,QAAS,MAAM,WA8BtC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,QAAS,MAAM,WAIpC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,QAAS,MAAM,WAIvC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,eAGzB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import nodeCrypto from 'crypto';
|
|
2
|
+
import isNode from 'detect-node';
|
|
3
|
+
import { RandomnessSingleton } from './randomness_singleton.js';
|
|
4
|
+
// limit of Crypto.getRandomValues()
|
|
5
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues
|
|
6
|
+
const MAX_BYTES = 65536;
|
|
7
|
+
const getWebCrypto = ()=>{
|
|
8
|
+
if (typeof window !== 'undefined' && window.crypto) {
|
|
9
|
+
return window.crypto;
|
|
10
|
+
}
|
|
11
|
+
if (typeof self !== 'undefined' && self.crypto) {
|
|
12
|
+
return self.crypto;
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
};
|
|
16
|
+
export const randomBytes = (len)=>{
|
|
17
|
+
const singleton = RandomnessSingleton.getInstance();
|
|
18
|
+
if (singleton.isDeterministic()) {
|
|
19
|
+
return singleton.getBytes(len);
|
|
20
|
+
}
|
|
21
|
+
if (isNode) {
|
|
22
|
+
return nodeCrypto.randomBytes(len);
|
|
23
|
+
}
|
|
24
|
+
const crypto = getWebCrypto();
|
|
25
|
+
if (!crypto) {
|
|
26
|
+
throw new Error('randomBytes UnsupportedEnvironment');
|
|
27
|
+
}
|
|
28
|
+
const buf = Buffer.allocUnsafe(len);
|
|
29
|
+
if (len > MAX_BYTES) {
|
|
30
|
+
// this is the max bytes crypto.getRandomValues
|
|
31
|
+
// can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
|
|
32
|
+
for(let generated = 0; generated < len; generated += MAX_BYTES){
|
|
33
|
+
// buffer.slice automatically checks if the end is past the end of
|
|
34
|
+
// the buffer so we don't have to here
|
|
35
|
+
crypto.getRandomValues(buf.slice(generated, generated + MAX_BYTES));
|
|
36
|
+
}
|
|
37
|
+
} else {
|
|
38
|
+
crypto.getRandomValues(buf);
|
|
39
|
+
}
|
|
40
|
+
return buf;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Generate a random integer less than max.
|
|
44
|
+
* @param max - The maximum value.
|
|
45
|
+
* @returns A random integer.
|
|
46
|
+
*
|
|
47
|
+
* TODO(#3949): This is insecure as it's modulo biased. Nuke or safeguard before mainnet.
|
|
48
|
+
*/ export const randomInt = (max)=>{
|
|
49
|
+
const randomBuffer = randomBytes(6); // Generate a buffer of 6 random bytes.
|
|
50
|
+
const randomInt = parseInt(randomBuffer.toString('hex'), 16); // Convert buffer to a large integer.
|
|
51
|
+
return randomInt % max; // Use modulo to ensure the result is less than max.
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Generate a random bigint less than max.
|
|
55
|
+
* @param max - The maximum value.
|
|
56
|
+
* @returns A random bigint.
|
|
57
|
+
*
|
|
58
|
+
* TODO(#3949): This is insecure as it's modulo biased. Nuke or safeguard before mainnet.
|
|
59
|
+
*/ export const randomBigInt = (max)=>{
|
|
60
|
+
const randomBuffer = randomBytes(8); // Generate a buffer of 8 random bytes.
|
|
61
|
+
const randomBigInt = BigInt(`0x${randomBuffer.toString('hex')}`); // Convert buffer to a large integer.
|
|
62
|
+
return randomBigInt % max; // Use modulo to ensure the result is less than max.
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Generate a random boolean value.
|
|
66
|
+
* @returns A random boolean value.
|
|
67
|
+
*/ export const randomBoolean = ()=>{
|
|
68
|
+
const randomByte = randomBytes(1)[0]; // Generate a single random byte.
|
|
69
|
+
return randomByte % 2 === 0; // Use modulo to determine if the byte is even or odd.
|
|
70
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
/**
|
|
4
|
+
* A number generator which is used as a source of randomness in the system. If the SEED env variable is set, the
|
|
5
|
+
* generator will be deterministic and will always produce the same sequence of numbers. Otherwise a true randomness
|
|
6
|
+
* sourced by crypto library will be used.
|
|
7
|
+
* @remarks This class was implemented so that tests can be run deterministically.
|
|
8
|
+
*
|
|
9
|
+
* TODO(#3949): This is not safe enough for production and should be made safer or removed before mainnet.
|
|
10
|
+
*/
|
|
11
|
+
export declare class RandomnessSingleton {
|
|
12
|
+
private readonly seed?;
|
|
13
|
+
private readonly log;
|
|
14
|
+
private static instance;
|
|
15
|
+
private counter;
|
|
16
|
+
private constructor();
|
|
17
|
+
static getInstance(): RandomnessSingleton;
|
|
18
|
+
/**
|
|
19
|
+
* Indicates whether the generator is deterministic (was seeded) or not.
|
|
20
|
+
* @returns Whether the generator is deterministic.
|
|
21
|
+
*/
|
|
22
|
+
isDeterministic(): boolean;
|
|
23
|
+
getBytes(length: number): Buffer;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=randomness_singleton.d.ts.map
|
|
@@ -0,0 +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;WAYO,WAAW,IAAI,mBAAmB;IAShD;;;OAGG;IACI,eAAe,IAAI,OAAO;IAI1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAiBxC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { createLogger } from '../../log/pino-logger.js';
|
|
2
|
+
/**
|
|
3
|
+
* A number generator which is used as a source of randomness in the system. If the SEED env variable is set, the
|
|
4
|
+
* generator will be deterministic and will always produce the same sequence of numbers. Otherwise a true randomness
|
|
5
|
+
* sourced by crypto library will be used.
|
|
6
|
+
* @remarks This class was implemented so that tests can be run deterministically.
|
|
7
|
+
*
|
|
8
|
+
* TODO(#3949): This is not safe enough for production and should be made safer or removed before mainnet.
|
|
9
|
+
*/ export class RandomnessSingleton {
|
|
10
|
+
seed;
|
|
11
|
+
log;
|
|
12
|
+
static instance;
|
|
13
|
+
counter;
|
|
14
|
+
constructor(seed, log = createLogger('foundation:randomness_singleton')){
|
|
15
|
+
this.seed = seed;
|
|
16
|
+
this.log = log;
|
|
17
|
+
this.counter = 0;
|
|
18
|
+
if (seed !== undefined) {
|
|
19
|
+
this.log.debug(`Using pseudo-randomness with seed: ${seed}`);
|
|
20
|
+
this.counter = seed;
|
|
21
|
+
} else {
|
|
22
|
+
this.log.debug('Using true randomness');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
static getInstance() {
|
|
26
|
+
if (!RandomnessSingleton.instance) {
|
|
27
|
+
const seed = process.env.SEED ? Number(process.env.SEED) : undefined;
|
|
28
|
+
RandomnessSingleton.instance = new RandomnessSingleton(seed);
|
|
29
|
+
}
|
|
30
|
+
return RandomnessSingleton.instance;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Indicates whether the generator is deterministic (was seeded) or not.
|
|
34
|
+
* @returns Whether the generator is deterministic.
|
|
35
|
+
*/ isDeterministic() {
|
|
36
|
+
return this.seed !== undefined;
|
|
37
|
+
}
|
|
38
|
+
getBytes(length) {
|
|
39
|
+
if (this.seed === undefined) {
|
|
40
|
+
// Note: It would be more natural to just have the contents of randomBytes(...) function from
|
|
41
|
+
// yarn-project/foundation/src/crypto/random/index.ts here but that would result in a larger
|
|
42
|
+
// refactor so I think prohibiting use of this func when the seed is undefined is and handling
|
|
43
|
+
// the singleton within randomBytes func is fine.
|
|
44
|
+
throw new Error('RandomnessSingleton is not implemented for non-deterministic mode');
|
|
45
|
+
}
|
|
46
|
+
const result = Buffer.alloc(length);
|
|
47
|
+
for(let i = 0; i < length; i++){
|
|
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
|
|
49
|
+
// a mask to get the last 8 bits of the shifted counter.
|
|
50
|
+
result[i] = this.counter >> i * 8 & 0xff;
|
|
51
|
+
}
|
|
52
|
+
this.counter++;
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { BarretenbergSync } from '@aztec/bb.js';
|
|
2
|
+
/**
|
|
3
|
+
* Secp256k1 elliptic curve operations.
|
|
4
|
+
*/ export class Secp256k1 {
|
|
5
|
+
// prettier-ignore
|
|
6
|
+
static generator = Buffer.from([
|
|
7
|
+
0x79,
|
|
8
|
+
0xbe,
|
|
9
|
+
0x66,
|
|
10
|
+
0x7e,
|
|
11
|
+
0xf9,
|
|
12
|
+
0xdc,
|
|
13
|
+
0xbb,
|
|
14
|
+
0xac,
|
|
15
|
+
0x55,
|
|
16
|
+
0xa0,
|
|
17
|
+
0x62,
|
|
18
|
+
0x95,
|
|
19
|
+
0xce,
|
|
20
|
+
0x87,
|
|
21
|
+
0x0b,
|
|
22
|
+
0x07,
|
|
23
|
+
0x02,
|
|
24
|
+
0x9b,
|
|
25
|
+
0xfc,
|
|
26
|
+
0xdb,
|
|
27
|
+
0x2d,
|
|
28
|
+
0xce,
|
|
29
|
+
0x28,
|
|
30
|
+
0xd9,
|
|
31
|
+
0x59,
|
|
32
|
+
0xf2,
|
|
33
|
+
0x81,
|
|
34
|
+
0x5b,
|
|
35
|
+
0x16,
|
|
36
|
+
0xf8,
|
|
37
|
+
0x17,
|
|
38
|
+
0x98,
|
|
39
|
+
0x48,
|
|
40
|
+
0x3a,
|
|
41
|
+
0xda,
|
|
42
|
+
0x77,
|
|
43
|
+
0x26,
|
|
44
|
+
0xa3,
|
|
45
|
+
0xc4,
|
|
46
|
+
0x65,
|
|
47
|
+
0x5d,
|
|
48
|
+
0xa4,
|
|
49
|
+
0xfb,
|
|
50
|
+
0xfc,
|
|
51
|
+
0x0e,
|
|
52
|
+
0x11,
|
|
53
|
+
0x08,
|
|
54
|
+
0xa8,
|
|
55
|
+
0xfd,
|
|
56
|
+
0x17,
|
|
57
|
+
0xb4,
|
|
58
|
+
0x48,
|
|
59
|
+
0xa6,
|
|
60
|
+
0x85,
|
|
61
|
+
0x54,
|
|
62
|
+
0x19,
|
|
63
|
+
0x9c,
|
|
64
|
+
0x47,
|
|
65
|
+
0xd0,
|
|
66
|
+
0x8f,
|
|
67
|
+
0xfb,
|
|
68
|
+
0x10,
|
|
69
|
+
0xd4,
|
|
70
|
+
0xb8
|
|
71
|
+
]);
|
|
72
|
+
/**
|
|
73
|
+
* Point generator
|
|
74
|
+
* @returns The generator for the curve.
|
|
75
|
+
*/ generator() {
|
|
76
|
+
return Secp256k1.generator;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Multiplies a point by a scalar (adds the point `scalar` amount of time).
|
|
80
|
+
* @param point - Point to multiply.
|
|
81
|
+
* @param scalar - Scalar to multiply by.
|
|
82
|
+
* @returns Result of the multiplication.
|
|
83
|
+
*/ async mul(point, scalar) {
|
|
84
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
85
|
+
const [result] = api.getWasm().callWasmExport('ecc_secp256k1__mul', [
|
|
86
|
+
point,
|
|
87
|
+
scalar
|
|
88
|
+
], [
|
|
89
|
+
64
|
|
90
|
+
]);
|
|
91
|
+
return Buffer.from(result);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Gets a random field element.
|
|
95
|
+
* @returns Random field element.
|
|
96
|
+
*/ async getRandomFr() {
|
|
97
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
98
|
+
const [result] = api.getWasm().callWasmExport('ecc_secp256k1__get_random_scalar_mod_circuit_modulus', [], [
|
|
99
|
+
32
|
|
100
|
+
]);
|
|
101
|
+
return Buffer.from(result);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Converts a 512 bits long buffer to a field.
|
|
105
|
+
* @param uint512Buf - The buffer to convert.
|
|
106
|
+
* @returns Buffer representation of the field element.
|
|
107
|
+
*/ async reduce512BufferToFr(uint512Buf) {
|
|
108
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
109
|
+
const [result] = api.getWasm().callWasmExport('ecc_secp256k1__reduce512_buffer_mod_circuit_modulus', [
|
|
110
|
+
uint512Buf
|
|
111
|
+
], [
|
|
112
|
+
32
|
|
113
|
+
]);
|
|
114
|
+
return Buffer.from(result);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/secp256k1-signer/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
|