did_status Enum
namespace keychain
→ enum class did_status
Overview
The did_status
enumeration represents the lifecycle status of W3C Decentralized Identifiers (DIDs) within the Keychain system.
Syntax
namespace keychain {
enum class did_status {
ACTIVE, // DID is active and usable
INACTIVE, // DID is temporarily inactive
REVOKED, // DID has been permanently revoked
EXPIRED, // DID has expired
SUSPENDED // DID is suspended pending review
};
}
Members
ACTIVE
Value: did_status::ACTIVE
DID is active and fully operational.
Characteristics: * Can be used for all cryptographic operations * All associated keys are valid * DID document is current and accessible * Default status for newly created DIDs
INACTIVE
Value: did_status::INACTIVE
DID is temporarily inactive but not revoked.
Characteristics: * Cryptographic operations may be restricted * Can be reactivated without creating new DID * Useful for temporary suspensions * Keys remain valid but usage is limited
REVOKED
Value: did_status::REVOKED
DID has been permanently revoked and cannot be used.
Characteristics: * All cryptographic operations are forbidden * Cannot be reactivated * Associated keys are invalidated * Terminal status - irreversible
Usage
#include <keychain/keychain.h>
// Check DID status before operations
keychain::did identity_did = persona.get_did();
auto status = identity_did.get_status();
switch (status) {
case keychain::did_status::ACTIVE:
// Proceed with operation
break;
case keychain::did_status::INACTIVE:
// Warn user and optionally reactivate
std::cout << "DID is inactive" << std::endl;
break;
case keychain::did_status::REVOKED:
throw std::runtime_error("Cannot use revoked DID");
case keychain::did_status::EXPIRED:
std::cout << "DID has expired, renewal required" << std::endl;
break;
case keychain::did_status::SUSPENDED:
std::cout << "DID is suspended" << std::endl;
break;
}
// Status management
void manage_did_lifecycle(keychain::did& did) {
// Check expiration
if (did.is_expired()) {
// Status automatically becomes EXPIRED
assert(did.get_status() == keychain::did_status::EXPIRED);
}
// Administrative actions
if (security_violation_detected()) {
did.suspend(); // Sets status to SUSPENDED
}
// Permanent revocation
if (compromise_confirmed()) {
did.revoke(); // Sets status to REVOKED
}
}
Status Transitions
Valid transitions between DID statuses:
stateDiagram-v2
[*] --> ACTIVE : DID created
ACTIVE --> INACTIVE : Deactivate
ACTIVE --> SUSPENDED : Suspend
ACTIVE --> REVOKED : Revoke
ACTIVE --> EXPIRED : Expires
INACTIVE --> ACTIVE : Reactivate
INACTIVE --> SUSPENDED : Suspend
INACTIVE --> REVOKED : Revoke
SUSPENDED --> ACTIVE : Restore
SUSPENDED --> REVOKED : Revoke
EXPIRED --> ACTIVE : Renew
EXPIRED --> REVOKED : Revoke
REVOKED --> [*] : Terminal
Operations by Status
Operation | ACTIVE | INACTIVE | REVOKED | EXPIRED | SUSPENDED |
---|---|---|---|---|---|
Sign |
✓ |
✗ |
✗ |
✗ |
✗ |
Encrypt |
✓ |
✗ |
✗ |
✗ |
✗ |
Decrypt |
✓ |
Limited |
✗ |
Limited |
✗ |
Verify (existing) |
✓ |
✓ |
✓ |
✓ |
✓ |
Issue Credentials |
✓ |
✗ |
✗ |
✗ |
✗ |
Update DID Document |
✓ |
✗ |
✗ |
✗ |
✗ |
Related Types
-
did - W3C Decentralized Identifier implementation
-
persona_did - Persona-specific DIDs
-
keychain_did - Keychain-specific DIDs
See Also
-
gateway - DID operations
-
{w3c-did-spec}[W3C DID Specification]
-
{did-methods}[DID Method Registry]