UNPKG

@mysten/sui

Version:
79 lines (60 loc) 2.04 kB
# ZkLogin > Zero-knowledge authentication with OAuth providers on Sui Utilities for working with zkLogin. Currently contains functionality to create and parse zkLogin signatures and compute zkLogin addresses. To parse a serialized zkLogin signature ```typescript const parsedSignature = await parseZkLoginSignature('BQNNMTY4NjAxMzAyO....'); ``` Use `getZkLoginSignature` to serialize a zkLogin signature. ```typescript const serializedSignature = await getZkLoginSignature({ inputs, maxEpoch, userSignature }); ``` To compute the address for a given address seed and iss you can use `computeZkLoginAddressFromSeed` ```typescript const address = computeZkLoginAddressFromSeed(0n, 'https://accounts.google.com'); ``` To compute an address from jwt: ```typescript const address = jwtToAddress(jwtAsString, salt); ``` To compute an address from a parsed jwt: ```typescript const address = computeZkLoginAddress({ claimName, claimValue, iss, aud, userSalt: BigInt(salt), }); ``` To use zkLogin inside a multisig, see the [Multisig Guide](../sui/cryptography/multisig) for more details. ## Legacy addresses When zklogin was first introduced, there was an inconsistency in how the address seed was computed. For backwards compatibility reasons there are 2 valid addresses for a given set of inputs. Methods that produce zklogin addresses all accept a `legacyAddress` boolean flag, either as their last parameter, or in their options argument. ```typescript computeZkLoginAddress, computeZkLoginAddressFromSeed, jwtToAddress, toZkLoginPublicIdentifier, genAddressSeed, } from '@mysten/sui/zklogin'; const address = jwtToAddress(jwtAsString, salt, true); const address = computeZkLoginAddressFromSeed(0n, 'https://accounts.google.com', true); const address = computeZkLoginAddress({ claimName, claimValue, iss, aud, userSalt: BigInt(salt), legacyAddress: true, }); const address = toZkLoginPublicIdentifier( genAddressSeed(userSalt, claimName, claimValue, aud), iss, { legacyAddress: true }, ).toSuiAddress(); ```