Негативные сценарии

Этот файл содержит проверки, в которых сервис должен отказать в выполнении запроса. Они нужны не для успешного прохождения бизнес-сценария, а для проверки защитных правил 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 без изменения содержания.

Дис