---
# System prepended metadata

title: Keyless.one Хендлер

---

# Keyless.one Хендлер
 
Инструмент (далее «сайнер») создания криптографической подписи к результату криптографических функций.
 
Инструмент является сопутствующим и работает как дополнение к основному функционалу независимого программного обеспечения, например:
1) Веб кошелек криптовалюты с предоставлением подписи через сайнер
2) Биржа с подписанием ордеров сайнером
3) Сервис документооборота с авторизацией действий криптографической подписью
 
ПО Сайнера можно разделить на четыре составляющие:
1)    Service Worker устанавливаемый в браузер для взаимодействия со сторонним ПО через протокол Web Payments API и остальными составляющими через WebRTC\HTTP.
2)    ПО хранения секрета (vault)
3)    Вспомогательные инструменты
4)    Конечные потребители функционала (кошельки, биржи, сервисы и т.д.)

```sequence
Client->Service Worker: Payment Request
Service Worker->Service Worker: Create one time \naccess token
Service Worker->Confirmation: Send confirmation \nrequest
Confirmation->Confirmation: Validate hash \nfunction
Confirmation->Confirmation: Validate data \nformat \n(well-formed payload)
Confirmation->Confirmation: Show human-readable \nsigning data and \nwaiting for \nconfirmation
Confirmation->Service Worker: Send signature request\n(with access token)
Service Worker->Service Worker: Validate access token
Service Worker->Service Worker: Find available \nprivate keys
Service Worker->Wallet UI: Send list of public keys
Wallet UI->Wallet UI: Create \nprivate \nkey
Wallet UI->Service Worker: Send new private key or selected public key
Service Worker->Service Worker: Store private key 
Service Worker->Service Worker: Sign hash with \nselected key
Service Worker->Client: Response with signature
```

<!-- Client: отправляет запрос на подпись и ожидает получения подписи
Service Worker: хранит секреты (изолировано от внешного мира, а как?)
Confirmation: набор небольших веб-приложений предназначенных для первичной верификации подписываемых данных и последующего получения пользовательского разрешения на подпись
Signer: графический интерфейс для получения пользовательского выбора ключа подписи -->
 
## Service worker
От конечных потребителей функционала, ожидает два типа сообщений:
1)  `canmakepayment` – для проверки наличия возможности создания подписи с определенными настройками
2)	`paymentrequest` – запрос на создание подписи
 
### Payment Request
Содержит информацию:
1)    Необходимая криптографическая функция, например, sha256, sha3, keccak256 и другие
2)    Ожидаемая криптографическая кривая (secp256k1, ed25519 и тд)
3)    Оригинальные данные и их тип (если известный)
4)    Результат хеш-функции
 
## Vault
Программное обеспечение, установленное на мобильный телефон или настольный компьютер для надежного (изолированного) хранения ключей. Не имеет собственного интерфейса и взаимодействует с Service Worker по защищенному и шифрованному каналу с использованием секретного токена известного только хранилищу и сервис воркера.

В минимальной комплекции возможно хранение данных в хранилище браузера с шифрованием пинкодом.
 
## Confirmation UI
Базовая проверка для любого запроса – проверка соответствия, полученного (с запросом) результата хеш-функции и результата выполнения хеш-функции в Service Worker'е.
 
Но для обеспечения положительного пользовательского опыта без ущерба безопасности, vault.works предоставляет ряд вспомогательных интерфейсов для анализа и проверки подписываемых данных (в ручном режиме).
 
1)    Ethereum Send Ether UI (проверка и инспекция транзакции)
2)    Ethereum smart contract call (проверка вызываемого метода и передаваемых аргументов)
3)    Ethereum signed message (читаемый текст подписываемого сообщения)
4)    EOS generic smart-contract call (проверка вызываемого метода и передаваемых аргументов)
5)    EOS change account access (проверка применяемых изменений в политике безопасности аккаунта)
6)    EOS stake (проверка суммы и назначения создаваемого стейка)
7)    EOS ram buy\sell (проверка объема продаваемой/покупаемой памяти)
8)    TRON send money (проверка и инспекция транзакции)
9)    TRON smart contract call (проверка вызываемого метода и передаваемых аргументов)
10) TRON signed message (читаемый текст подписываемого сообщения)
11) Bitcoin lightning payment request (проверка и инспекция создания запроса на получения средств)
12) Bitcoin lightning send money (проверка запроса и суммы переводимых средств)
 
 Для данных, не попадающих под предоставленные анализаторы нужно использовать универсальные для каждой хеш-функции анализаторы. Универсальный анализатор позволяет просмотреть оригинальные данные в разных кодировках: binary, hex, base64, ascii, utf8.
 
## Wallet UI
Вспомогательный интерфейс для выбора доступных для Service Worker’а ключей. Выбор можно оставить на пользователя или явно указать в запросе. Если явно указанный в запросе ключ недоступен – запрос будет отклонен с ошибкой при первичной проверке. 