Установка и использование платформы

REST API: подписание и валидация сообщений в блокчейне

https://img.shields.io/badge/auth-required-orange.svg

Для подписания и валидации сообщений предусмотрены следующие методы группы addresses:

POST /addresses/sign/{address}

Метод подписывает строку, переданную в поле message, приватным ключом адресата {address}, а затем сериализует ее в формат base58.

Важно

Метод addresses/sign недоступен при использовании PKI, то есть когда в конфигурационном файле ноды параметру node.crypto.pki.mode присвоено значение ON. В тестовом режиме PKI (node.crypto.pki.mode = TEST) или при отключенном PKI (node.crypto.pki.mode = OFF) метод можно использовать.

В ответе метода возвращается сериализованная строка, публичный ключ и подпись адресата.

Примеры запроса и ответа:

POST /addresses/sign/{address}:

Запрос:

{
 "message": "mytext"
}

Ответ:

{
  "message": "wWshKhJj",
  "publicKey": "C1ADP1tNGuSLTiQrfNRPhgXx59nCrwrZFRV4AHpfKBpZ",
  "signature": "62PFG855ThsEHUZ4N8VE8kMyHCK9GWnvtTZ3hq6JHYv12BhP1eRjegA6nSa3DAoTTMammhamadvizDUYZAZtKY9S"
}

POST /addresses/verify/{address}

Проверка подписи сообщения, выполненной адресатом {address}.

Примеры запроса и ответа:

POST /addresses/verify/{address}:

Запрос:

{
  "message": "wWshKhJj",
  "publickey": "C1ADP1tNGuSLTiQrfNRPhgXx59nCrwrZFRV4AHpfKBpZ",
  "signature": "5kwwE9sDZzssoNaoBSJnb8RLqfYGt1NDGbTWWXUeX8b9amRRJN3hr5fhs9vHBq6VES5ng4hqbCUoDEsoQNauRRts"
}

Ответ:

{
  "valid": true
}

POST /addresses/signText/{address}

Метод подписывает строку, переданную в поле message, приватным ключом адресата {address}. В отличие от метода POST /addresses/sign/{address}, строка передается в исходном формате.

Важно

Метод addresses/signText недоступен при использовании PKI, то есть когда в конфигурационном файле ноды параметру node.crypto.pki.mode присвоено значение ON. В тестовом режиме PKI (node.crypto.pki.mode = TEST) или при отключенном PKI (node.crypto.pki.mode = OFF) метод можно использовать.

Примеры запроса и ответа:

POST /addresses/signText/{address}:

Запрос:

{
  "message": "mytext"
}

Ответ:

{
  "message": "mytext",
  "publicKey": "C1ADP1tNGuSLTiQrfNRPhgXx59nCrwrZFRV4AHpfKBpZ",
  "signature": "5kVZfWfFmoYn38cJfNhkdct5WCyksMgQ7kjwHK7Zjnrzs9QYRWo6HuJoGc8WRMozdYcAVJvojJnPpArqPvu2uc3u"
}

POST /addresses/verifyText/{address}

Проверка подписи сообщения, выполненной адресатом {address} посредством метода POST /addresses/signText/{address}.

Примеры запроса и ответа:

POST /addresses/verifyText/{address}:

Запрос:

{
  "message": "mytext",
  "publicKey": "C1ADP1tNGuSLTiQrfNRPhgXx59nCrwrZFRV4AHpfKBpZ",
  "signature": "5kVZfWfFmoYn38cJfNhkdct5WCyksMgQ7kjwHK7Zjnrzs9QYRWo6HuJoGc8WRMozdYcAVJvojJnPpArqPvu2uc3u"
}

Ответ:

{
  "valid": true
}

Поля message, publicKey, signature в запросе являются обязательными. Если значение в одном из полей невалидно, метод возвращает ошибку с указанием на это поле, например:

{'error': 108, 'message': 'invalid public key: I82TisHAE2vuEQuNQkGSdLau'}
Смотрите также