Негативные сценарии
Этот файл содержит проверки, в которых сервис должен отказать в выполнении запроса. Они нужны не для успешного прохождения бизнес-сценария, а для проверки защитных правил API.
DID service не должен принимать приватный ключевой материал и ссылки authentication на несуществующие ключи. VC service не должен создавать credential, если issuer DID или subject DID неизвестны. Также проверяем повторное создание VC с тем же id и verify для отсутствующей записи.
Если эти сценарии возвращают ожидаемые ошибки, значит сервис не сохраняет опасные или неполные данные и корректно сообщает клиенту причину отказа.
DID с приватным ключом
DID Swagger:
POST /v1/dids
Тело запроса:
{ "id": "did:example:bad-private-key", "verificationMethod": [ { "id": "did:example:bad-private-key#key-1", "type": "JsonWebKey2020", "controller": "did:example:bad-private-key", "publicKeyJwk": { "kty": "OKP", "crv": "Ed25519", "x": "7aPhnogXhdfMKCyfI6jVewaum4GFYJR8oYDFJeWW4pE", "d": "private-key-value" } } ] }
Ожидаемый результат:
422 Unprocessable Entity DID не создан
DID с ключом-заглушкой вместо настоящего
Сервис декодирует публичный ключ: Ed25519 x должен быть 32 байтами в base64url, точка EC — лежать на кривой, модуль RSA — не короче 2048 бит.
Тело запроса:
{ "id": "did:example:bad-key", "verificationMethod": [ { "id": "did:example:bad-key#key-1", "type": "JsonWebKey2020", "controller": "did:example:bad-key", "publicKeyJwk": { "kty": "OKP", "crv": "Ed25519", "x": "public-key-value" } } ] }
Ожидаемый результат:
422 Unprocessable Entity invalid public JWK: Ed25519 "x" must be 32 bytes
DID authentication ссылается на отсутствующий ключ
Ожидаемый результат:
422 Unprocessable Entity
Тело запроса:
{ "id": "did:example:bad-auth", "verificationMethod": [ { "id": "did:example:bad-auth#key-1", "type": "JsonWebKey2020", "controller": "did:example:bad-auth", "publicKeyJwk": { "kty": "OKP", "crv": "Ed25519", "x": "7aPhnogXhdfMKCyfI6jVewaum4GFYJR8oYDFJeWW4pE" } } ], "authentication": [ "did:example:bad-auth#missing-key" ] }
VC с неизвестным issuer DID
VC Swagger:
POST /v1/credentials
Тело запроса:
{ "id": "urn:uuid:00000000-0000-4000-8000-000000000201", "type": [ "DeviceCredential" ], "issuer": "did:example:missing-issuer", "credentialSubject": { "id": "did:example:vc-subject-001" } }
Ожидаемый результат:
422 Unprocessable Entity credential не создан
VC с неизвестным subject DID
Ожидаемый результат:
422 Unprocessable Entity credential не создан
Тело запроса:
{ "id": "urn:uuid:00000000-0000-4000-8000-000000000202", "type": [ "DeviceCredential" ], "issuer": "did:example:vc-issuer-001", "credentialSubject": { "id": "did:example:missing-subject" } }
VC с повторяющимся id
Повторите успешный POST /v1/credentials с тем же id.
Ожидаемый результат:
409 Conflict вторая credential не создана
Verify для отсутствующей VC
VC Swagger:
POST /v1/credentials/urn%3Auuid%3Amissing/verify
Ожидаемый результат:
404 Not Found
Журнал изменений
Дата | Перечень изменений | Автор |
2026-11-05 | Перенесён из архива DID-VC-итоги-2026-11-03 без изменения содержания. | Дис |