@aptos-labs/ts-sdk 3.1.0 → 3.1.2
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/dist/common/chunk-6MMUUJHX.js.map +1 -1
- package/dist/common/cli/index.js.map +1 -1
- package/dist/common/index.js +13 -13
- package/dist/common/index.js.map +1 -1
- package/dist/esm/account/AbstractKeylessAccount.mjs +1 -1
- package/dist/esm/account/AbstractedAccount.mjs +1 -1
- package/dist/esm/account/Account.mjs +1 -1
- package/dist/esm/account/AccountUtils.mjs +1 -1
- package/dist/esm/account/DerivableAbstractedAccount.mjs +1 -1
- package/dist/esm/account/Ed25519Account.mjs +1 -1
- package/dist/esm/account/EphemeralKeyPair.mjs +1 -1
- package/dist/esm/account/FederatedKeylessAccount.mjs +1 -1
- package/dist/esm/account/KeylessAccount.mjs +1 -1
- package/dist/esm/account/MultiEd25519Account.mjs +1 -1
- package/dist/esm/account/MultiKeyAccount.mjs +1 -1
- package/dist/esm/account/SingleKeyAccount.mjs +1 -1
- package/dist/esm/account/index.mjs +1 -1
- package/dist/esm/account/utils.mjs +1 -1
- package/dist/esm/api/account/abstraction.mjs +1 -1
- package/dist/esm/api/account.mjs +1 -1
- package/dist/esm/api/ans.mjs +1 -1
- package/dist/esm/api/aptos.mjs +1 -1
- package/dist/esm/api/coin.mjs +1 -1
- package/dist/esm/api/digitalAsset.mjs +1 -1
- package/dist/esm/api/event.mjs +1 -1
- package/dist/esm/api/faucet.mjs +1 -1
- package/dist/esm/api/fungibleAsset.mjs +1 -1
- package/dist/esm/api/general.mjs +1 -1
- package/dist/esm/api/index.mjs +1 -1
- package/dist/esm/api/keyless.mjs +1 -1
- package/dist/esm/api/object.mjs +1 -1
- package/dist/esm/api/staking.mjs +1 -1
- package/dist/esm/api/table.mjs +1 -1
- package/dist/esm/api/transaction.mjs +1 -1
- package/dist/esm/api/transactionSubmission/build.mjs +1 -1
- package/dist/esm/api/transactionSubmission/helpers.d.mts +22 -9
- package/dist/esm/api/transactionSubmission/helpers.mjs +1 -1
- package/dist/esm/api/transactionSubmission/management.mjs +1 -1
- package/dist/esm/api/transactionSubmission/sign.mjs +1 -1
- package/dist/esm/api/transactionSubmission/simulate.mjs +1 -1
- package/dist/esm/api/transactionSubmission/submit.mjs +1 -1
- package/dist/esm/api/utils.mjs +1 -1
- package/dist/esm/bcs/deserializer.mjs +1 -1
- package/dist/esm/bcs/index.mjs +1 -1
- package/dist/esm/bcs/serializable/entryFunctionBytes.mjs +1 -1
- package/dist/esm/bcs/serializable/fixedBytes.mjs +1 -1
- package/dist/esm/bcs/serializable/movePrimitives.mjs +1 -1
- package/dist/esm/bcs/serializable/moveStructs.mjs +1 -1
- package/dist/esm/bcs/serializer.mjs +1 -1
- package/dist/esm/chunk-4R4AI5RT.mjs +2 -0
- package/dist/esm/{chunk-HUWKPKPQ.mjs.map → chunk-4R4AI5RT.mjs.map} +1 -1
- package/dist/esm/{chunk-2BOHKN33.mjs → chunk-6MWXV62C.mjs} +2 -2
- package/dist/esm/{chunk-FGFLPH5K.mjs → chunk-6PKBXYG3.mjs} +2 -2
- package/dist/esm/{chunk-6WDVDEQZ.mjs → chunk-6Y6ZO7TS.mjs} +2 -2
- package/dist/esm/{chunk-SLWIGOQL.mjs → chunk-AQQEQB35.mjs} +2 -2
- package/dist/esm/{chunk-HNBVYE3N.mjs → chunk-BUUV6B4P.mjs} +2 -2
- package/dist/esm/{chunk-WSR5EBJM.mjs → chunk-BYINW7I2.mjs} +2 -2
- package/dist/esm/{chunk-ORMOQWWH.mjs → chunk-C6JRJNK3.mjs} +2 -2
- package/dist/esm/{chunk-Z5URUE4U.mjs → chunk-DW6WLD2B.mjs} +2 -2
- package/dist/esm/{chunk-U3GMNXO4.mjs → chunk-E6IUB35J.mjs} +2 -2
- package/dist/esm/{chunk-CO67Y6YE.mjs → chunk-EPMBZCYJ.mjs} +2 -2
- package/dist/esm/{chunk-RQX6JOEN.mjs → chunk-FBCXUC7J.mjs} +2 -2
- package/dist/esm/{chunk-CFQFFP6N.mjs → chunk-FWGLACJS.mjs} +2 -2
- package/dist/esm/{chunk-TYYVB2A6.mjs → chunk-GRB6YSIT.mjs} +2 -2
- package/dist/esm/{chunk-RGKRCZ36.mjs → chunk-GYVSI3TS.mjs} +2 -2
- package/dist/esm/chunk-HPQMAP7O.mjs +2 -0
- package/dist/esm/{chunk-ACNHLCQQ.mjs → chunk-I4NMWLUZ.mjs} +5 -5
- package/dist/esm/chunk-I4NMWLUZ.mjs.map +1 -0
- package/dist/esm/{chunk-TOBQ5UE6.mjs → chunk-IXYGZ57N.mjs} +2 -2
- package/dist/esm/{chunk-MML57K5H.mjs → chunk-NII5Q32W.mjs} +2 -2
- package/dist/esm/{chunk-EBMEXURY.mjs → chunk-NJN3EAOM.mjs} +2 -2
- package/dist/esm/{chunk-XKUIMGKU.mjs → chunk-OYH2T6V5.mjs} +2 -2
- package/dist/esm/chunk-OYUW6ZN2.mjs +2 -0
- package/dist/esm/{chunk-5URUYE6H.mjs → chunk-PQS3II2E.mjs} +2 -2
- package/dist/esm/{chunk-N6YTF76Q.mjs → chunk-PRUQZNAP.mjs} +2 -2
- package/dist/esm/{chunk-UQWF24SS.mjs → chunk-QGFWOGAV.mjs} +2 -2
- package/dist/esm/{chunk-4COLMDT3.mjs → chunk-QQEK2GJC.mjs} +2 -2
- package/dist/esm/chunk-QREVMGQZ.mjs +2 -0
- package/dist/esm/chunk-QREVMGQZ.mjs.map +1 -0
- package/dist/esm/{chunk-MNDTFHDB.mjs → chunk-RFQFTIOA.mjs} +2 -2
- package/dist/esm/{chunk-XZ75T7Q7.mjs → chunk-THUSLDD6.mjs} +2 -2
- package/dist/esm/{chunk-FLZPUYXQ.mjs → chunk-UCBUUH5M.mjs} +2 -2
- package/dist/esm/{chunk-MT2RJ7H3.mjs → chunk-WLUXOUZH.mjs} +2 -2
- package/dist/esm/{chunk-FYYEPFML.mjs → chunk-XIQFX5FV.mjs} +2 -2
- package/dist/esm/{chunk-7DQDJ2SA.mjs → chunk-YFFDF22R.mjs} +2 -2
- package/dist/esm/{chunk-WCMW2L3P.mjs → chunk-Z6KQX6VX.mjs} +2 -2
- package/dist/esm/{chunk-B563XRSZ.mjs → chunk-ZMT2M6YT.mjs} +2 -2
- package/dist/esm/cli/index.mjs +1 -1
- package/dist/esm/cli/localNode.mjs +1 -1
- package/dist/esm/client/core.mjs +1 -1
- package/dist/esm/client/get.mjs +1 -1
- package/dist/esm/client/index.mjs +1 -1
- package/dist/esm/client/post.mjs +1 -1
- package/dist/esm/core/account/index.mjs +1 -1
- package/dist/esm/core/account/utils/address.mjs +1 -1
- package/dist/esm/core/account/utils/index.mjs +1 -1
- package/dist/esm/core/accountAddress.mjs +1 -1
- package/dist/esm/core/authenticationKey.mjs +1 -1
- package/dist/esm/core/crypto/abstraction.mjs +1 -1
- package/dist/esm/core/crypto/deserializationUtils.mjs +1 -1
- package/dist/esm/core/crypto/ed25519.mjs +1 -1
- package/dist/esm/core/crypto/ephemeral.mjs +1 -1
- package/dist/esm/core/crypto/federatedKeyless.mjs +1 -1
- package/dist/esm/core/crypto/index.mjs +1 -1
- package/dist/esm/core/crypto/keyless.mjs +1 -1
- package/dist/esm/core/crypto/multiEd25519.mjs +1 -1
- package/dist/esm/core/crypto/multiKey.mjs +1 -1
- package/dist/esm/core/crypto/proof.mjs +1 -1
- package/dist/esm/core/crypto/publicKey.mjs +1 -1
- package/dist/esm/core/crypto/secp256k1.mjs +1 -1
- package/dist/esm/core/crypto/signature.mjs +1 -1
- package/dist/esm/core/crypto/singleKey.mjs +1 -1
- package/dist/esm/core/index.mjs +1 -1
- package/dist/esm/errors/index.mjs +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/internal/abstraction.mjs +1 -1
- package/dist/esm/internal/account.mjs +1 -1
- package/dist/esm/internal/ans.mjs +1 -1
- package/dist/esm/internal/coin.mjs +1 -1
- package/dist/esm/internal/digitalAsset.mjs +1 -1
- package/dist/esm/internal/event.mjs +1 -1
- package/dist/esm/internal/faucet.mjs +1 -1
- package/dist/esm/internal/fungibleAsset.mjs +1 -1
- package/dist/esm/internal/general.mjs +1 -1
- package/dist/esm/internal/keyless.mjs +1 -1
- package/dist/esm/internal/object.mjs +1 -1
- package/dist/esm/internal/staking.mjs +1 -1
- package/dist/esm/internal/table.mjs +1 -1
- package/dist/esm/internal/transaction.mjs +1 -1
- package/dist/esm/internal/transactionSubmission.mjs +1 -1
- package/dist/esm/internal/utils/index.mjs +1 -1
- package/dist/esm/internal/utils/utils.mjs +1 -1
- package/dist/esm/internal/view.mjs +1 -1
- package/dist/esm/transactions/authenticator/account.mjs +1 -1
- package/dist/esm/transactions/authenticator/index.mjs +1 -1
- package/dist/esm/transactions/authenticator/transaction.mjs +1 -1
- package/dist/esm/transactions/index.mjs +1 -1
- package/dist/esm/transactions/instances/chainId.mjs +1 -1
- package/dist/esm/transactions/instances/identifier.mjs +1 -1
- package/dist/esm/transactions/instances/index.mjs +1 -1
- package/dist/esm/transactions/instances/moduleId.mjs +1 -1
- package/dist/esm/transactions/instances/multiAgentTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/rawTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/rotationProofChallenge.mjs +1 -1
- package/dist/esm/transactions/instances/signedTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/simpleTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/transactionPayload.mjs +1 -1
- package/dist/esm/transactions/management/accountSequenceNumber.mjs +1 -1
- package/dist/esm/transactions/management/index.mjs +1 -1
- package/dist/esm/transactions/management/transactionWorker.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/helpers.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/index.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/remoteAbi.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/signingMessage.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/transactionBuilder.mjs +1 -1
- package/dist/esm/transactions/typeTag/index.mjs +1 -1
- package/dist/esm/transactions/typeTag/parser.mjs +1 -1
- package/dist/esm/utils/helpers.mjs +1 -1
- package/dist/esm/utils/index.mjs +1 -1
- package/dist/esm/utils/normalizeBundle.mjs +1 -1
- package/dist/esm/version.d.mts +1 -1
- package/dist/esm/version.mjs +1 -1
- package/package.json +1 -1
- package/src/api/transactionSubmission/helpers.ts +26 -20
- package/src/api/transactionSubmission/submit.ts +3 -3
- package/src/transactions/transactionBuilder/remoteAbi.ts +10 -1
- package/src/version.ts +1 -1
- package/dist/esm/chunk-ACNHLCQQ.mjs.map +0 -1
- package/dist/esm/chunk-CW35YAMN.mjs +0 -2
- package/dist/esm/chunk-HUWKPKPQ.mjs +0 -2
- package/dist/esm/chunk-W4BSN6SK.mjs +0 -2
- package/dist/esm/chunk-W4BSN6SK.mjs.map +0 -1
- package/dist/esm/chunk-XJJVJOX5.mjs +0 -2
- package/src/internal/move/jwks/build/jwk/BuildInfo.yaml +0 -56
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator_factory.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator_v2.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_coin.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_governance.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/block.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/chain_id.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/chain_status.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/code.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/coin.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/config_buffer.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/consensus_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/create_signer.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/delegation_pool.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/dispatchable_fungible_asset.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/dkg.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/event.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/execution_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/function_info.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/fungible_asset.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/gas_schedule.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/genesis.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/governance_proposal.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/guid.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/jwk_consensus_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/jwks.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/keyless_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/managed_coin.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/multisig_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/object.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/object_code_deployment.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/optional_aggregator.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/primary_fungible_store.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_api_v0_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_config_seqnum.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration_state.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration_with_dkg.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/resource_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/stake.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_contract.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_proxy.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/state_storage.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/storage_gas.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/system_addresses.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/timestamp.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_context.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_fee.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_validation.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/util.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/validator_consensus_info.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/version.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/vesting.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/voting.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/any.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/aptos_hash.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/big_vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bls12381.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bls12381_algebra.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bn254_algebra.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/capability.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/comparator.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/copyable_any.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/crypto_algebra.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/debug.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ed25519.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/fixed_point64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/from_bcs.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math128.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math_fixed.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math_fixed64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/multi_ed25519.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/pool_u64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/pool_u64_unbound.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_bulletproofs.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_elgamal.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_pedersen.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/secp256k1.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/simple_map.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/smart_table.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/smart_vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/string_utils.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/table.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/table_with_length.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/type_info.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/acl.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/bcs.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/bit_vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/error.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/features.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/fixed_point32.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/hash.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/option.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/signer.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/string.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_scripts/main.mv +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator_factory.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator_v2.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_coin.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_governance.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/block.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/chain_id.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/chain_status.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/code.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/coin.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/config_buffer.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/consensus_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/create_signer.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/delegation_pool.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/dispatchable_fungible_asset.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/dkg.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/event.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/execution_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/function_info.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/fungible_asset.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/gas_schedule.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/genesis.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/governance_proposal.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/guid.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/jwk_consensus_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/jwks.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/keyless_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/managed_coin.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/multisig_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/object.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/object_code_deployment.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/optional_aggregator.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/primary_fungible_store.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_api_v0_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_config_seqnum.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration_state.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration_with_dkg.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/resource_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/stake.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_contract.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_proxy.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/state_storage.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/storage_gas.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/system_addresses.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/timestamp.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_context.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_fee.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_validation.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/util.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/validator_consensus_info.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/version.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/vesting.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/voting.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/any.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/aptos_hash.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/big_vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bls12381.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bls12381_algebra.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bn254_algebra.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/capability.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/comparator.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/copyable_any.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/crypto_algebra.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/debug.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ed25519.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/fixed_point64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/from_bcs.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math128.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math_fixed.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math_fixed64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/multi_ed25519.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/pool_u64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/pool_u64_unbound.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_bulletproofs.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_elgamal.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_pedersen.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/secp256k1.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/simple_map.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/smart_table.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/smart_vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/string_utils.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/table.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/table_with_length.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/type_info.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/acl.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/bcs.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/bit_vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/error.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/features.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/fixed_point32.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/hash.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/option.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/signer.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/string.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/main.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/account.move +0 -1533
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator.move +0 -48
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator_factory.move +0 -66
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator_v2.move +0 -280
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_account.move +0 -443
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_coin.move +0 -204
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_governance.move +0 -1387
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/block.move +0 -394
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/chain_id.move +0 -41
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/chain_status.move +0 -48
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/code.move +0 -367
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/coin.move +0 -2214
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/config_buffer.move +0 -101
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/consensus_config.move +0 -77
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/create_signer.move +0 -21
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/delegation_pool.move +0 -5568
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/dispatchable_fungible_asset.move +0 -228
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/dkg.move +0 -121
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/event.move +0 -92
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/execution_config.move +0 -66
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/function_info.move +0 -100
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/fungible_asset.move +0 -1566
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/gas_schedule.move +0 -176
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/genesis.move +0 -550
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/governance_proposal.move +0 -23
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/guid.move +0 -68
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/jwk_consensus_config.move +0 -148
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/jwks.move +0 -817
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/keyless_account.move +0 -312
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/managed_coin.move +0 -205
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/multisig_account.move +0 -2477
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/object.move +0 -1073
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/object_code_deployment.move +0 -147
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/optional_aggregator.move +0 -295
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/primary_fungible_store.move +0 -405
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness.move +0 -574
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_api_v0_config.move +0 -57
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_config.move +0 -153
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_config_seqnum.move +0 -49
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration.move +0 -237
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration_state.move +0 -132
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration_with_dkg.move +0 -69
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/resource_account.move +0 -267
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/stake.move +0 -3286
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_config.move +0 -686
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_contract.move +0 -1618
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_proxy.move +0 -228
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/state_storage.move +0 -90
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/storage_gas.move +0 -622
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/system_addresses.move +0 -82
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/timestamp.move +0 -88
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_context.move +0 -262
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_fee.move +0 -457
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_validation.move +0 -501
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/util.move +0 -16
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/validator_consensus_info.move +0 -42
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/version.move +0 -115
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/vesting.move +0 -2183
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/voting.move +0 -1279
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/any.move +0 -57
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/aptos_hash.move +0 -253
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/big_vector.move +0 -469
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bls12381.move +0 -985
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bls12381_algebra.move +0 -802
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bn254_algebra.move +0 -855
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/capability.move +0 -193
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/comparator.move +0 -173
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/copyable_any.move +0 -45
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/crypto_algebra.move +0 -351
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/debug.move +0 -278
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ed25519.move +0 -262
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/fixed_point64.move +0 -447
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/from_bcs.move +0 -91
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math128.move +0 -381
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math64.move +0 -336
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math_fixed.move +0 -139
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math_fixed64.move +0 -142
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/multi_ed25519.move +0 -482
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/pool_u64.move +0 -571
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/pool_u64_unbound.move +0 -270
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255.move +0 -1310
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_bulletproofs.move +0 -253
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_elgamal.move +0 -234
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_pedersen.move +0 -158
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/secp256k1.move +0 -114
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/simple_map.move +0 -319
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/smart_table.move +0 -769
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/smart_vector.move +0 -766
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/string_utils.move +0 -148
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/table.move +0 -152
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/table_with_length.move +0 -141
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/type_info.move +0 -351
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/acl.move +0 -46
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/bcs.move +0 -27
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/bit_vector.move +0 -239
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/error.move +0 -88
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/features.move +0 -780
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/fixed_point32.move +0 -295
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/hash.move +0 -8
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/option.move +0 -356
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/signer.move +0 -21
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/string.move +0 -93
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/vector.move +0 -669
- package/src/internal/move/jwks/build/jwk/sources/main.move +0 -20
- /package/dist/esm/{chunk-2BOHKN33.mjs.map → chunk-6MWXV62C.mjs.map} +0 -0
- /package/dist/esm/{chunk-FGFLPH5K.mjs.map → chunk-6PKBXYG3.mjs.map} +0 -0
- /package/dist/esm/{chunk-6WDVDEQZ.mjs.map → chunk-6Y6ZO7TS.mjs.map} +0 -0
- /package/dist/esm/{chunk-SLWIGOQL.mjs.map → chunk-AQQEQB35.mjs.map} +0 -0
- /package/dist/esm/{chunk-HNBVYE3N.mjs.map → chunk-BUUV6B4P.mjs.map} +0 -0
- /package/dist/esm/{chunk-WSR5EBJM.mjs.map → chunk-BYINW7I2.mjs.map} +0 -0
- /package/dist/esm/{chunk-ORMOQWWH.mjs.map → chunk-C6JRJNK3.mjs.map} +0 -0
- /package/dist/esm/{chunk-Z5URUE4U.mjs.map → chunk-DW6WLD2B.mjs.map} +0 -0
- /package/dist/esm/{chunk-U3GMNXO4.mjs.map → chunk-E6IUB35J.mjs.map} +0 -0
- /package/dist/esm/{chunk-CO67Y6YE.mjs.map → chunk-EPMBZCYJ.mjs.map} +0 -0
- /package/dist/esm/{chunk-RQX6JOEN.mjs.map → chunk-FBCXUC7J.mjs.map} +0 -0
- /package/dist/esm/{chunk-CFQFFP6N.mjs.map → chunk-FWGLACJS.mjs.map} +0 -0
- /package/dist/esm/{chunk-TYYVB2A6.mjs.map → chunk-GRB6YSIT.mjs.map} +0 -0
- /package/dist/esm/{chunk-RGKRCZ36.mjs.map → chunk-GYVSI3TS.mjs.map} +0 -0
- /package/dist/esm/{chunk-CW35YAMN.mjs.map → chunk-HPQMAP7O.mjs.map} +0 -0
- /package/dist/esm/{chunk-TOBQ5UE6.mjs.map → chunk-IXYGZ57N.mjs.map} +0 -0
- /package/dist/esm/{chunk-MML57K5H.mjs.map → chunk-NII5Q32W.mjs.map} +0 -0
- /package/dist/esm/{chunk-EBMEXURY.mjs.map → chunk-NJN3EAOM.mjs.map} +0 -0
- /package/dist/esm/{chunk-XKUIMGKU.mjs.map → chunk-OYH2T6V5.mjs.map} +0 -0
- /package/dist/esm/{chunk-XJJVJOX5.mjs.map → chunk-OYUW6ZN2.mjs.map} +0 -0
- /package/dist/esm/{chunk-5URUYE6H.mjs.map → chunk-PQS3II2E.mjs.map} +0 -0
- /package/dist/esm/{chunk-N6YTF76Q.mjs.map → chunk-PRUQZNAP.mjs.map} +0 -0
- /package/dist/esm/{chunk-UQWF24SS.mjs.map → chunk-QGFWOGAV.mjs.map} +0 -0
- /package/dist/esm/{chunk-4COLMDT3.mjs.map → chunk-QQEK2GJC.mjs.map} +0 -0
- /package/dist/esm/{chunk-MNDTFHDB.mjs.map → chunk-RFQFTIOA.mjs.map} +0 -0
- /package/dist/esm/{chunk-XZ75T7Q7.mjs.map → chunk-THUSLDD6.mjs.map} +0 -0
- /package/dist/esm/{chunk-FLZPUYXQ.mjs.map → chunk-UCBUUH5M.mjs.map} +0 -0
- /package/dist/esm/{chunk-MT2RJ7H3.mjs.map → chunk-WLUXOUZH.mjs.map} +0 -0
- /package/dist/esm/{chunk-FYYEPFML.mjs.map → chunk-XIQFX5FV.mjs.map} +0 -0
- /package/dist/esm/{chunk-7DQDJ2SA.mjs.map → chunk-YFFDF22R.mjs.map} +0 -0
- /package/dist/esm/{chunk-WCMW2L3P.mjs.map → chunk-Z6KQX6VX.mjs.map} +0 -0
- /package/dist/esm/{chunk-B563XRSZ.mjs.map → chunk-ZMT2M6YT.mjs.map} +0 -0
package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bn254_algebra.move
DELETED
|
@@ -1,855 +0,0 @@
|
|
|
1
|
-
/// This module defines marker types, constants and test cases for working with BN254 curves using the generic API defined in `algebra.move`.
|
|
2
|
-
/// BN254 was sampled as part of the [\[BCTV14\]](https://eprint.iacr.org/2013/879.pdf) paper .
|
|
3
|
-
/// The name denotes that it is a Barreto-Naehrig curve of embedding degree 12, defined over a 254-bit (prime) field.
|
|
4
|
-
/// The scalar field is highly 2-adic which supports subgroups of roots of unity of size <= 2^28.
|
|
5
|
-
/// (as (21888242871839275222246405745257275088548364400416034343698204186575808495617 - 1) mod 2^28 = 0)
|
|
6
|
-
///
|
|
7
|
-
/// This curve is also implemented in [libff](https://github.com/scipr-lab/libff/tree/master/libff/algebra/curves/alt_bn128) under the name `bn128`.
|
|
8
|
-
/// It is the same as the `bn254` curve used in Ethereum (eg: [go-ethereum](https://github.com/ethereum/go-ethereum/tree/master/crypto/bn254/cloudflare)).
|
|
9
|
-
///
|
|
10
|
-
/// #CAUTION
|
|
11
|
-
/// **This curve does not satisfy the 128-bit security level anymore.**
|
|
12
|
-
///
|
|
13
|
-
/// Its current security is estimated at 128-bits (see "Updating Key Size Estimations for Pairings"; by Barbulescu, Razvan and Duquesne, Sylvain; in Journal of Cryptology; 2019; https://doi.org/10.1007/s00145-018-9280-5)
|
|
14
|
-
///
|
|
15
|
-
///
|
|
16
|
-
/// Curve information:
|
|
17
|
-
/// * Base field: q =
|
|
18
|
-
/// 21888242871839275222246405745257275088696311157297823662689037894645226208583
|
|
19
|
-
/// * Scalar field: r =
|
|
20
|
-
/// 21888242871839275222246405745257275088548364400416034343698204186575808495617
|
|
21
|
-
/// * valuation(q - 1, 2) = 1
|
|
22
|
-
/// * valuation(r - 1, 2) = 28
|
|
23
|
-
/// * G1 curve equation: y^2 = x^3 + 3
|
|
24
|
-
/// * G2 curve equation: y^2 = x^3 + B, where
|
|
25
|
-
/// * B = 3/(u+9) where Fq2 is represented as Fq\[u\]/(u^2+1) =
|
|
26
|
-
/// Fq2(19485874751759354771024239261021720505790618469301721065564631296452457478373,
|
|
27
|
-
/// 266929791119991161246907387137283842545076965332900288569378510910307636690)
|
|
28
|
-
///
|
|
29
|
-
///
|
|
30
|
-
/// Currently-supported BN254 structures include `Fq12`, `Fr`, `Fq`, `Fq2`, `G1`, `G2` and `Gt`,
|
|
31
|
-
/// along with their widely-used serialization formats,
|
|
32
|
-
/// the pairing between `G1`, `G2` and `Gt`.
|
|
33
|
-
///
|
|
34
|
-
/// Other unimplemented BN254 structures and serialization formats are also listed here,
|
|
35
|
-
/// as they help define some of the currently supported structures.
|
|
36
|
-
/// Their implementation may also be added in the future.
|
|
37
|
-
///
|
|
38
|
-
/// `Fq2`: The finite field $F_{q^2}$ that can be used as the base field of $G_2$
|
|
39
|
-
/// which is an extension field of `Fq`, constructed as $F_{q^2}=F_{q}[u]/(u^2+1)$.
|
|
40
|
-
///
|
|
41
|
-
/// `FormatFq2LscLsb`: A serialization scheme for `Fq2` elements,
|
|
42
|
-
/// where an element $(c_0+c_1\cdot u)$ is represented by a byte array `b[]` of size N=64,
|
|
43
|
-
/// which is a concatenation of its coefficients serialized, with the least significant coefficient (LSC) coming first.
|
|
44
|
-
/// - `b[0..32]` is $c_0$ serialized using `FormatFqLscLsb`.
|
|
45
|
-
/// - `b[32..64]` is $c_1$ serialized using `FormatFqLscLsb`.
|
|
46
|
-
///
|
|
47
|
-
/// `Fq6`: the finite field $F_{q^6}$ used in BN254 curves,
|
|
48
|
-
/// which is an extension field of `Fq2`, constructed as $F_{q^6}=F_{q^2}[v]/(v^3-u-9)$.
|
|
49
|
-
///
|
|
50
|
-
/// `FormatFq6LscLsb`: a serialization scheme for `Fq6` elements,
|
|
51
|
-
/// where an element in the form $(c_0+c_1\cdot v+c_2\cdot v^2)$ is represented by a byte array `b[]` of size 192,
|
|
52
|
-
/// which is a concatenation of its coefficients serialized, with the least significant coefficient (LSC) coming first:
|
|
53
|
-
/// - `b[0..64]` is $c_0$ serialized using `FormatFq2LscLsb`.
|
|
54
|
-
/// - `b[64..128]` is $c_1$ serialized using `FormatFq2LscLsb`.
|
|
55
|
-
/// - `b[128..192]` is $c_2$ serialized using `FormatFq2LscLsb`.
|
|
56
|
-
///
|
|
57
|
-
/// `G1Full`: a group constructed by the points on the BN254 curve $E(F_q): y^2=x^3+3$ and the point at infinity,
|
|
58
|
-
/// under the elliptic curve point addition.
|
|
59
|
-
/// It contains the prime-order subgroup $G_1$ used in pairing.
|
|
60
|
-
///
|
|
61
|
-
/// `G2Full`: a group constructed by the points on a curve $E'(F_{q^2}): y^2=x^3+3/(u+9)$ and the point at infinity,
|
|
62
|
-
/// under the elliptic curve point addition.
|
|
63
|
-
/// It contains the prime-order subgroup $G_2$ used in pairing.
|
|
64
|
-
module std::bn254_algebra {
|
|
65
|
-
//
|
|
66
|
-
// Marker types + serialization formats begin.
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
/// The finite field $F_r$ that can be used as the scalar fields
|
|
70
|
-
/// associated with the groups $G_1$, $G_2$, $G_t$ in BN254-based pairing.
|
|
71
|
-
struct Fr {}
|
|
72
|
-
|
|
73
|
-
/// A serialization format for `Fr` elements,
|
|
74
|
-
/// where an element is represented by a byte array `b[]` of size 32 with the least significant byte (LSB) coming first.
|
|
75
|
-
///
|
|
76
|
-
/// NOTE: other implementation(s) using this format: ark-bn254-0.4.0.
|
|
77
|
-
struct FormatFrLsb {}
|
|
78
|
-
|
|
79
|
-
/// A serialization scheme for `Fr` elements,
|
|
80
|
-
/// where an element is represented by a byte array `b[]` of size 32 with the most significant byte (MSB) coming first.
|
|
81
|
-
///
|
|
82
|
-
/// NOTE: other implementation(s) using this format: ark-bn254-0.4.0.
|
|
83
|
-
struct FormatFrMsb {}
|
|
84
|
-
|
|
85
|
-
/// The finite field $F_q$ that can be used as the base field of $G_1$
|
|
86
|
-
struct Fq {}
|
|
87
|
-
|
|
88
|
-
/// A serialization format for `Fq` elements,
|
|
89
|
-
/// where an element is represented by a byte array `b[]` of size 32 with the least significant byte (LSB) coming first.
|
|
90
|
-
///
|
|
91
|
-
/// NOTE: other implementation(s) using this format: ark-bn254-0.4.0.
|
|
92
|
-
struct FormatFqLsb {}
|
|
93
|
-
|
|
94
|
-
/// A serialization scheme for `Fq` elements,
|
|
95
|
-
/// where an element is represented by a byte array `b[]` of size 32 with the most significant byte (MSB) coming first.
|
|
96
|
-
///
|
|
97
|
-
/// NOTE: other implementation(s) using this format: ark-bn254-0.4.0.
|
|
98
|
-
struct FormatFqMsb {}
|
|
99
|
-
|
|
100
|
-
/// The finite field $F_{q^12}$ used in BN254 curves,
|
|
101
|
-
/// which is an extension field of `Fq6` (defined in the module documentation), constructed as $F_{q^12}=F_{q^6}[w]/(w^2-v)$.
|
|
102
|
-
/// The field can downcast to `Gt` if it's an element of the multiplicative subgroup `Gt` of `Fq12`
|
|
103
|
-
/// with a prime order $r$ = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001.
|
|
104
|
-
struct Fq12 {}
|
|
105
|
-
/// A serialization scheme for `Fq12` elements,
|
|
106
|
-
/// where an element $(c_0+c_1\cdot w)$ is represented by a byte array `b[]` of size 384,
|
|
107
|
-
/// which is a concatenation of its coefficients serialized, with the least significant coefficient (LSC) coming first.
|
|
108
|
-
/// - `b[0..192]` is $c_0$ serialized using `FormatFq6LscLsb` (defined in the module documentation).
|
|
109
|
-
/// - `b[192..384]` is $c_1$ serialized using `FormatFq6LscLsb`.
|
|
110
|
-
///
|
|
111
|
-
/// NOTE: other implementation(s) using this format: ark-bn254-0.4.0.
|
|
112
|
-
struct FormatFq12LscLsb {}
|
|
113
|
-
|
|
114
|
-
/// The group $G_1$ in BN254-based pairing $G_1 \times G_2 \rightarrow G_t$.
|
|
115
|
-
/// It is a subgroup of `G1Full` (defined in the module documentation) with a prime order $r$
|
|
116
|
-
/// equal to 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001.
|
|
117
|
-
/// (so `Fr` is the associated scalar field).
|
|
118
|
-
struct G1 {}
|
|
119
|
-
|
|
120
|
-
/// A serialization scheme for `G1` elements derived from arkworks.rs.
|
|
121
|
-
///
|
|
122
|
-
/// Below is the serialization procedure that takes a `G1` element `p` and outputs a byte array of size N=64.
|
|
123
|
-
/// 1. Let `(x,y)` be the coordinates of `p` if `p` is on the curve, or `(0,0)` otherwise.
|
|
124
|
-
/// 1. Serialize `x` and `y` into `b_x[]` and `b_y[]` respectively using `FormatFqLsb` (defined in the module documentation).
|
|
125
|
-
/// 1. Concatenate `b_x[]` and `b_y[]` into `b[]`.
|
|
126
|
-
/// 1. If `p` is the point at infinity, set the infinity bit: `b[N-1]: = b[N-1] | 0b0100_0000`.
|
|
127
|
-
/// 1. If `y > -y`, set the lexicographical bit: `b[N-1]: = b[N-1] | 0b1000_0000`.
|
|
128
|
-
/// 1. Return `b[]`.
|
|
129
|
-
///
|
|
130
|
-
/// Below is the deserialization procedure that takes a byte array `b[]` and outputs either a `G1` element or none.
|
|
131
|
-
/// 1. If the size of `b[]` is not N, return none.
|
|
132
|
-
/// 1. Compute the infinity flag as `b[N-1] & 0b0100_0000 != 0`.
|
|
133
|
-
/// 1. If the infinity flag is set, return the point at infinity.
|
|
134
|
-
/// 1. Deserialize `[b[0], b[1], ..., b[N/2-1]]` to `x` using `FormatFqLsb`. If `x` is none, return none.
|
|
135
|
-
/// 1. Deserialize `[b[N/2], ..., b[N] & 0b0011_1111]` to `y` using `FormatFqLsb`. If `y` is none, return none.
|
|
136
|
-
/// 1. Check if `(x,y)` is on curve `E`. If not, return none.
|
|
137
|
-
/// 1. Check if `(x,y)` is in the subgroup of order `r`. If not, return none.
|
|
138
|
-
/// 1. Return `(x,y)`.
|
|
139
|
-
///
|
|
140
|
-
/// NOTE: other implementation(s) using this format: ark-bn254-0.4.0.
|
|
141
|
-
struct FormatG1Uncompr {}
|
|
142
|
-
|
|
143
|
-
/// A serialization scheme for `G1` elements derived from arkworks.rs
|
|
144
|
-
///
|
|
145
|
-
/// Below is the serialization procedure that takes a `G1` element `p` and outputs a byte array of size N=32.
|
|
146
|
-
/// 1. Let `(x,y)` be the coordinates of `p` if `p` is on the curve, or `(0,0)` otherwise.
|
|
147
|
-
/// 1. Serialize `x` into `b[]` using `FormatFqLsb` (defined in the module documentation).
|
|
148
|
-
/// 1. If `p` is the point at infinity, set the infinity bit: `b[N-1]: = b[N-1] | 0b0100_0000`.
|
|
149
|
-
/// 1. If `y > -y`, set the lexicographical flag: `b[N-1] := b[N-1] | 0x1000_0000`.
|
|
150
|
-
/// 1. Return `b[]`.
|
|
151
|
-
///
|
|
152
|
-
/// Below is the deserialization procedure that takes a byte array `b[]` and outputs either a `G1` element or none.
|
|
153
|
-
/// 1. If the size of `b[]` is not N, return none.
|
|
154
|
-
/// 1. Compute the infinity flag as `b[N-1] & 0b0100_0000 != 0`.
|
|
155
|
-
/// 1. If the infinity flag is set, return the point at infinity.
|
|
156
|
-
/// 1. Compute the lexicographical flag as `b[N-1] & 0b1000_0000 != 0`.
|
|
157
|
-
/// 1. Deserialize `[b[0], b[1], ..., b[N/2-1] & 0b0011_1111]` to `x` using `FormatFqLsb`. If `x` is none, return none.
|
|
158
|
-
/// 1. Solve the curve equation with `x` for `y`. If no such `y` exists, return none.
|
|
159
|
-
/// 1. Let `y'` be `max(y,-y)` if the lexicographical flag is set, or `min(y,-y)` otherwise.
|
|
160
|
-
/// 1. Check if `(x,y')` is in the subgroup of order `r`. If not, return none.
|
|
161
|
-
/// 1. Return `(x,y')`.
|
|
162
|
-
///
|
|
163
|
-
/// NOTE: other implementation(s) using this format: ark-bn254-0.4.0.
|
|
164
|
-
struct FormatG1Compr {}
|
|
165
|
-
|
|
166
|
-
/// The group $G_2$ in BN254-based pairing $G_1 \times G_2 \rightarrow G_t$.
|
|
167
|
-
/// It is a subgroup of `G2Full` (defined in the module documentation) with a prime order $r$ equal to
|
|
168
|
-
/// 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001.
|
|
169
|
-
/// (so `Fr` is the scalar field).
|
|
170
|
-
struct G2 {}
|
|
171
|
-
|
|
172
|
-
/// A serialization scheme for `G2` elements derived from arkworks.rs.
|
|
173
|
-
///
|
|
174
|
-
/// Below is the serialization procedure that takes a `G2` element `p` and outputs a byte array of size N=128.
|
|
175
|
-
/// 1. Let `(x,y)` be the coordinates of `p` if `p` is on the curve, or `(0,0)` otherwise.
|
|
176
|
-
/// 1. Serialize `x` and `y` into `b_x[]` and `b_y[]` respectively using `FormatFq2LscLsb` (defined in the module documentation).
|
|
177
|
-
/// 1. Concatenate `b_x[]` and `b_y[]` into `b[]`.
|
|
178
|
-
/// 1. If `p` is the point at infinity, set the infinity bit: `b[N-1]: = b[N-1] | 0b0100_0000`.
|
|
179
|
-
/// 1. If `y > -y`, set the lexicographical bit: `b[N-1]: = b[N-1] | 0b1000_0000`.
|
|
180
|
-
/// 1. Return `b[]`.
|
|
181
|
-
///
|
|
182
|
-
/// Below is the deserialization procedure that takes a byte array `b[]` and outputs either a `G1` element or none.
|
|
183
|
-
/// 1. If the size of `b[]` is not N, return none.
|
|
184
|
-
/// 1. Compute the infinity flag as `b[N-1] & 0b0100_0000 != 0`.
|
|
185
|
-
/// 1. If the infinity flag is set, return the point at infinity.
|
|
186
|
-
/// 1. Deserialize `[b[0], b[1], ..., b[N/2-1]]` to `x` using `FormatFq2LscLsb`. If `x` is none, return none.
|
|
187
|
-
/// 1. Deserialize `[b[N/2], ..., b[N] & 0b0011_1111]` to `y` using `FormatFq2LscLsb`. If `y` is none, return none.
|
|
188
|
-
/// 1. Check if `(x,y)` is on curve `E`. If not, return none.
|
|
189
|
-
/// 1. Check if `(x,y)` is in the subgroup of order `r`. If not, return none.
|
|
190
|
-
/// 1. Return `(x,y)`.
|
|
191
|
-
///
|
|
192
|
-
/// NOTE: other implementation(s) using this format: ark-bn254-0.4.0.
|
|
193
|
-
struct FormatG2Uncompr {}
|
|
194
|
-
|
|
195
|
-
/// A serialization scheme for `G1` elements derived from arkworks.rs
|
|
196
|
-
///
|
|
197
|
-
/// Below is the serialization procedure that takes a `G1` element `p` and outputs a byte array of size N=64.
|
|
198
|
-
/// 1. Let `(x,y)` be the coordinates of `p` if `p` is on the curve, or `(0,0)` otherwise.
|
|
199
|
-
/// 1. Serialize `x` into `b[]` using `FormatFq2LscLsb` (defined in the module documentation).
|
|
200
|
-
/// 1. If `p` is the point at infinity, set the infinity bit: `b[N-1]: = b[N-1] | 0b0100_0000`.
|
|
201
|
-
/// 1. If `y > -y`, set the lexicographical flag: `b[N-1] := b[N-1] | 0x1000_0000`.
|
|
202
|
-
/// 1. Return `b[]`.
|
|
203
|
-
///
|
|
204
|
-
/// Below is the deserialization procedure that takes a byte array `b[]` and outputs either a `G1` element or none.
|
|
205
|
-
/// 1. If the size of `b[]` is not N, return none.
|
|
206
|
-
/// 1. Compute the infinity flag as `b[N-1] & 0b0100_0000 != 0`.
|
|
207
|
-
/// 1. If the infinity flag is set, return the point at infinity.
|
|
208
|
-
/// 1. Compute the lexicographical flag as `b[N-1] & 0b1000_0000 != 0`.
|
|
209
|
-
/// 1. Deserialize `[b[0], b[1], ..., b[N/2-1] & 0b0011_1111]` to `x` using `FormatFq2LscLsb`. If `x` is none, return none.
|
|
210
|
-
/// 1. Solve the curve equation with `x` for `y`. If no such `y` exists, return none.
|
|
211
|
-
/// 1. Let `y'` be `max(y,-y)` if the lexicographical flag is set, or `min(y,-y)` otherwise.
|
|
212
|
-
/// 1. Check if `(x,y')` is in the subgroup of order `r`. If not, return none.
|
|
213
|
-
/// 1. Return `(x,y')`.
|
|
214
|
-
///
|
|
215
|
-
/// NOTE: other implementation(s) using this format: ark-bn254-0.4.0.
|
|
216
|
-
struct FormatG2Compr {}
|
|
217
|
-
|
|
218
|
-
/// The group $G_t$ in BN254-based pairing $G_1 \times G_2 \rightarrow G_t$.
|
|
219
|
-
/// It is a multiplicative subgroup of `Fq12`, so it can upcast to `Fq12`.
|
|
220
|
-
/// with a prime order $r$ equal to 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001.
|
|
221
|
-
/// (so `Fr` is the scalar field).
|
|
222
|
-
/// The identity of `Gt` is 1.
|
|
223
|
-
struct Gt {}
|
|
224
|
-
|
|
225
|
-
/// A serialization scheme for `Gt` elements.
|
|
226
|
-
///
|
|
227
|
-
/// To serialize, it treats a `Gt` element `p` as an `Fq12` element and serialize it using `FormatFq12LscLsb`.
|
|
228
|
-
///
|
|
229
|
-
/// To deserialize, it uses `FormatFq12LscLsb` to try deserializing to an `Fq12` element then test the membership in `Gt`.
|
|
230
|
-
///
|
|
231
|
-
/// NOTE: other implementation(s) using this format: ark-bn254-0.4.0.
|
|
232
|
-
struct FormatGt {}
|
|
233
|
-
|
|
234
|
-
// Tests begin.
|
|
235
|
-
|
|
236
|
-
#[test_only]
|
|
237
|
-
fun rand_vector<S>(num: u64): vector<Element<S>> {
|
|
238
|
-
let elements = vector[];
|
|
239
|
-
while (num > 0) {
|
|
240
|
-
std::vector::push_back(&mut elements, rand_insecure<S>());
|
|
241
|
-
num = num - 1;
|
|
242
|
-
};
|
|
243
|
-
elements
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
#[test_only]
|
|
248
|
-
const FQ12_VAL_0_SERIALIZED: vector<u8> = x"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
|
|
249
|
-
#[test_only]
|
|
250
|
-
const FQ12_VAL_1_SERIALIZED: vector<u8> = x"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
|
|
251
|
-
#[test_only]
|
|
252
|
-
const FQ12_VAL_7_SERIALIZED: vector<u8> = x"070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
|
|
253
|
-
#[test_only]
|
|
254
|
-
const FQ12_VAL_7_NEG_SERIALIZED: vector<u8> = x"40fd7cd8168c203c8dca7168916a81975d588181b64550b829a031e1724e643000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
|
|
255
|
-
#[test_only]
|
|
256
|
-
const Q12_SERIALIZED: vector<u8> = x"21f186cad2e2d4c1dbaf8a066b0ebf41f734e3f859b1c523a6c1f4d457413fdbe3cd44add090135d3ae519acc30ee3bdb6bfac6573b767e975b18a77d53cdcddebf3672c74da9d1409d51b2b2db7ff000d59e3aa7cf09220159f925c86b65459ca6558c4eaa703bf45d85030ff85cc6a879c7e2c4034f7045faf20e4d3dcfffac5eb6634c3e7b939b69b2be70bdf6b9a4680297839b4e3a48cd746bd4d0ea82749ffb7e71bd9b3fb10aa684d71e6adab1250b1d8604d91b51c76c256a50b60ddba2f52b6cc853ac926c6ea86d09d400b2f2330e5c8e92e38905ba50a50c9e11cd979c284bf1327ccdc051a6da1a4a7eac5cec16757a27a1a2311bedd108a9b21ac0814269e7523a5dd3a1f5f4767ffe504a6cb3994fb0ec98d5cd5da00b9cb1188a85f2aa871ecb8a0f9d64141f1ccd2699c138e0ef9ac4d8d6a692b29db0f38b60eb08426ab46109fbab9a5221bb44dd338aafebcc4e6c10dd933597f3ff44ba41d04e82871447f3a759cfa9397c22c0c77f13618dfb65adc8aacf008";
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
#[test(fx = @std)]
|
|
260
|
-
fun test_fq12(fx: signer) {
|
|
261
|
-
enable_cryptography_algebra_natives(&fx);
|
|
262
|
-
|
|
263
|
-
// Constants.
|
|
264
|
-
assert!(Q12_SERIALIZED == order<Fq12>(), 1);
|
|
265
|
-
|
|
266
|
-
// Serialization/deserialization.
|
|
267
|
-
let val_0 = zero<Fq12>();
|
|
268
|
-
let val_1 = one<Fq12>();
|
|
269
|
-
assert!(FQ12_VAL_0_SERIALIZED == serialize<Fq12, FormatFq12LscLsb>(&val_0), 1);
|
|
270
|
-
assert!(FQ12_VAL_1_SERIALIZED == serialize<Fq12, FormatFq12LscLsb>(&val_1), 1);
|
|
271
|
-
let val_7 = from_u64<Fq12>(7);
|
|
272
|
-
let val_7_another = std::option::extract(&mut deserialize<Fq12, FormatFq12LscLsb>(&FQ12_VAL_7_SERIALIZED));
|
|
273
|
-
assert!(eq(&val_7, &val_7_another), 1);
|
|
274
|
-
assert!(FQ12_VAL_7_SERIALIZED == serialize<Fq12, FormatFq12LscLsb>(&val_7), 1);
|
|
275
|
-
assert!(std::option::is_none(&deserialize<Fq12, FormatFq12LscLsb>(&x"ffff")), 1);
|
|
276
|
-
|
|
277
|
-
// Negation.
|
|
278
|
-
let val_minus_7 = neg(&val_7);
|
|
279
|
-
assert!(FQ12_VAL_7_NEG_SERIALIZED == serialize<Fq12, FormatFq12LscLsb>(&val_minus_7), 1);
|
|
280
|
-
|
|
281
|
-
// Addition.
|
|
282
|
-
let val_9 = from_u64<Fq12>(9);
|
|
283
|
-
let val_2 = from_u64<Fq12>(2);
|
|
284
|
-
assert!(eq(&val_2, &add(&val_minus_7, &val_9)), 1);
|
|
285
|
-
|
|
286
|
-
// Subtraction.
|
|
287
|
-
assert!(eq(&val_9, &sub(&val_2, &val_minus_7)), 1);
|
|
288
|
-
|
|
289
|
-
// Multiplication.
|
|
290
|
-
let val_63 = from_u64<Fq12>(63);
|
|
291
|
-
assert!(eq(&val_63, &mul(&val_7, &val_9)), 1);
|
|
292
|
-
|
|
293
|
-
// division.
|
|
294
|
-
let val_0 = from_u64<Fq12>(0);
|
|
295
|
-
assert!(eq(&val_7, &std::option::extract(&mut div(&val_63, &val_9))), 1);
|
|
296
|
-
assert!(std::option::is_none(&div(&val_63, &val_0)), 1);
|
|
297
|
-
|
|
298
|
-
// Inversion.
|
|
299
|
-
assert!(eq(&val_minus_7, &neg(&val_7)), 1);
|
|
300
|
-
assert!(std::option::is_none(&inv(&val_0)), 1);
|
|
301
|
-
|
|
302
|
-
// Squaring.
|
|
303
|
-
let val_x = rand_insecure<Fq12>();
|
|
304
|
-
assert!(eq(&mul(&val_x, &val_x), &sqr(&val_x)), 1);
|
|
305
|
-
|
|
306
|
-
// Downcasting.
|
|
307
|
-
assert!(eq(&zero<Gt>(), &std::option::extract(&mut downcast<Fq12, Gt>(&val_1))), 1);
|
|
308
|
-
// upcasting
|
|
309
|
-
assert!(eq(&val_1, &upcast<Gt, Fq12>(&zero<Gt>())), 1);
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
#[test_only]
|
|
313
|
-
const R_SERIALIZED: vector<u8> = x"010000f093f5e1439170b97948e833285d588181b64550b829a031e1724e6430";
|
|
314
|
-
#[test_only]
|
|
315
|
-
const G1_INF_SERIALIZED_COMP: vector<u8> = x"0000000000000000000000000000000000000000000000000000000000000040";
|
|
316
|
-
#[test_only]
|
|
317
|
-
const G1_INF_SERIALIZED_UNCOMP: vector<u8> = x"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040";
|
|
318
|
-
#[test_only]
|
|
319
|
-
const G1_GENERATOR_SERIALIZED_COMP: vector<u8> = x"0100000000000000000000000000000000000000000000000000000000000000";
|
|
320
|
-
#[test_only]
|
|
321
|
-
const G1_GENERATOR_SERIALIZED_UNCOMP: vector<u8> = x"01000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000";
|
|
322
|
-
#[test_only]
|
|
323
|
-
const G1_GENERATOR_MUL_BY_7_SERIALIZED_COMP: vector<u8> = x"78e0ffab866b3a9876bd01b8ecc66fcb86936277f425539a758dbbd32e2b0717";
|
|
324
|
-
#[test_only]
|
|
325
|
-
const G1_GENERATOR_MUL_BY_7_SERIALIZED_UNCOMP: vector<u8> = x"78e0ffab866b3a9876bd01b8ecc66fcb86936277f425539a758dbbd32e2b07179eafd4607f9f80771bf4185df03bfead7a3719fa4bb57b0152dd30d16cda8a16";
|
|
326
|
-
#[test_only]
|
|
327
|
-
const G1_GENERATOR_MUL_BY_7_NEG_SERIALIZED_COMP: vector<u8> = x"78e0ffab866b3a9876bd01b8ecc66fcb86936277f425539a758dbbd32e2b0797";
|
|
328
|
-
#[test_only]
|
|
329
|
-
const G1_GENERATOR_MUL_BY_7_NEG_SERIALIZED_UNCOMP: vector<u8> = x"78e0ffab866b3a9876bd01b8ecc66fcb86936277f425539a758dbbd32e2b0717a94da87797ec9fc471d6580ba12e83e9e22068876a90d4b6d7c200100674d999";
|
|
330
|
-
|
|
331
|
-
#[test(fx = @std)]
|
|
332
|
-
fun test_g1affine(fx: signer) {
|
|
333
|
-
enable_cryptography_algebra_natives(&fx);
|
|
334
|
-
|
|
335
|
-
// Constants.
|
|
336
|
-
assert!(R_SERIALIZED == order<G1>(), 1);
|
|
337
|
-
let point_at_infinity = zero<G1>();
|
|
338
|
-
let generator = one<G1>();
|
|
339
|
-
|
|
340
|
-
// Serialization/deserialization.
|
|
341
|
-
assert!(G1_GENERATOR_SERIALIZED_UNCOMP == serialize<G1, FormatG1Uncompr>(&generator), 1);
|
|
342
|
-
assert!(G1_GENERATOR_SERIALIZED_COMP == serialize<G1, FormatG1Compr>(&generator), 1);
|
|
343
|
-
let generator_from_comp = std::option::extract(&mut deserialize<G1, FormatG1Compr>(&G1_GENERATOR_SERIALIZED_COMP));
|
|
344
|
-
let generator_from_uncomp = std::option::extract(&mut deserialize<G1, FormatG1Uncompr>(&G1_GENERATOR_SERIALIZED_UNCOMP));
|
|
345
|
-
assert!(eq(&generator, &generator_from_comp), 1);
|
|
346
|
-
assert!(eq(&generator, &generator_from_uncomp), 1);
|
|
347
|
-
|
|
348
|
-
// Deserialization should fail if given a byte array of correct size but the value is not a member.
|
|
349
|
-
assert!(std::option::is_none(&deserialize<Fq12, FormatFq12LscLsb>(&x"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")), 1);
|
|
350
|
-
|
|
351
|
-
// Deserialization should fail if given a byte array of wrong size.
|
|
352
|
-
assert!(std::option::is_none(&deserialize<Fq12, FormatFq12LscLsb>(&x"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")), 1);
|
|
353
|
-
|
|
354
|
-
assert!(
|
|
355
|
-
G1_INF_SERIALIZED_UNCOMP == serialize<G1, FormatG1Uncompr>(&point_at_infinity), 1);
|
|
356
|
-
assert!(G1_INF_SERIALIZED_COMP == serialize<G1, FormatG1Compr>(&point_at_infinity), 1);
|
|
357
|
-
let inf_from_uncomp = std::option::extract(&mut deserialize<G1, FormatG1Uncompr>(&G1_INF_SERIALIZED_UNCOMP
|
|
358
|
-
));
|
|
359
|
-
let inf_from_comp = std::option::extract(&mut deserialize<G1, FormatG1Compr>(&G1_INF_SERIALIZED_COMP
|
|
360
|
-
));
|
|
361
|
-
assert!(eq(&point_at_infinity, &inf_from_comp), 1);
|
|
362
|
-
assert!(eq(&point_at_infinity, &inf_from_uncomp), 1);
|
|
363
|
-
|
|
364
|
-
let point_7g_from_uncomp = std::option::extract(&mut deserialize<G1, FormatG1Uncompr>(&G1_GENERATOR_MUL_BY_7_SERIALIZED_UNCOMP
|
|
365
|
-
));
|
|
366
|
-
let point_7g_from_comp = std::option::extract(&mut deserialize<G1, FormatG1Compr>(&G1_GENERATOR_MUL_BY_7_SERIALIZED_COMP
|
|
367
|
-
));
|
|
368
|
-
assert!(eq(&point_7g_from_comp, &point_7g_from_uncomp), 1);
|
|
369
|
-
|
|
370
|
-
// Deserialization should fail if given a point on the curve but off its prime-order subgroup, e.g., `(0,2)`.
|
|
371
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Uncompr>(&x"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002")), 1);
|
|
372
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Compr>(&x"800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")), 1);
|
|
373
|
-
|
|
374
|
-
// Deserialization should fail if given a valid point in (Fq,Fq) but not on the curve.
|
|
375
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Uncompr>(&x"8959e137e0719bf872abb08411010f437a8955bd42f5ba20fca64361af58ce188b1adb96ef229698bb7860b79e24ba12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")), 1);
|
|
376
|
-
|
|
377
|
-
// Deserialization should fail if given an invalid point (x not in Fq).
|
|
378
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Uncompr>(&x"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa76e9853b35f5c9b2002d9e5833fd8f9ab4cd3934a4722a06f6055bfca720c91629811e2ecae7f0cf301b6d07898a90f")), 1);
|
|
379
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Compr>(&x"9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")), 1);
|
|
380
|
-
|
|
381
|
-
// Deserialization should fail if given a byte array of wrong size.
|
|
382
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Uncompr>(&x"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab")), 1);
|
|
383
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Compr>(&x"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab")), 1);
|
|
384
|
-
|
|
385
|
-
// Scalar multiplication.
|
|
386
|
-
let scalar_7 = from_u64<Fr>(7);
|
|
387
|
-
let point_7g_calc = scalar_mul(&generator, &scalar_7);
|
|
388
|
-
assert!(eq(&point_7g_calc, &point_7g_from_comp), 1);
|
|
389
|
-
assert!(G1_GENERATOR_MUL_BY_7_SERIALIZED_UNCOMP == serialize<G1, FormatG1Uncompr>(&point_7g_calc), 1);
|
|
390
|
-
assert!(G1_GENERATOR_MUL_BY_7_SERIALIZED_COMP == serialize<G1, FormatG1Compr>( &point_7g_calc), 1);
|
|
391
|
-
|
|
392
|
-
// Multi-scalar multiplication.
|
|
393
|
-
let num_entries = 1;
|
|
394
|
-
while (num_entries < 10) {
|
|
395
|
-
let scalars = rand_vector<Fr>(num_entries);
|
|
396
|
-
let elements = rand_vector<G1>(num_entries);
|
|
397
|
-
|
|
398
|
-
let expected = zero<G1>();
|
|
399
|
-
let i = 0;
|
|
400
|
-
while (i < num_entries) {
|
|
401
|
-
let element = std::vector::borrow(&elements, i);
|
|
402
|
-
let scalar = std::vector::borrow(&scalars, i);
|
|
403
|
-
expected = add(&expected, &scalar_mul(element, scalar));
|
|
404
|
-
i = i + 1;
|
|
405
|
-
};
|
|
406
|
-
|
|
407
|
-
let actual = multi_scalar_mul(&elements, &scalars);
|
|
408
|
-
assert!(eq(&expected, &actual), 1);
|
|
409
|
-
|
|
410
|
-
num_entries = num_entries + 1;
|
|
411
|
-
};
|
|
412
|
-
|
|
413
|
-
// Doubling.
|
|
414
|
-
let scalar_2 = from_u64<Fr>(2);
|
|
415
|
-
let point_2g = scalar_mul(&generator, &scalar_2);
|
|
416
|
-
let point_double_g = double(&generator);
|
|
417
|
-
assert!(eq(&point_2g, &point_double_g), 1);
|
|
418
|
-
|
|
419
|
-
// Negation.
|
|
420
|
-
let point_minus_7g_calc = neg(&point_7g_calc);
|
|
421
|
-
assert!(G1_GENERATOR_MUL_BY_7_NEG_SERIALIZED_COMP == serialize<G1, FormatG1Compr>(&point_minus_7g_calc), 1);
|
|
422
|
-
assert!(G1_GENERATOR_MUL_BY_7_NEG_SERIALIZED_UNCOMP == serialize<G1, FormatG1Uncompr>(&point_minus_7g_calc), 1);
|
|
423
|
-
|
|
424
|
-
// Addition.
|
|
425
|
-
let scalar_9 = from_u64<Fr>(9);
|
|
426
|
-
let point_9g = scalar_mul(&generator, &scalar_9);
|
|
427
|
-
let point_2g = scalar_mul(&generator, &scalar_2);
|
|
428
|
-
let point_2g_calc = add(&point_minus_7g_calc, &point_9g);
|
|
429
|
-
assert!(eq(&point_2g, &point_2g_calc), 1);
|
|
430
|
-
|
|
431
|
-
// Subtraction.
|
|
432
|
-
assert!(eq(&point_9g, &sub(&point_2g, &point_minus_7g_calc)), 1);
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
#[test_only]
|
|
436
|
-
const G2_INF_SERIALIZED_COMP: vector<u8> = x"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040";
|
|
437
|
-
#[test_only]
|
|
438
|
-
const G2_INF_SERIALIZED_UNCOMP: vector<u8> = x"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040";
|
|
439
|
-
#[test_only]
|
|
440
|
-
const G2_GENERATOR_SERIALIZED_COMP: vector<u8> = x"edf692d95cbdde46ddda5ef7d422436779445c5e66006a42761e1f12efde0018c212f3aeb785e49712e7a9353349aaf1255dfb31b7bf60723a480d9293938e19";
|
|
441
|
-
#[test_only]
|
|
442
|
-
const G2_GENERATOR_SERIALIZED_UNCOMP: vector<u8> = x"edf692d95cbdde46ddda5ef7d422436779445c5e66006a42761e1f12efde0018c212f3aeb785e49712e7a9353349aaf1255dfb31b7bf60723a480d9293938e19aa7dfa6601cce64c7bd3430c69e7d1e38f40cb8d8071ab4aeb6d8cdba55ec8125b9722d1dcdaac55f38eb37033314bbc95330c69ad999eec75f05f58d0890609";
|
|
443
|
-
#[test_only]
|
|
444
|
-
const G2_GENERATOR_MUL_BY_7_SERIALIZED_UNCOMP: vector<u8> = x"08b328aa2a1490c3892ae375ba53a257162f1cde012e70edf8fc27435ddc4b2255243646bade3e596dee466e51d40fbe631e55841e085d6ae2bd9a5a01ba03293f23144105e8212ed8df28ca0e8031d47b7a7de372b3ccee1750262af5ff921dd8e03503be1eedbaadf7e6c4a1be3670d14a46da5fafee7adbdeb2a6cdb7c803";
|
|
445
|
-
#[test_only]
|
|
446
|
-
const G2_GENERATOR_MUL_BY_7_SERIALIZED_COMP: vector<u8> = x"08b328aa2a1490c3892ae375ba53a257162f1cde012e70edf8fc27435ddc4b2255243646bade3e596dee466e51d40fbe631e55841e085d6ae2bd9a5a01ba0329";
|
|
447
|
-
#[test_only]
|
|
448
|
-
const G2_GENERATOR_MUL_BY_7_NEG_SERIALIZED_UNCOMP: vector<u8> = x"08b328aa2a1490c3892ae375ba53a257162f1cde012e70edf8fc27435ddc4b2255243646bade3e596dee466e51d40fbe631e55841e085d6ae2bd9a5a01ba032908da689711a4fe0db5ea489e82ea4fc3e1dd039e439283c911500bb77d4ed1126f1c47d5586d3381dfd28aa3efab4a278c0d3ba75696613d4ec17e3aa5969bac";
|
|
449
|
-
#[test_only]
|
|
450
|
-
const G2_GENERATOR_MUL_BY_7_NEG_SERIALIZED_COMP: vector<u8> = x"08b328aa2a1490c3892ae375ba53a257162f1cde012e70edf8fc27435ddc4b2255243646bade3e596dee466e51d40fbe631e55841e085d6ae2bd9a5a01ba03a9";
|
|
451
|
-
|
|
452
|
-
#[test(fx = @std)]
|
|
453
|
-
fun test_g2affine(fx: signer) {
|
|
454
|
-
enable_cryptography_algebra_natives(&fx);
|
|
455
|
-
|
|
456
|
-
// Special constants.
|
|
457
|
-
assert!(R_SERIALIZED == order<G2>(), 1);
|
|
458
|
-
let point_at_infinity = zero<G2>();
|
|
459
|
-
let generator = one<G2>();
|
|
460
|
-
|
|
461
|
-
// Serialization/deserialization.
|
|
462
|
-
assert!(G2_GENERATOR_SERIALIZED_COMP == serialize<G2, FormatG2Compr>(&generator), 1);
|
|
463
|
-
assert!(G2_GENERATOR_SERIALIZED_UNCOMP == serialize<G2, FormatG2Uncompr>(&generator), 1);
|
|
464
|
-
let generator_from_uncomp = std::option::extract(&mut deserialize<G2, FormatG2Uncompr>(&G2_GENERATOR_SERIALIZED_UNCOMP
|
|
465
|
-
));
|
|
466
|
-
let generator_from_comp = std::option::extract(&mut deserialize<G2, FormatG2Compr>(&G2_GENERATOR_SERIALIZED_COMP
|
|
467
|
-
));
|
|
468
|
-
assert!(eq(&generator, &generator_from_comp), 1);
|
|
469
|
-
assert!(eq(&generator, &generator_from_uncomp), 1);
|
|
470
|
-
assert!(G2_INF_SERIALIZED_UNCOMP == serialize<G2, FormatG2Uncompr>(&point_at_infinity), 1);
|
|
471
|
-
assert!(G2_INF_SERIALIZED_COMP == serialize<G2, FormatG2Compr>(&point_at_infinity), 1);
|
|
472
|
-
let inf_from_uncomp = std::option::extract(&mut deserialize<G2, FormatG2Uncompr>(&G2_INF_SERIALIZED_UNCOMP));
|
|
473
|
-
let inf_from_comp = std::option::extract(&mut deserialize<G2, FormatG2Compr>(&G2_INF_SERIALIZED_COMP));
|
|
474
|
-
assert!(eq(&point_at_infinity, &inf_from_comp), 1);
|
|
475
|
-
assert!(eq(&point_at_infinity, &inf_from_uncomp), 1);
|
|
476
|
-
let point_7g_from_uncomp = std::option::extract(&mut deserialize<G2, FormatG2Uncompr>(&G2_GENERATOR_MUL_BY_7_SERIALIZED_UNCOMP
|
|
477
|
-
));
|
|
478
|
-
let point_7g_from_comp = std::option::extract(&mut deserialize<G2, FormatG2Compr>(&G2_GENERATOR_MUL_BY_7_SERIALIZED_COMP
|
|
479
|
-
));
|
|
480
|
-
assert!(eq(&point_7g_from_comp, &point_7g_from_uncomp), 1);
|
|
481
|
-
|
|
482
|
-
// Deserialization should fail if given a point on the curve but not in the prime-order subgroup.
|
|
483
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Uncompr>(&x"f037d4ccd5ee751eba1c1fd4c7edbb76d2b04c3a1f3f554827cf37c3acbc2dbb7cdb320a2727c2462d6c55ca1f637707b96eeebc622c1dbe7c56c34f93887c8751b42bd04f29253a82251c192ef27ece373993b663f4360505299c5bd18c890ddd862a6308796bf47e2265073c1f7d81afd69f9497fc1403e2e97a866129b43b672295229c21116d4a99f3e5c2ae720a31f181dbed8a93e15f909c20cf69d11a8879adbbe6890740def19814e6d4ed23fb0dcbd79291655caf48b466ac9cae04")), 1);
|
|
484
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Compr>(&x"f037d4ccd5ee751eba1c1fd4c7edbb76d2b04c3a1f3f554827cf37c3acbc2dbb7cdb320a2727c2462d6c55ca1f637707b96eeebc622c1dbe7c56c34f93887c8751b42bd04f29253a82251c192ef27ece373993b663f4360505299c5bd18c890d")), 1);
|
|
485
|
-
|
|
486
|
-
// Deserialization should fail if given a valid point in (Fq2,Fq2) but not on the curve.
|
|
487
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Uncompr>(&x"f037d4ccd5ee751eba1c1fd4c7edbb76d2b04c3a1f3f554827cf37c3acbc2dbb7cdb320a2727c2462d6c55ca1f637707b96eeebc622c1dbe7c56c34f93887c8751b42bd04f29253a82251c192ef27ece373993b663f4360505299c5bd18c890d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")), 1);
|
|
488
|
-
|
|
489
|
-
// Deserialization should fail if given an invalid point (x not in Fq2).
|
|
490
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Uncompr>(&x"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd862a6308796bf47e2265073c1f7d81afd69f9497fc1403e2e97a866129b43b672295229c21116d4a99f3e5c2ae720a31f181dbed8a93e15f909c20cf69d11a8879adbbe6890740def19814e6d4ed23fb0dcbd79291655caf48b466ac9cae04")), 1);
|
|
491
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Compr>(&x"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")), 1);
|
|
492
|
-
|
|
493
|
-
// Deserialization should fail if given a byte array of wrong size.
|
|
494
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Uncompr>(&x"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab")), 1);
|
|
495
|
-
assert!(std::option::is_none(&deserialize<G1, FormatG1Compr>(&x"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab")), 1);
|
|
496
|
-
|
|
497
|
-
// Scalar multiplication.
|
|
498
|
-
let scalar_7 = from_u64<Fr>(7);
|
|
499
|
-
let point_7g_calc = scalar_mul(&generator, &scalar_7);
|
|
500
|
-
assert!(eq(&point_7g_calc, &point_7g_from_comp), 1);
|
|
501
|
-
assert!(G2_GENERATOR_MUL_BY_7_SERIALIZED_UNCOMP == serialize<G2, FormatG2Uncompr>(&point_7g_calc), 1);
|
|
502
|
-
assert!(G2_GENERATOR_MUL_BY_7_SERIALIZED_COMP == serialize<G2, FormatG2Compr>(&point_7g_calc), 1);
|
|
503
|
-
|
|
504
|
-
// Multi-scalar multiplication.
|
|
505
|
-
let num_entries = 1;
|
|
506
|
-
while (num_entries < 10) {
|
|
507
|
-
let scalars = rand_vector<Fr>(num_entries);
|
|
508
|
-
let elements = rand_vector<G2>(num_entries);
|
|
509
|
-
|
|
510
|
-
let expected = zero<G2>();
|
|
511
|
-
let i = 0;
|
|
512
|
-
while (i < num_entries) {
|
|
513
|
-
let element = std::vector::borrow(&elements, i);
|
|
514
|
-
let scalar = std::vector::borrow(&scalars, i);
|
|
515
|
-
expected = add(&expected, &scalar_mul(element, scalar));
|
|
516
|
-
i = i + 1;
|
|
517
|
-
};
|
|
518
|
-
|
|
519
|
-
let actual = multi_scalar_mul(&elements, &scalars);
|
|
520
|
-
assert!(eq(&expected, &actual), 1);
|
|
521
|
-
|
|
522
|
-
num_entries = num_entries + 1;
|
|
523
|
-
};
|
|
524
|
-
|
|
525
|
-
// Doubling.
|
|
526
|
-
let scalar_2 = from_u64<Fr>(2);
|
|
527
|
-
let point_2g = scalar_mul(&generator, &scalar_2);
|
|
528
|
-
let point_double_g = double(&generator);
|
|
529
|
-
assert!(eq(&point_2g, &point_double_g), 1);
|
|
530
|
-
|
|
531
|
-
// Negation.
|
|
532
|
-
let point_minus_7g_calc = neg(&point_7g_calc);
|
|
533
|
-
assert!(G2_GENERATOR_MUL_BY_7_NEG_SERIALIZED_COMP == serialize<G2, FormatG2Compr>(&point_minus_7g_calc), 1);
|
|
534
|
-
assert!(G2_GENERATOR_MUL_BY_7_NEG_SERIALIZED_UNCOMP == serialize<G2, FormatG2Uncompr>(&point_minus_7g_calc), 1);
|
|
535
|
-
|
|
536
|
-
// Addition.
|
|
537
|
-
let scalar_9 = from_u64<Fr>(9);
|
|
538
|
-
let point_9g = scalar_mul(&generator, &scalar_9);
|
|
539
|
-
let point_2g = scalar_mul(&generator, &scalar_2);
|
|
540
|
-
let point_2g_calc = add(&point_minus_7g_calc, &point_9g);
|
|
541
|
-
assert!(eq(&point_2g, &point_2g_calc), 1);
|
|
542
|
-
|
|
543
|
-
// Subtraction.
|
|
544
|
-
assert!(eq(&point_9g, &sub(&point_2g, &point_minus_7g_calc)), 1);
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
#[test_only]
|
|
548
|
-
const FQ12_ONE_SERIALIZED: vector<u8> = x"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
|
|
549
|
-
#[test_only]
|
|
550
|
-
const GT_GENERATOR_SERIALIZED: vector<u8> = x"950e879d73631f5eb5788589eb5f7ef8d63e0a28de1ba00dfe4ca9ed3f252b264a8afb8eb4349db466ed1809ea4d7c39bdab7938821f1b0a00a295c72c2de002e01dbdfd0254134efcb1ec877395d25f937719b344adb1a58d129be2d6f2a9132b16a16e8ab030b130e69c69bd20b4c45986e6744a98314b5c1a0f50faa90b04dbaf9ef8aeeee3f50be31c210b598f4752f073987f9d35be8f6770d83f2ffc0af0d18dd9d2dbcdf943825acc12a7a9ddca45e629d962c6bd64908c3930a5541cfe2924dcc5580d5cef7a4bfdec90a91b59926f850d4a7923c01a5a5dbf0f5c094a2b9fb9d415820fa6b40c59bb9eade9c953407b0fc11da350a9d872cad6d3142974ca385854afdf5f583c04231adc5957c8914b6b20dc89660ed7c3bbe7c01d972be2d53ecdb27a1bcc16ac610db95aa7d237c8ff55a898cb88645a0e32530b23d7ebf5dafdd79b0f9c2ac4ba07ce18d3d16cf36e47916c4cae5d08d3afa813972c769e8514533e380c9443b3e1ee5c96fa3a0a73f301b626454721527bf900";
|
|
551
|
-
#[test_only]
|
|
552
|
-
const GT_GENERATOR_MUL_BY_7_SERIALIZED: vector<u8> = x"533a587534641b568125fb273eac723c789a347eba9fcfd58d93742b3a0b782fd61bbf6202e04b8a33b6c60150fc62a071cb9ac9749a79031fd0dbb6dd8a1f2bcf1eb450bdf58fd3d124b2e0aaf878d11e96af3051631145a4bf0530b5d19d08bfe2d515530b9059525b2826587f7bf1f146bfd0e91e84411c7722abb7a8c418b20b1660b41e6949beff93b2b36303e74804df3335ab5bd85bfd7959d6fd3101d0bf6f681eb809c9a6c3544db7f81444e5c4fbdd0a31e920616ae08a2ab5f51ebf064c4906c7b29521e8fda3d704830a9a6ef5d455a85ae09216f55fd0e74d0aaf83ad81ba50218f08024910184c9ddab42a28f51912c779556c41c61aba2d075cfc020b61a18a9366c9f71658f00b44369bd86929725cf867a0b8fda694a7134a2790ebf19cbea1f972eedfd51787683f98d80895f630ff0bd513edebd5a217c00e231869178bd41cf47a7c0125379a3926353e5310a578066dfbb974424802b942a8b4f6338d7f9d8b9c4031dc46163a59c58ff503eca69b642398b5a1212b";
|
|
553
|
-
#[test_only]
|
|
554
|
-
const GT_GENERATOR_MUL_BY_7_NEG_SERIALIZED: vector<u8> = x"533a587534641b568125fb273eac723c789a347eba9fcfd58d93742b3a0b782fd61bbf6202e04b8a33b6c60150fc62a071cb9ac9749a79031fd0dbb6dd8a1f2bcf1eb450bdf58fd3d124b2e0aaf878d11e96af3051631145a4bf0530b5d19d08bfe2d515530b9059525b2826587f7bf1f146bfd0e91e84411c7722abb7a8c418b20b1660b41e6949beff93b2b36303e74804df3335ab5bd85bfd7959d6fd3101d0bf6f681eb809c9a6c3544db7f81444e5c4fbdd0a31e920616ae08a2ab5f51e88f6308f10c56da66be273c4b965fe8cc3e98bac609df5d796893c81a26616269879cf565c3bffac84c82858791ee4bca82d598c9c33893ed433f01a58943629eb007acdb5ea95a826017a51397a755327bda8178dd3f3bfc1ff78e3cbb9bc1cfdd5ecec24ef619a93578388bb52fa2e1ec0a878214f1fb91dcb1df48678c11887ee59c0ad74956770d6f6eb8f454afd23324c436335ab3f23333627fe0b1c2e8ebad423205893bcef3ed527608e3a8123ffbbf1c04164118e3b0e49bdac4205";
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
#[test(fx = @std)]
|
|
558
|
-
fun test_gt(fx: signer) {
|
|
559
|
-
enable_cryptography_algebra_natives(&fx);
|
|
560
|
-
|
|
561
|
-
// Special constants.
|
|
562
|
-
assert!(R_SERIALIZED == order<Gt>(), 1);
|
|
563
|
-
let identity = zero<Gt>();
|
|
564
|
-
let generator = one<Gt>();
|
|
565
|
-
|
|
566
|
-
// Serialization/deserialization.
|
|
567
|
-
assert!(GT_GENERATOR_SERIALIZED == serialize<Gt, FormatGt>(&generator), 1);
|
|
568
|
-
let generator_from_deser = std::option::extract(&mut deserialize<Gt, FormatGt>(>_GENERATOR_SERIALIZED));
|
|
569
|
-
assert!(eq(&generator, &generator_from_deser), 1);
|
|
570
|
-
assert!(FQ12_ONE_SERIALIZED == serialize<Gt, FormatGt>(&identity), 1);
|
|
571
|
-
let identity_from_deser = std::option::extract(&mut deserialize<Gt, FormatGt>(&FQ12_ONE_SERIALIZED));
|
|
572
|
-
assert!(eq(&identity, &identity_from_deser), 1);
|
|
573
|
-
let element_7g_from_deser = std::option::extract(&mut deserialize<Gt, FormatGt>(>_GENERATOR_MUL_BY_7_SERIALIZED
|
|
574
|
-
));
|
|
575
|
-
assert!(std::option::is_none(&deserialize<Gt, FormatGt>(&x"ffff")), 1);
|
|
576
|
-
|
|
577
|
-
// Deserialization should fail if given an element in Fq12 but not in the prime-order subgroup.
|
|
578
|
-
assert!(std::option::is_none(&deserialize<Gt, FormatGt>(&x"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")), 1);
|
|
579
|
-
|
|
580
|
-
// Deserialization should fail if given a byte array of wrong size.
|
|
581
|
-
assert!(std::option::is_none(&deserialize<Gt, FormatGt>(&x"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab")), 1);
|
|
582
|
-
|
|
583
|
-
// Element scalar multiplication.
|
|
584
|
-
let scalar_7 = from_u64<Fr>(7);
|
|
585
|
-
let element_7g_calc = scalar_mul(&generator, &scalar_7);
|
|
586
|
-
assert!(eq(&element_7g_calc, &element_7g_from_deser), 1);
|
|
587
|
-
assert!(GT_GENERATOR_MUL_BY_7_SERIALIZED == serialize<Gt, FormatGt>(&element_7g_calc), 1);
|
|
588
|
-
|
|
589
|
-
// Element negation.
|
|
590
|
-
let element_minus_7g_calc = neg(&element_7g_calc);
|
|
591
|
-
assert!(GT_GENERATOR_MUL_BY_7_NEG_SERIALIZED == serialize<Gt, FormatGt>(&element_minus_7g_calc), 1);
|
|
592
|
-
|
|
593
|
-
// Element addition.
|
|
594
|
-
let scalar_9 = from_u64<Fr>(9);
|
|
595
|
-
let element_9g = scalar_mul(&generator, &scalar_9);
|
|
596
|
-
let scalar_2 = from_u64<Fr>(2);
|
|
597
|
-
let element_2g = scalar_mul(&generator, &scalar_2);
|
|
598
|
-
let element_2g_calc = add(&element_minus_7g_calc, &element_9g);
|
|
599
|
-
assert!(eq(&element_2g, &element_2g_calc), 1);
|
|
600
|
-
|
|
601
|
-
// Subtraction.
|
|
602
|
-
assert!(eq(&element_9g, &sub(&element_2g, &element_minus_7g_calc)), 1);
|
|
603
|
-
|
|
604
|
-
// Upcasting to Fq12.
|
|
605
|
-
assert!(eq(&one<Fq12>(), &upcast<Gt, Fq12>(&identity)), 1);
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
#[test_only]
|
|
609
|
-
use aptos_std::crypto_algebra::{zero, one, from_u64, eq, deserialize, serialize, neg, add, sub, mul, div, inv, rand_insecure, sqr, order, scalar_mul, multi_scalar_mul, double, upcast, enable_cryptography_algebra_natives, pairing, multi_pairing, downcast, Element};
|
|
610
|
-
|
|
611
|
-
#[test_only]
|
|
612
|
-
const FR_VAL_0_SERIALIZED_LSB: vector<u8> = x"0000000000000000000000000000000000000000000000000000000000000000";
|
|
613
|
-
#[test_only]
|
|
614
|
-
const FR_VAL_1_SERIALIZED_LSB: vector<u8> = x"0100000000000000000000000000000000000000000000000000000000000000";
|
|
615
|
-
#[test_only]
|
|
616
|
-
const FR_VAL_7_SERIALIZED_LSB: vector<u8> = x"0700000000000000000000000000000000000000000000000000000000000000";
|
|
617
|
-
#[test_only]
|
|
618
|
-
const FR_VAL_7_SERIALIZED_MSB: vector<u8> = x"0000000000000000000000000000000000000000000000000000000000000007";
|
|
619
|
-
#[test_only]
|
|
620
|
-
const FR_VAL_7_NEG_SERIALIZED_LSB: vector<u8> = x"faffffef93f5e1439170b97948e833285d588181b64550b829a031e1724e6430";
|
|
621
|
-
|
|
622
|
-
#[test(fx = @std)]
|
|
623
|
-
fun test_fr(fx: signer) {
|
|
624
|
-
enable_cryptography_algebra_natives(&fx);
|
|
625
|
-
|
|
626
|
-
// Constants.
|
|
627
|
-
assert!(R_SERIALIZED == order<Fr>(), 1);
|
|
628
|
-
|
|
629
|
-
// Serialization/deserialization.
|
|
630
|
-
let val_0 = zero<Fr>();
|
|
631
|
-
let val_1 = one<Fr>();
|
|
632
|
-
assert!(FR_VAL_0_SERIALIZED_LSB == serialize<Fr, FormatFrLsb>(&val_0), 1);
|
|
633
|
-
assert!(FR_VAL_1_SERIALIZED_LSB == serialize<Fr, FormatFrLsb>(&val_1), 1);
|
|
634
|
-
let val_7 = from_u64<Fr>(7);
|
|
635
|
-
let val_7_2nd = std::option::extract(&mut deserialize<Fr, FormatFrLsb>(&FR_VAL_7_SERIALIZED_LSB));
|
|
636
|
-
let val_7_3rd = std::option::extract(&mut deserialize<Fr, FormatFrMsb>(&FR_VAL_7_SERIALIZED_MSB));
|
|
637
|
-
assert!(eq(&val_7, &val_7_2nd), 1);
|
|
638
|
-
assert!(eq(&val_7, &val_7_3rd), 1);
|
|
639
|
-
assert!(FR_VAL_7_SERIALIZED_LSB == serialize<Fr, FormatFrLsb>(&val_7), 1);
|
|
640
|
-
assert!(FR_VAL_7_SERIALIZED_MSB == serialize<Fr, FormatFrMsb>(&val_7), 1);
|
|
641
|
-
|
|
642
|
-
// Deserialization should fail if given a byte array of right size but the value is not a member.
|
|
643
|
-
assert!(std::option::is_none(&deserialize<Fr, FormatFrLsb>(&x"01000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed73")), 1);
|
|
644
|
-
assert!(std::option::is_none(&deserialize<Fr, FormatFrMsb>(&x"73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001")), 1);
|
|
645
|
-
|
|
646
|
-
// Deserialization should fail if given a byte array of wrong size.
|
|
647
|
-
assert!(std::option::is_none(&deserialize<Fr, FormatFrLsb>(&x"01000000fffffffffe5bfeff02a4bd5305d8a10908d83933487d9d2953a7ed7300")), 1);
|
|
648
|
-
assert!(std::option::is_none(&deserialize<Fr, FormatFrMsb>(&x"0073eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001")), 1);
|
|
649
|
-
assert!(std::option::is_none(&deserialize<Fr, FormatFrLsb>(&x"ffff")), 1);
|
|
650
|
-
assert!(std::option::is_none(&deserialize<Fr, FormatFrMsb>(&x"ffff")), 1);
|
|
651
|
-
|
|
652
|
-
// Negation.
|
|
653
|
-
let val_minus_7 = neg(&val_7);
|
|
654
|
-
assert!(FR_VAL_7_NEG_SERIALIZED_LSB == serialize<Fr, FormatFrLsb>(&val_minus_7), 1);
|
|
655
|
-
|
|
656
|
-
// Addition.
|
|
657
|
-
let val_9 = from_u64<Fr>(9);
|
|
658
|
-
let val_2 = from_u64<Fr>(2);
|
|
659
|
-
assert!(eq(&val_2, &add(&val_minus_7, &val_9)), 1);
|
|
660
|
-
|
|
661
|
-
// Subtraction.
|
|
662
|
-
assert!(eq(&val_9, &sub(&val_2, &val_minus_7)), 1);
|
|
663
|
-
|
|
664
|
-
// Multiplication.
|
|
665
|
-
let val_63 = from_u64<Fr>(63);
|
|
666
|
-
assert!(eq(&val_63, &mul(&val_7, &val_9)), 1);
|
|
667
|
-
|
|
668
|
-
// division.
|
|
669
|
-
let val_0 = from_u64<Fr>(0);
|
|
670
|
-
assert!(eq(&val_7, &std::option::extract(&mut div(&val_63, &val_9))), 1);
|
|
671
|
-
assert!(std::option::is_none(&div(&val_63, &val_0)), 1);
|
|
672
|
-
|
|
673
|
-
// Inversion.
|
|
674
|
-
assert!(eq(&val_minus_7, &neg(&val_7)), 1);
|
|
675
|
-
assert!(std::option::is_none(&inv(&val_0)), 1);
|
|
676
|
-
|
|
677
|
-
// Squaring.
|
|
678
|
-
let val_x = rand_insecure<Fr>();
|
|
679
|
-
assert!(eq(&mul(&val_x, &val_x), &sqr(&val_x)), 1);
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
#[test_only]
|
|
683
|
-
const Q_SERIALIZED: vector<u8> = x"47fd7cd8168c203c8dca7168916a81975d588181b64550b829a031e1724e6430";
|
|
684
|
-
#[test_only]
|
|
685
|
-
const FQ_VAL_0_SERIALIZED_LSB: vector<u8> = x"0000000000000000000000000000000000000000000000000000000000000000";
|
|
686
|
-
#[test_only]
|
|
687
|
-
const FQ_VAL_1_SERIALIZED_LSB: vector<u8> = x"0100000000000000000000000000000000000000000000000000000000000000";
|
|
688
|
-
#[test_only]
|
|
689
|
-
const FQ_VAL_7_SERIALIZED_LSB: vector<u8> = x"0700000000000000000000000000000000000000000000000000000000000000";
|
|
690
|
-
#[test_only]
|
|
691
|
-
const FQ_VAL_7_SERIALIZED_MSB: vector<u8> = x"0000000000000000000000000000000000000000000000000000000000000007";
|
|
692
|
-
#[test_only]
|
|
693
|
-
const FQ_VAL_7_NEG_SERIALIZED_LSB: vector<u8> = x"40fd7cd8168c203c8dca7168916a81975d588181b64550b829a031e1724e6430";
|
|
694
|
-
|
|
695
|
-
#[test(fx = @std)]
|
|
696
|
-
fun test_fq(fx: signer) {
|
|
697
|
-
enable_cryptography_algebra_natives(&fx);
|
|
698
|
-
|
|
699
|
-
// Constants.
|
|
700
|
-
assert!(Q_SERIALIZED == order<Fq>(), 1);
|
|
701
|
-
|
|
702
|
-
// Serialization/deserialization.
|
|
703
|
-
let val_0 = zero<Fq>();
|
|
704
|
-
let val_1 = one<Fq>();
|
|
705
|
-
assert!(FQ_VAL_0_SERIALIZED_LSB == serialize<Fq, FormatFqLsb>(&val_0), 1);
|
|
706
|
-
assert!(FQ_VAL_1_SERIALIZED_LSB == serialize<Fq, FormatFqLsb>(&val_1), 1);
|
|
707
|
-
let val_7 = from_u64<Fq>(7);
|
|
708
|
-
let val_7_2nd = std::option::extract(&mut deserialize<Fq, FormatFqLsb>(&FQ_VAL_7_SERIALIZED_LSB));
|
|
709
|
-
let val_7_3rd = std::option::extract(&mut deserialize<Fq, FormatFqMsb>(&FQ_VAL_7_SERIALIZED_MSB));
|
|
710
|
-
assert!(eq(&val_7, &val_7_2nd), 1);
|
|
711
|
-
assert!(eq(&val_7, &val_7_3rd), 1);
|
|
712
|
-
assert!(FQ_VAL_7_SERIALIZED_LSB == serialize<Fq, FormatFqLsb>(&val_7), 1);
|
|
713
|
-
assert!(FQ_VAL_7_SERIALIZED_MSB == serialize<Fq, FormatFqMsb>(&val_7), 1);
|
|
714
|
-
|
|
715
|
-
// Deserialization should fail if given a byte array of right size but the value is not a member.
|
|
716
|
-
assert!(std::option::is_none(&deserialize<Fq, FormatFqLsb>(&x"47fd7cd8168c203c8dca7168916a81975d588181b64550b829a031e1724e6430")), 1);
|
|
717
|
-
assert!(std::option::is_none(&deserialize<Fq, FormatFqMsb>(&x"30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47")), 1);
|
|
718
|
-
|
|
719
|
-
// Deserialization should fail if given a byte array of wrong size.
|
|
720
|
-
assert!(std::option::is_none(&deserialize<Fq, FormatFqLsb>(&x"46fd7cd8168c203c8dca7168916a81975d588181b64550b829a031e1724e643000")), 1);
|
|
721
|
-
assert!(std::option::is_none(&deserialize<Fq, FormatFqMsb>(&x"30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4600")), 1);
|
|
722
|
-
assert!(std::option::is_none(&deserialize<Fq, FormatFqLsb>(&x"ffff")), 1);
|
|
723
|
-
assert!(std::option::is_none(&deserialize<Fq, FormatFqMsb>(&x"ffff")), 1);
|
|
724
|
-
|
|
725
|
-
// Negation.
|
|
726
|
-
let val_minus_7 = neg(&val_7);
|
|
727
|
-
assert!(FQ_VAL_7_NEG_SERIALIZED_LSB == serialize<Fq, FormatFqLsb>(&val_minus_7), 1);
|
|
728
|
-
|
|
729
|
-
// Addition.
|
|
730
|
-
let val_9 = from_u64<Fq>(9);
|
|
731
|
-
let val_2 = from_u64<Fq>(2);
|
|
732
|
-
assert!(eq(&val_2, &add(&val_minus_7, &val_9)), 1);
|
|
733
|
-
|
|
734
|
-
// Subtraction.
|
|
735
|
-
assert!(eq(&val_9, &sub(&val_2, &val_minus_7)), 1);
|
|
736
|
-
|
|
737
|
-
// Multiplication.
|
|
738
|
-
let val_63 = from_u64<Fq>(63);
|
|
739
|
-
assert!(eq(&val_63, &mul(&val_7, &val_9)), 1);
|
|
740
|
-
|
|
741
|
-
// division.
|
|
742
|
-
let val_0 = from_u64<Fq>(0);
|
|
743
|
-
assert!(eq(&val_7, &std::option::extract(&mut div(&val_63, &val_9))), 1);
|
|
744
|
-
assert!(std::option::is_none(&div(&val_63, &val_0)), 1);
|
|
745
|
-
|
|
746
|
-
// Inversion.
|
|
747
|
-
assert!(eq(&val_minus_7, &neg(&val_7)), 1);
|
|
748
|
-
assert!(std::option::is_none(&inv(&val_0)), 1);
|
|
749
|
-
|
|
750
|
-
// Squaring.
|
|
751
|
-
let val_x = rand_insecure<Fq>();
|
|
752
|
-
assert!(eq(&mul(&val_x, &val_x), &sqr(&val_x)), 1);
|
|
753
|
-
}
|
|
754
|
-
|
|
755
|
-
#[test(fx = @std)]
|
|
756
|
-
fun test_pairing(fx: signer) {
|
|
757
|
-
enable_cryptography_algebra_natives(&fx);
|
|
758
|
-
|
|
759
|
-
// pairing(a*P,b*Q) == (a*b)*pairing(P,Q)
|
|
760
|
-
let element_p = rand_insecure<G1>();
|
|
761
|
-
let element_q = rand_insecure<G2>();
|
|
762
|
-
let a = rand_insecure<Fr>();
|
|
763
|
-
let b = rand_insecure<Fr>();
|
|
764
|
-
let gt_element = pairing<G1, G2,Gt>(&scalar_mul(&element_p, &a), &scalar_mul(&element_q, &b));
|
|
765
|
-
let gt_element_another = scalar_mul(&pairing<G1, G2,Gt>(&element_p, &element_q), &mul(&a, &b));
|
|
766
|
-
assert!(eq(>_element, >_element_another), 1);
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
#[test(fx = @std)]
|
|
770
|
-
fun test_multi_pairing(fx: signer) {
|
|
771
|
-
enable_cryptography_algebra_natives(&fx);
|
|
772
|
-
|
|
773
|
-
// Will compute e(a0*P0,b0*Q0)+e(a1*P1,b1*Q1)+e(a2*P2,b2*Q2).
|
|
774
|
-
let a0 = rand_insecure<Fr>();
|
|
775
|
-
let a1 = rand_insecure<Fr>();
|
|
776
|
-
let a2 = rand_insecure<Fr>();
|
|
777
|
-
let element_p0 = rand_insecure<G1>();
|
|
778
|
-
let element_p1 = rand_insecure<G1>();
|
|
779
|
-
let element_p2 = rand_insecure<G1>();
|
|
780
|
-
let p0_a0 = scalar_mul(&element_p0, &a0);
|
|
781
|
-
let p1_a1 = scalar_mul(&element_p1, &a1);
|
|
782
|
-
let p2_a2 = scalar_mul(&element_p2, &a2);
|
|
783
|
-
let b0 = rand_insecure<Fr>();
|
|
784
|
-
let b1 = rand_insecure<Fr>();
|
|
785
|
-
let b2 = rand_insecure<Fr>();
|
|
786
|
-
let element_q0 = rand_insecure<G2>();
|
|
787
|
-
let element_q1 = rand_insecure<G2>();
|
|
788
|
-
let element_q2 = rand_insecure<G2>();
|
|
789
|
-
let q0_b0 = scalar_mul(&element_q0, &b0);
|
|
790
|
-
let q1_b1 = scalar_mul(&element_q1, &b1);
|
|
791
|
-
let q2_b2 = scalar_mul(&element_q2, &b2);
|
|
792
|
-
|
|
793
|
-
// Naive method.
|
|
794
|
-
let n0 = pairing<G1, G2,Gt>(&p0_a0, &q0_b0);
|
|
795
|
-
let n1 = pairing<G1, G2,Gt>(&p1_a1, &q1_b1);
|
|
796
|
-
let n2 = pairing<G1, G2,Gt>(&p2_a2, &q2_b2);
|
|
797
|
-
let n = zero<Gt>();
|
|
798
|
-
n = add(&n, &n0);
|
|
799
|
-
n = add(&n, &n1);
|
|
800
|
-
n = add(&n, &n2);
|
|
801
|
-
|
|
802
|
-
// Efficient API.
|
|
803
|
-
let m = multi_pairing<G1, G2, Gt>(&vector[p0_a0, p1_a1, p2_a2], &vector[q0_b0, q1_b1, q2_b2]);
|
|
804
|
-
assert!(eq(&n, &m), 1);
|
|
805
|
-
}
|
|
806
|
-
|
|
807
|
-
#[test(fx = @std)]
|
|
808
|
-
#[expected_failure(abort_code = 0x010002, location = aptos_std::crypto_algebra)]
|
|
809
|
-
fun test_multi_pairing_should_abort_when_sizes_mismatch(fx: signer) {
|
|
810
|
-
enable_cryptography_algebra_natives(&fx);
|
|
811
|
-
let g1_elements = vector[rand_insecure<G1>()];
|
|
812
|
-
let g2_elements = vector[rand_insecure<G2>(), rand_insecure<G2>()];
|
|
813
|
-
multi_pairing<G1, G2, Gt>(&g1_elements, &g2_elements);
|
|
814
|
-
}
|
|
815
|
-
|
|
816
|
-
#[test(fx = @std)]
|
|
817
|
-
#[expected_failure(abort_code = 0x010002, location = aptos_std::crypto_algebra)]
|
|
818
|
-
fun test_multi_scalar_mul_should_abort_when_sizes_mismatch(fx: signer) {
|
|
819
|
-
enable_cryptography_algebra_natives(&fx);
|
|
820
|
-
let elements = vector[rand_insecure<G1>()];
|
|
821
|
-
let scalars = vector[rand_insecure<Fr>(), rand_insecure<Fr>()];
|
|
822
|
-
multi_scalar_mul(&elements, &scalars);
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
#[test_only]
|
|
826
|
-
/// The maximum number of `G1` elements that can be created in a transaction,
|
|
827
|
-
/// calculated by the current memory limit (1MB) and the in-mem G1 representation size (96 bytes per element).
|
|
828
|
-
const G1_NUM_MAX: u64 = 1048576 / 96;
|
|
829
|
-
|
|
830
|
-
#[test(fx = @std)]
|
|
831
|
-
fun test_memory_limit(fx: signer) {
|
|
832
|
-
enable_cryptography_algebra_natives(&fx);
|
|
833
|
-
let remaining = G1_NUM_MAX;
|
|
834
|
-
while (remaining > 0) {
|
|
835
|
-
zero<G1>();
|
|
836
|
-
remaining = remaining - 1;
|
|
837
|
-
}
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
#[test(fx = @std)]
|
|
841
|
-
#[expected_failure(abort_code = 0x090003, location = std::crypto_algebra)]
|
|
842
|
-
fun test_memory_limit_exceeded_with_g1(fx: signer) {
|
|
843
|
-
enable_cryptography_algebra_natives(&fx);
|
|
844
|
-
let remaining = G1_NUM_MAX + 1;
|
|
845
|
-
while (remaining > 0) {
|
|
846
|
-
zero<G1>();
|
|
847
|
-
remaining = remaining - 1;
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
|
|
851
|
-
//
|
|
852
|
-
// (Tests end here.)
|
|
853
|
-
//
|
|
854
|
-
|
|
855
|
-
}
|