Sur cette page
Signature
Appelez enable() avant d’utiliser l’API dApp. Les adresses renvoyées par l’API CIP-30 sont des octets encodés en hexadécimal ; les paramètres de transaction et de valeur sont du CBOR encodé en hexadécimal. Les exemples de navigateur utilisant Buffer nécessitent une importation explicite de buffer ou un utilitaire de conversion d’octets.
Découvrez comment signer des données pour l’authentification sur Cardano.
Signer des données (CIP-8)
Signer des données arbitraires pour l’authentification :
const api = await window.cardano.onekey.enable()
const addresses = await api.getUsedAddresses()
const address = addresses[0]
// Message to sign
const payload = Buffer.from('Hello Cardano!').toString('hex')
const signature = await api.signData(address, payload)
console.log({
signature: signature.signature, // COSE_Sign1 signature
key: signature.key, // COSE_Key public key
})Vérifier la signature
import { COSESign1, COSEKey } from '@emurgo/cardano-message-signing-browser'
const coseSign1 = COSESign1.from_bytes(
Buffer.from(signature.signature, 'hex')
)
const coseKey = COSEKey.from_bytes(
Buffer.from(signature.key, 'hex')
)
// Get the signed payload
const signedPayload = coseSign1.payload()
// Verify signature
// Parsing COSE is not verification. Use a CIP-8 verifier to check the
// protected headers, signing structure, payload, signature, and address binding.Gestion des erreurs
try {
const api = await window.cardano.onekey.enable()
} catch (error) {
if (error.code === -3) {
console.log('The wallet refused the request')
} else if (error.code === -4) {
console.log('The account changed; reconnect and retry')
} else {
console.error('Error:', error.message)
}
}Erreurs courantes
| Code | Description |
|---|---|
| -1 | Requête non valide |
| -2 | Erreur interne |
| -3 | Requête refusée |
| -4 | Compte modifié |
Dernière mise à jour le