Установка и использование платформы
gRPC: реализация методов шифрования¶
gRPC-интерфейс ноды предусматривает возможность зашифровать произвольные данные при помощи алгоритмов шифрования, применяемых в блокчейн-платформе Waves Enterprise, а также дешифровать их. Для этого предусмотрен набор запросов, описанных в файле contract_crypto_service.proto:
EncryptSeparate
– шифрование данных уникальными ключами CEK отдельно для каждого получателя, каждый CEK шифруется (оборачивается) отдельным ключом KEK;EncryptCommon
– шифрование данных единым ключом CEK для всех получателей, каждый ключ CEK шифруется (оборачивается) отдельным ключом KEK для каждого получателя;Decrypt
– дешифровка данных.
Важно
Типы данных полей для запросов и ответов указаны в protobuf-файлах.
Подсказка
Дешифровка данных возможна, если ключ получателя сообщения находится в keystore ноды.
Запросы и ответы шифрования¶
Запросы EncryptSeparate
и EncryptCommon
требуют ввода следующих данных:
sender
– адрес отправителя данных;password
– пароль к зашифрованным данным;encryption_data
– шифруемые данные (в виде массива байт в кодировке base64);recipients_public_keys
– публичные ключи получателей-участников сети;crypto_algo
– используемый алгоритм шифрования. Доступные значения:1
– ГОСТ 28147-89;2
– ГОСТ 34.12-2015;3
– AES.
В ответе на запрос EncryptSeparate
поступают следующие данные для каждого получателя:
encrypted_data
– зашифрованные данные;public_key
– публичный ключ получателя;wrapped_key
– результат шифрования ключа для получателя.
В ответе на запрос EncryptCommon
поступают следующие данные:
encrypted_data
– зашифрованные данные;recipient_to_wrapped_structure
– структура в формате «ключ : значение», содержащая публичные ключи получателей с соответствующими результатами шифрования ключей для каждого из них.
Запрос и ответ дешифровки¶
При запросе Decrypt
вводятся следующие данные:
recipient
– публичный ключ получателя из keystore ноды;password
– пароль к зашифрованным данным;encrypted_data
– зашифрованные данные;wrapped_key
результат шифрования ключа для указанного получателя;sender_public_key
– публичный ключ отправителя данных;crypto_algo
– используемый алгоритм шифрования. Доступные значения:0
– алгоритм неизвестен;1
– ГОСТ 28147-89;2
– ГОСТ 34.12-2015;3
– AES.
В ответ на запрос Decrypt
поступает поле decrypted_data
, содержащая расшифрованные данные в виде массива байт в кодировке base64.