UNPKG

@aptos-labs/siwa

Version:
9 lines (7 loc) 8.64 kB
"use strict";var g=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var k=(e,t)=>{for(var i in t)g(e,i,{get:t[i],enumerable:!0})},v=(e,t,i,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of T(t))!$.call(e,r)&&r!==i&&g(e,r,{get:()=>t[r],enumerable:!(s=K(t,r))||s.enumerable});return e};var R=e=>v(g({},"__esModule",{value:!0}),e);var Y={};k(Y,{CURRENT_SERIALIZATION_VERSION:()=>w,createSignInMessage:()=>x,createSignInSigningMessage:()=>b,deserializeSignInOutput:()=>J,deserializeSignInPublicKey:()=>f,deserializeSignInSignature:()=>m,generateNonce:()=>X,getSignInPublicKeyScheme:()=>Q,isValidPublicKeyScheme:()=>l,parseSignInMessage:()=>L,serializeSignInOutput:()=>Z,verifySignInMessage:()=>W,verifySignInSignature:()=>G});module.exports=R(Y);var d=require("@aptos-labs/ts-sdk"),A=require("@noble/hashes/sha3");var c=require("@aptos-labs/ts-sdk");function I(e,t,i){if(e===t)return!0;let s=e.length;if(s!==t.length)return!1;for(let r=0;r<s;r++)if(!i?.includes(e[r])&&e[r]!==t[r])return!1;return!0}function S(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i="";for(let s=0;s<e.byteLength;s+=3){let r=0,a=0;for(let u=0;u<3&&s+u<e.byteLength;u++)r=r<<8|e[s+u],a+=8;for(let u=0;u<4;u++)a>=6?(i+=t[r>>a-6&63],a-=6):a>0&&(i+=t[r<<6-a&63],a=0)}return i}async function h(e,t){try{return await e()}catch{return t}}var p=new c.Aptos(new c.AptosConfig({network:c.Network.MAINNET}));async function _(e,t={}){return e.publicKey.verifySignatureAsync({aptosConfig:t.aptos?.config??p.config,message:e.signingMessage,signature:e.signature})}function x(e){let t=`${e.domain} wants you to sign in with your Aptos account: `;t+=`${e.address}`,e.statement&&(t+=` ${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 s of e.resources)i.push(`- ${s}`)}return i.length&&(t+=` ${i.join(` `)}`),t}function b(e){let i=(0,A.sha3_256)("SIGN_IN_WITH_APTOS::");return new Uint8Array([...i,...new TextEncoder().encode(e)])}var M="(?<domain>[^\\n]+?) wants you to sign in with your Aptos account:\\n",P="(?<address>[^\\n]+)(?:\\n|$)",B="(?:\\n(?<statement>[\\S\\s]*?)(?:\\n|$))??",z="(?:\\nURI: (?<uri>[^\\n]+))?",V="(?:\\nVersion: (?<version>[^\\n]+))?",O="(?:\\nNonce: (?<nonce>[^\\n]+))?",D="(?:\\nIssued At: (?<issuedAt>[^\\n]+))?",N="(?:\\nExpiration Time: (?<expirationTime>[^\\n]+))?",U="(?:\\nNot Before: (?<notBefore>[^\\n]+))?",q="(?:\\nRequest ID: (?<requestId>[^\\n]+))?",F="(?:\\nChain ID: (?<chainId>[^\\n]+))?",H="(?:\\nResources:(?<resources>(?:\\n- [^\\n]+)*))?",C=`${z}${V}${O}${D}${N}${U}${q}${F}${H}`,j=new RegExp(`^${M}${P}${B}${C}\\n*$`);function L(e){let t=j.exec(e);if(!t)return{valid:!1,errors:["invalid_message"]};let i=t.groups;if(!i)return{valid:!1,errors:["invalid_message"]};let s=[];return(!i.domain||i.domain==="undefined")&&s.push("message_domain_missing"),(!i.address||i.address==="undefined")&&s.push("message_address_missing"),(!i.version||i.version==="undefined")&&s.push("message_version_missing"),(!i.chainId||i.chainId==="undefined")&&s.push("message_chain_id_missing"),s.length?{valid:!1,errors:s}:{valid:!0,data:{domain:i.domain,address:i.address,statement:i.statement,uri:i.uri,version:i.version,nonce:i.nonce,chainId:i.chainId,issuedAt:i.issuedAt,expirationTime:i.expirationTime,notBefore:i.notBefore,requestId:i.requestId,resources:i.resources?.split(` - `).slice(1)}}}async function W(e,t={}){let{expected:i,input:s,publicKey:r}=e;if(!(r instanceof d.AccountPublicKey))return{valid:!1,errors:["invalid_public_key"]};let a=s.address,u=await h(async()=>(await(t.aptos??p).getAccountInfo({accountAddress:a})).authentication_key,a),E=r.authKey().derivedAddress();if(!d.AccountAddress.from(u,{maxMissingChars:63}).equals(E))return{valid:!1,errors:["invalid_auth_key"]};let o=[];i.domain&&i.domain!==s.domain&&o.push("message_domain_mismatch"),i.address&&i.address!==s.address&&o.push("message_address_mismatch"),i.statement!==s.statement&&o.push("message_statement_mismatch"),i.uri&&i.uri!==s.uri&&o.push("message_uri_mismatch"),i.version&&i.version!==s.version&&o.push("message_version_mismatch"),i.chainId&&i.chainId!==s.chainId&&o.push("message_chain_id_mismatch"),i.nonce!==s.nonce&&o.push("message_nonce_mismatch"),i.issuedAt!==s.issuedAt&&o.push("message_issued_at_mismatch"),i.expirationTime!==s.expirationTime&&o.push("message_expiration_time_mismatch"),i.notBefore!==s.notBefore&&o.push("message_not_before_mismatch"),i.requestId!==s.requestId&&o.push("message_request_id_mismatch"),i.resources?s.resources?I(i.resources,s.resources,t?.excludedResources)||o.push("message_resources_mismatch"):o.push("message_resources_missing"):s.resources&&o.push("message_resources_unexpected");let y=new Date;return i.expirationTime&&y.getTime()>=new Date(i.expirationTime).getTime()&&o.push("message_expired"),i.notBefore&&y.getTime()<new Date(i.notBefore).getTime()&&o.push("message_not_yet_valid"),o.length?{valid:!1,errors:o}:{valid:!0}}async function G(e,t={}){let i=x(e.input),s=b(i);return await _({publicKey:e.publicKey,signature:e.signature,signingMessage:s},t)?{valid:!0}:{valid:!1,errors:["invalid_signature"]}}var n=require("@aptos-labs/ts-sdk");var l=e=>e==="ed25519"||e==="multi_ed25519"||e==="single_key"||e==="multi_key";function Q(e){if(typeof e=="object"){if(n.Ed25519PublicKey.isInstance(e))return"ed25519";if(n.AnyPublicKey.isInstance(e))return"single_key";if(n.MultiKey.isInstance(e))return"multi_key";if(e instanceof n.MultiEd25519PublicKey)return"multi_ed25519";throw new Error(`Unknown public key type for instance: ${e}`)}switch(e){case n.SigningScheme.Ed25519:return"ed25519";case n.SigningScheme.MultiEd25519:return"multi_ed25519";case n.SigningScheme.SingleKey:return"single_key";case n.SigningScheme.MultiKey:return"multi_key";default:throw new Error(`Unknown public key type for signing scheme: ${e}`)}}function f(e,t){let i=new n.Deserializer(n.Hex.fromHexInput(t).toUint8Array());if(typeof e!="string")switch(e){case n.SigningScheme.Ed25519:return n.Ed25519PublicKey.deserialize(i);case n.SigningScheme.MultiEd25519:return n.MultiEd25519PublicKey.deserialize(i);case n.SigningScheme.SingleKey:return n.AnyPublicKey.deserialize(i);case n.SigningScheme.MultiKey:return n.MultiKey.deserialize(i);default:throw new Error(`Unknown public key type for signing scheme: ${e}`)}switch(e){case"ed25519":return n.Ed25519PublicKey.deserialize(i);case"multi_ed25519":return n.MultiEd25519PublicKey.deserialize(i);case"single_key":return n.AnyPublicKey.deserialize(i);case"multi_key":return n.MultiKey.deserialize(i);default:throw new Error(`Unknown public key type: ${e}`)}}function m(e,t){let i=new n.Deserializer(n.Hex.fromHexInput(t).toUint8Array());if(typeof e!="string")switch(e){case n.SigningScheme.Ed25519:return n.Ed25519Signature.deserialize(i);case n.SigningScheme.MultiEd25519:return n.MultiEd25519Signature.deserialize(i);case n.SigningScheme.SingleKey:return n.AnySignature.deserialize(i);case n.SigningScheme.MultiKey:return n.MultiKeySignature.deserialize(i);default:throw new Error(`Unknown signature type for signing scheme: ${e}`)}switch(e){case"ed25519":return n.Ed25519Signature.deserialize(i);case"multi_ed25519":return n.MultiEd25519Signature.deserialize(i);case"single_key":return n.AnySignature.deserialize(i);case"multi_key":return n.MultiKeySignature.deserialize(i);default:throw new Error(`Unknown signature type: ${e}`)}}function X(){let e=new Uint8Array(12);return crypto.getRandomValues(e),S(e)}var w="2",Z=e=>({version:w,type:e.type,signature:e.signature.bcsToHex().toString(),input:e.input,publicKey:e.account.publicKey.bcsToHex().toString()}),J=e=>{let{version:t}=e;if(t==="2"){if(!l(e.type))throw new Error(`Unexpected public key scheme: ${e.type}`);return{version:"2",type:e.type,signature:m(e.type,e.signature),input:e.input,publicKey:f(e.type,e.publicKey)}}throw new Error(`Unexpected serialization version: ${t}`)};0&&(module.exports={CURRENT_SERIALIZATION_VERSION,createSignInMessage,createSignInSigningMessage,deserializeSignInOutput,deserializeSignInPublicKey,deserializeSignInSignature,generateNonce,getSignInPublicKeyScheme,isValidPublicKeyScheme,parseSignInMessage,serializeSignInOutput,verifySignInMessage,verifySignInSignature}); //# sourceMappingURL=index.cjs.map