卡多诺验证数据签名
一个轻量级打字程序库来验证 Cip30 数据签名.
开始
npm i @cardano-foundation/cardano-verify-datasignature
核查
你需要一个钥匙和一个签名 来自 cip30 数据签名。 。 。 .
如何获得Cip30的数据签名?
创建 Cip30 数据签名有多种方法:
-
确保您安装了 Cip30 兼容钱包( Nami, NuFi, Typhon Wallet, Flint, Gerowallet, Yoroi,...).
-
选项A:打开浏览器控制台并复制并粘贴此功能:
const signMessage = async (message, walletname) => {
const api = await window.cardano[walletname].enable();
const hexAddresses = await api.getRewardAddresses();
const hexAddress = hexAddresses[0];
let hexMessage = '';
for (var i = 0, l = message.length; i < l; i++) {
hexMessage += message.charCodeAt(i).toString(16);
}
try {
const { signature, key } = await api.signData(hexAddress, hexMessage);
console.log(signature, key);
} catch (error) {
console.warn(error);
}
};
用法示例:
signMessage('Hello World', 'yoroi').then((dataSignature) =>
console.log(dataSignature)
);
-
备选案文B:使用 符号 函数 卡通- 连接- wallet 库获取有效的密钥和签名.
"验证签名"是什么意思??
此函数使用公用密钥(COSE KEY)并检查其对应的私用密钥是否被用于签名(COSE Sign1)内的有效载荷(数据/消息)的签名.
此外,还可提供可选的纯文本电文,以检查纯文本与所签名电文是否平等.
另一个可选的参数是以(addr1/addr test1/stake1/stake test1)开头的可读(bech32)地址,以测试该地址是否属于用于签名消息的密钥.
const verifyDataSignature = require('@cardano-foundation/cardano-verify-datasignature');
const key =
'a4010103272006215820b89526fd6bf4ba737c55ea90670d16a27f8de6cc1982349b3b676705a2f420c6';
const signature =
'84582aa201276761646472657373581de118987c1612069d4080a0eb247820cb987fea81bddeaafdd41f996281a166686173686564f458264175677573746120416461204b696e672c20436f756e74657373206f66204c6f76656c61636558401712458b19f606b322982f6290c78529a235b56c0f1cec4f24b12a8660b40cd37f4c5440a465754089c462ed4b0d613bffaee3d1833516569fda4852f42a4a0f';
const message = 'Augusta Ada King, Countess of Lovelace';
const address = 'stake1uyvfslqkzgrf6syq5r4jg7pqewv8l65phh024lw5r7vk9qgznhyty';
console.log(verifyDataSignature(signature, key)); // true
console.log(verifyDataSignature(signature, key, message)); // true
console.log(verifyDataSignature(signature, key, message, address)); // true
console.log(
verifyDataSignature(
signature,
key,
message,
'stake1_test1hweafkafrwf9ets85rs9gtk9qgzegwtg'
)
); // false
console.log(
verifyDataSignature(signature, key, 'Augusta Ada King, Countess of Lovelace!')
); // false