Sur cette page
Signature
Connectez le fournisseur avant de signer et confirmez le réseau sélectionné. Le fournisseur injecté directement et l’adaptateur Aptos Wallet Standard utilisent des types d’arguments différents ; n’intervertissez pas leurs exemples. Remplacez les adresses abrégées et fournissez un client SDK pour les appels en lecture seule.
Découvrez comment signer des messages pour l’authentification ou la vérification.
Signer un message
Signer des messages arbitraires pour l’authentification ou la vérification :
const message = 'Welcome to MyApp!\n\nClick to sign in.\n\nNonce: abc123'
const response = await provider.signMessage({
message,
nonce: 12345, // Example only; obtain a single-use challenge from your server
})
console.log({
signature: response.signature, // Hex-encoded signature
fullMessage: response.fullMessage, // Full signed message
prefix: response.prefix, // Message prefix used
})Options de signature de message
const response = await provider.signMessage({
message: 'Hello Aptos',
nonce: 12345,
address: true, // Include address in message
application: true, // Include app info
chainId: true, // Include chain ID
})Vérifier un message (hors chaîne)
import nacl from 'tweetnacl'
const { signature, fullMessage } = await provider.signMessage({
message: 'Hello Aptos',
nonce: 12345,
})
const account = await provider.account()
const pubKeyBytes = Buffer.from(account.publicKey.slice(2), 'hex')
const signatureBytes = Buffer.from(signature.slice(2), 'hex')
const messageBytes = Buffer.from(fullMessage)
const isValid = nacl.sign.detached.verify(messageBytes, signatureBytes, pubKeyBytes)
console.log('Signature valid:', isValid)Se connecter (norme AIP)
Pour un processus de connexion normalisé :
const signInInput = {
// Sign-in parameters
}
const result = await provider.signIn(signInInput)
console.log({
address: result.account.address,
publicKey: result.account.publicKey,
signature: result.signature,
})Gestion des erreurs
try {
await provider.signMessage({ message: 'Hello', nonce: 12345 })
} catch (error) {
switch (error.code) {
case 4001:
console.log('User rejected the request')
break
case 4100:
console.log('The account or method is not authorized')
break
case 4200:
console.log('Unsupported method')
break
default:
console.error('Error:', error.message)
}
}La méthode directe signMessage utilise un nonce numérique. signMessageCompatible et les intégrations Wallet Standard utilisent un nonce sous forme de chaîne. Vérifiez la valeur renvoyée de fullMessage, le signataire et le défi, puis invalidez le défi après utilisation. L’entrée de connexion ci-dessus est un exemple schématique ; construisez l’objet complet AptosSignInInput requis par la version de votre adaptateur.