Ключи проверки электронной подписи Арендодателя

Документы, оформляемые в информационной системе ООО «ТРАСТ ПАРК», подписываются электронной подписью Арендодателя по алгоритму Ed25519. Подпись создаётся автоматически в той же операции, что и подпись Арендатора.

Ниже — все ключи, которыми когда-либо подписывались документы. Каждый документ проверяется тем ключом, идентификатор которого указан в отметке о подписи. Окончание действия ключа не лишает силы документы, подписанные, пока он действовал. Принадлежность ключа определяется по отпечатку SHA-256, где бы ключ ни был опубликован. Тот же реестр для программ: signing-keys.json.

Ключ d9a95c95f56d1962 — действующий

Алгоритм: ed25519
Отпечаток SHA-256: d9a95c95f56d1962d60e3c544525d5f3bc73d4c085fbb7cf4878f57d801c5f3e
Действует с 23.10.2026 20:13:28 МСК (UTC+03:00)

rcARjTlNtrsRqiEQrx2MI3ebGEON+wTmYyO0nzsilHE=

Как проверить подпись

Проверка выполняется по пакету доказательств, без обращения к Арендодателю. В пакете и во вложениях PDF подписанного документа лежат два файла: canonical.txt — текст документа, и manifest.json — манифест подписания, над которым стоит подпись Арендодателя. Значение подписи целиком — в файле signatures.json пакета доказательств и в протоколе подписания; в отметке на последней странице документа оно напечатано в сокращённом виде.

  1. Посчитайте SHA-256 файла canonical.txt и сравните его со значением text_sha256 в manifest.json.
  2. Проверьте подпись над файлом manifest.json (над его байтами, без изменений) открытым ключом с идентификатором key_id из манифеста и из отметки о подписи.
  3. Сверьте отпечаток SHA-256 этого ключа с отпечатком в отметке о подписи и в реестре на этой странице.

Подойдёт любая программа, поддерживающая Ed25519, например:

python3 - <<'EOF'
import base64, hashlib, json
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey
manifest = open("manifest.json", "rb").read()
text = open("canonical.txt", "rb").read()
assert hashlib.sha256(text).hexdigest() == json.loads(manifest)["text_sha256"]
pub = base64.b64decode(PUBLIC_KEY)      # открытый ключ с этой страницы
print("отпечаток:", hashlib.sha256(pub).hexdigest())
Ed25519PublicKey.from_public_bytes(pub).verify(base64.b64decode(SIGNATURE), manifest)
print("подпись верна")                  # при неверной подписи будет исключение
EOF

Документы, подписанные раньше

В документах, подписанных до перехода на манифест, файла manifest.json нет: подпись Арендодателя стоит над самим текстом документа. Проверка та же, но вместо манифеста подписи передаётся текст: verify(base64.b64decode(SIGNATURE), text). Неизменность текста дополнительно подтверждается значением SHA-256 в отметке о подписании.

ООО «ТРАСТ ПАРК», ИНН 7805823708, ОГРН 1257800054610, 198096, г. Санкт-Петербург, ул. Зайцева, д. 9, лит. А, кв. 6. Контакт по вопросам персональных данных: tech@trust-park.ru.