@aptos-labs/siwa
Version:
Library of utilities for Sign in with Aptos
10 lines (7 loc) • 5.29 kB
JavaScript
;var c=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var E=(e,t)=>{for(var n in t)c(e,n,{get:t[n],enumerable:!0})},K=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of x(t))!b.call(e,s)&&s!==n&&c(e,s,{get:()=>t[s],enumerable:!(r=A(t,s))||r.enumerable});return e};var w=e=>K(c({},"__esModule",{value:!0}),e);var F={};E(F,{CURRENT_LEGACY_SERIALIZATION_VERSION:()=>h,createLegacySignInMessage:()=>m,deserializeLegacySignInOutput:()=>q,serializeLegacySignInOutput:()=>H,verifyLegacySignIn:()=>L});module.exports=w(F);var a=require("@aptos-labs/ts-sdk"),f=require("@noble/hashes/sha3");var l=require("@aptos-labs/ts-sdk"),v=require("@noble/hashes/sha3");var o=require("@aptos-labs/ts-sdk"),g=require("@aptos-labs/ts-sdk");var u=new g.Aptos(new o.AptosConfig({network:o.Network.MAINNET}));async function d(e,t={}){return e.publicKey.verifySignatureAsync({aptosConfig:t.aptos?.config??u.config,message:e.signingMessage,signature:e.signature})}function p(e){let t=`${e.domain} wants you to sign in with your Aptos account:
`;t+=`${e.address}`,e.statement&&(t+=`
${e.statement}`);let n=[];if(e.uri&&n.push(`URI: ${e.uri}`),e.version&&n.push(`Version: ${e.version}`),e.nonce&&n.push(`Nonce: ${e.nonce}`),e.issuedAt&&n.push(`Issued At: ${e.issuedAt}`),e.expirationTime&&n.push(`Expiration Time: ${e.expirationTime}`),e.notBefore&&n.push(`Not Before: ${e.notBefore}`),e.requestId&&n.push(`Request ID: ${e.requestId}`),e.chainId&&n.push(`Chain ID: ${e.chainId}`),e.resources){n.push("Resources:");for(let r of e.resources)n.push(`- ${r}`)}return n.length&&(t+=`
${n.join(`
`)}`),t}var T="(?<domain>[^\\n]+?) wants you to sign in with your Aptos account:\\n",k="(?<address>[^\\n]+)(?:\\n|$)",$="(?:\\n(?<statement>[\\S\\s]*?)(?:\\n|$))??",M="(?:\\nURI: (?<uri>[^\\n]+))?",P="(?:\\nVersion: (?<version>[^\\n]+))?",R="(?:\\nNonce: (?<nonce>[^\\n]+))?",V="(?:\\nIssued At: (?<issuedAt>[^\\n]+))?",z="(?:\\nExpiration Time: (?<expirationTime>[^\\n]+))?",B="(?:\\nNot Before: (?<notBefore>[^\\n]+))?",O="(?:\\nRequest ID: (?<requestId>[^\\n]+))?",D="(?:\\nChain ID: (?<chainId>[^\\n]+))?",N="(?:\\nResources:(?<resources>(?:\\n- [^\\n]+)*))?",U=`${M}${P}${R}${V}${z}${B}${O}${D}${N}`,X=new RegExp(`^${T}${k}${$}${U}\\n*$`);var m=e=>{let t=p(e);return t+=`
Hash: ${a.Hex.fromHexInput((0,f.sha3_256)(t)).toString()}`,t},L=async(e,t,n={})=>{let r=m(e);if(!t.message.includes(r))return{valid:!1,errors:["invalid_full_message"]};if(!(t.publicKey instanceof a.AccountPublicKey))return{valid:!1,errors:["invalid_public_key"]};let s=t.publicKey.authKey().derivedAddress(),_=await(n.aptos??u).lookupOriginalAccountAddress({authenticationKey:s});return a.AccountAddress.from(e.address,{maxMissingChars:63}).equals(_)?await d({publicKey:t.publicKey,signature:t.signature,signingMessage:t.message},{aptos:n.aptos})?{valid:!0,data:e}:{valid:!1,errors:["invalid_signature"]}:{valid:!1,errors:["invalid_auth_key"]}};var i=require("@aptos-labs/ts-sdk");var y=e=>e==="ed25519"||e==="multi_ed25519"||e==="single_key"||e==="multi_key";function I(e,t){let n=new i.Deserializer(i.Hex.fromHexInput(t).toUint8Array());if(typeof e!="string")switch(e){case i.SigningScheme.Ed25519:return i.Ed25519PublicKey.deserialize(n);case i.SigningScheme.MultiEd25519:return i.MultiEd25519PublicKey.deserialize(n);case i.SigningScheme.SingleKey:return i.AnyPublicKey.deserialize(n);case i.SigningScheme.MultiKey:return i.MultiKey.deserialize(n);default:throw new Error(`Unknown public key type for signing scheme: ${e}`)}switch(e){case"ed25519":return i.Ed25519PublicKey.deserialize(n);case"multi_ed25519":return i.MultiEd25519PublicKey.deserialize(n);case"single_key":return i.AnyPublicKey.deserialize(n);case"multi_key":return i.MultiKey.deserialize(n);default:throw new Error(`Unknown public key type: ${e}`)}}function S(e,t){let n=new i.Deserializer(i.Hex.fromHexInput(t).toUint8Array());if(typeof e!="string")switch(e){case i.SigningScheme.Ed25519:return i.Ed25519Signature.deserialize(n);case i.SigningScheme.MultiEd25519:return i.MultiEd25519Signature.deserialize(n);case i.SigningScheme.SingleKey:return i.AnySignature.deserialize(n);case i.SigningScheme.MultiKey:return i.MultiKeySignature.deserialize(n);default:throw new Error(`Unknown signature type for signing scheme: ${e}`)}switch(e){case"ed25519":return i.Ed25519Signature.deserialize(n);case"multi_ed25519":return i.MultiEd25519Signature.deserialize(n);case"single_key":return i.AnySignature.deserialize(n);case"multi_key":return i.MultiKeySignature.deserialize(n);default:throw new Error(`Unknown signature type: ${e}`)}}var h="1",H=e=>({version:h,type:e.type,signature:e.signature.bcsToHex().toString(),message:e.message,publicKey:e.account.publicKey.bcsToHex().toString()}),q=e=>{let{version:t}=e;if(t==="1"){if(!y(e.type))throw new Error(`Unexpected public key scheme: ${e.type}`);return{version:"1",type:e.type,signature:S(e.type,e.signature),publicKey:I(e.type,e.publicKey),message:e.message}}throw new Error(`Unexpected serialization version: ${t}`)};0&&(module.exports={CURRENT_LEGACY_SERIALIZATION_VERSION,createLegacySignInMessage,deserializeLegacySignInOutput,serializeLegacySignInOutput,verifyLegacySignIn});
//# sourceMappingURL=index.cjs.map