UNPKG

@aptos-labs/siwa

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