Подпишись на канал фаундера и разработчика экосистемы tonpie
[Решено] использование `check_signature` и `check_data_signature` для подписи?
-
Привет, ребята, как я могу подписать ячейку с помощью ton-crypto, или ton-core, или каким-либо другим способом, который позже может быть корректно проверен с помощью
check_signature
илиcheck_data_signature
изstdlib.fc
в FunC?
Этот вопрос был импортирован из чата Telegram: ***Скрыто***
click to show
-
Вы можете подписать ячейку с помощью
ton-crypto
или ton-core, а позже проверить ее с помощьюcheck_signature
илиcheck_data_signature
изstdlib.fc
в FunC.Вот приблизительный фрагмент кода, который вам следует просмотреть:
sign(yourCell.hash(), keypair.secretKey); ## And in the FunC contract, check like this: check_signature(cell_hash(your_cell), signature, public_key)
Для получения более подробной информации вы можете обратиться к документации TON по проверке подписей.
С другой стороны, на языке такта, у нас также есть такая же функция на стороне смарт-контракта, как эта:
external(msg: ExtMessage) { let hash: Int = beginCell().storeUint(msg.seqno, 32).storeUint(msg.valid_until, 32).storeRef(msg.message_parameters.toCell()).endCell().hash(); require(checkSignature(hash, msg.signature, self.publicKey), "Invalid Signature"); // 😃😃😃 We checek the hash here require(msg.seqno == self.seqno, "Invalid Seqno"); require(now() <= msg.valid_until, "Invalid Time"); acceptMessage(); self.seqno = self.seqno + 1; send(msg.message_parameters); }