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