• Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
Theme Center
  • Theme Center
  • default

  • reset theme
Collapse

tonpie.io

Подпишись на канал фаундера и разработчика экосистемы tonpie

[Решено] использование `check_signature` и `check_data_signature` для подписи?

Запланировано Прикреплена Закрыта Перенесена TON Overflow на русском
a-funca-signing
2 Сообщения 1 Posters 108 Просмотры
    • Сначала старые
    • Сначала новые
    • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано tonpie
    #1

    Привет, ребята, как я могу подписать ячейку с помощью ton-crypto, или ton-core, или каким-либо другим способом, который позже может быть корректно проверен с помощью check_signature или check_data_signature из stdlib.fc в FunC?


    Этот вопрос был импортирован из чата Telegram: ***Скрыто***

    click to show


    Оригинал вопроса

    1 ответ Последний ответ
    0
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано
    #2

    Решено

    Вы можете подписать ячейку с помощью 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);
        }
    
    • https://docs.tact-lang.org/language/ref/math#checksignature
    1 ответ Последний ответ
    0

  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.