owned this note
owned this note
Published
Linked with GitHub
УКР | [ENG](https://hackmd.io/mW_dr90eRriYJ6OpXj7ASA)
![](https://i.imgur.com/ULmPUgP.jpg)
:arrow_left: [На Головну](/Mj2ZqCVpSq6A6Jzm6ladlw)
# Робота сервісу "Cipher" (Сайфер)
## Що таке "Cipher"?
Це сервіс Оператора, що встановлюється на сервері Партнера та виконує функцію криптоперетворення даних для взаємодії з системою Оператора.
:::success
[Завантажити сервіс "Cipher" (для Linux) >>](https://drive.google.com/file/d/10l2S4dLmcA1hRd6SXsyISyUlLZX9U9pu/view)
:::
## Конфігурація сервісу
Для початку роботи необхідно налаштувати конфігурацію сервісу, що знаходиться у файлі:
cipher/config/config.toml
### Ключі конфігурації
*Загальну інформацію по формуванню запитів та опис ключів див. у розділі ["Загальна інформація по підключенню (API)"](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA).*
| Ключ | Опис | Приклад |
|:-:|-|:-:|
|`Port`|Порт, на якому працюватиме сервіс "Cipher".|`1111`|
|`PartnerToken`|Унікальний ідентифікатор Партнера в системі Оператора (токен Партнера).|`72a8ddb8-9145-4a41-af1a-8c48ecaa4be1`|
|`XpayKey`|Відносний шлях до файлу *публічного ключа* Оператора, яким шифрується пакет даних.|`keys/xpay`|
|`Key`|Відносний шлях до файлу *приватного ключа* Партнера, яким підписується пакет даних.|`keys`|
## Шифрування даних
Шифрування даних проводиться надсиланням повністю сформованого пакета даних, або застосуванням більш спрощеного варіанту - надсиланням даних “Data” для формування пакета з зашифрованими даними.
### 1. Надсилання сформованого пакета даних для шифрування
**URL:** `http://localhost:<порт_конфігурації>/cipher`
Партнер надсилає сервісу "Cipher" повністю сформований пакет даних, у відповідь - сервіс повертає пакет з зашифрованими даними, зашифрованим ключем та підписом.
Надсилання сформованого пакета даних застосовується, наприклад, за наявності у Партнера двох і більше токенів ("PartnerToken"), і необхідно в запиті вказати, який саме бере участь в операції.
Параметри "KeyAES" та "Sign" у структурі даних для шифрування передаються порожніми або відсутні.
:::success
<details>
<summary>Приклад надсилання пакета даних для шифрування</summary>
<br>
~~~md
curl -X POST http://localhost:1111/cipher -d '{"Partner":{"PartnerToken":"72a8ddb8-9145-4a41-af1a-8c48ecaa4be1","OperationType":22222},"Data":{"ID":"380123456789","Sum":17300,"DateTime":"20220624 15:56:38"}}'
~~~
</details>
:::
:::success
<details>
<summary>Приклад відповіді сервісу "Cipher"</summary>
<br>
~~~md
{
"Partner": {
"PartnerToken": "72a8ddb8-9145-4a41-af1a-8c48ecaa4be1",
"OperationType": 22222
},
"Data": "MlztSNrb+mYKy37I3EkqUIUy+fnr03HUiMaFZA+xRPlRQFlSEJDA66AbutTPvNNK",
"KeyAES": "AE0Mk+IID+BHx5uVAnCHDKDZsRhzHVZj+yjej/tT09PyCwc6T5U6e3ou9DEAalkDLvL4KDZiYKW3CTzTx87joO17/Yu9H1gNrhRztUqhrsqGbgZ+Usd5s8z6S72ML4o1qEDFid7VlJqM/Fq95PE0WV2FoStn9PjXCOKYdmRyzYHtqGZ/iQLv+3oR8jQ6ZAI1M/Yc/8F7pwFdavnVxlptMy0UiRjPDeqGgwcYG5+RVPNM7nTM/WarcPgnJEx71WJv50N0hE5n36avolINFZxmjuh2uImvGd1GvoxP1p/F+YkZ4izNJRcc69CY5+pH9jd4nXPMRkEvJyXGziauBElajg==",
"Sign": "E/qTx4R5IutFuQgXD4FMppoT3nB1e8fdVizt1mgHYhM0pD3NFInAOdT550a/DkVgxDkK0qKyInUVUcjBD8VESzflbULljHFaQ+vFaIRdxTmKbWFc4JcSLSNhePxsP8MYSxXo5g5gNozYHG3QGr+JHv+Xc7rcr7izdPtzUVtZXO1VZDdHSfAYC1oJFpFj02kH3uqEZNv3EyWNoI81p5erZwzCsdcjMvRbfAf9s8mtqsi6ZGH2KpSA4YJChTcAEsV5ehOI5kbYQjYh5IuSDVubEUtxBp1aUAeg0wH9mK0915IHw5RuZIYHu1gkjdMkGHbXiJHqZcYgmOvkeQE1fsxl8Q=="
}
~~~
</details>
:::
### 2. Надсилання даних "Data" для шифрування
**URL:** `http://localhost:<порт_конфігурації>/packet/<тип_операції>`
Партнер надсилає сервісу "Cipher" лише рядок даних "Data" для шифрування, у відповідь - сервіс повертає сформований пакет з зашифрованими даними, зашифрованим ключем та підписом. При цьому на URL адресу необхідно передати тип операції, для якої формується пакет даних.
:::success
<details>
<summary>Приклад надсилання даних для шифрування</summary>
<br>
~~~md
curl -X POST http://localhost:1111/packet/22222 -d '{"ID":"380123456789","Sum":17300,"DateTime":"20220624 15:56:38"}'
~~~
</details>
:::
:::success
<details>
<summary>Приклад відповіді сервісу "Cipher"</summary>
<br>
~~~md
{
"Partner": {
"PartnerToken": "72a8ddb8-9145-4a41-af1a-8c48ecaa4be1",
"OperationType": 22222
},
"Data": "MlztSNrb+mYKy37I3EkqUIUy+fnr03HUiMaFZA+xRPlRQFlSEJDA66AbutTPvNNK",
"KeyAES": "AE0Mk+IID+BHx5uVAnCHDKDZsRhzHVZj+yjej/tT09PyCwc6T5U6e3ou9DEAalkDLvL4KDZiYKW3CTzTx87joO17/Yu9H1gNrhRztUqhrsqGbgZ+Usd5s8z6S72ML4o1qEDFid7VlJqM/Fq95PE0WV2FoStn9PjXCOKYdmRyzYHtqGZ/iQLv+3oR8jQ6ZAI1M/Yc/8F7pwFdavnVxlptMy0UiRjPDeqGgwcYG5+RVPNM7nTM/WarcPgnJEx71WJv50N0hE5n36avolINFZxmjuh2uImvGd1GvoxP1p/F+YkZ4izNJRcc69CY5+pH9jd4nXPMRkEvJyXGziauBElajg==",
"Sign": "E/qTx4R5IutFuQgXD4FMppoT3nB1e8fdVizt1mgHYhM0pD3NFInAOdT550a/DkVgxDkK0qKyInUVUcjBD8VESzflbULljHFaQ+vFaIRdxTmKbWFc4JcSLSNhePxsP8MYSxXo5g5gNozYHG3QGr+JHv+Xc7rcr7izdPtzUVtZXO1VZDdHSfAYC1oJFpFj02kH3uqEZNv3EyWNoI81p5erZwzCsdcjMvRbfAf9s8mtqsi6ZGH2KpSA4YJChTcAEsV5ehOI5kbYQjYh5IuSDVubEUtxBp1aUAeg0wH9mK0915IHw5RuZIYHu1gkjdMkGHbXiJHqZcYgmOvkeQE1fsxl8Q=="
}
~~~
</details>
:::
![](https://i.imgur.com/17gAyWb.png)
:arrow_left: [На Головну](/Mj2ZqCVpSq6A6Jzm6ladlw)
:arrow_left: [Загальна інформація по підключенню (API)](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA)
<details>
<summary>Служба підтримки XPAY</summary>
</br>
Телефон: +38 093 891 92 00
Email: info@xpay.com.ua
Telegram: @xpaysupportbot
</details>