|
UDIF: Universal Digital Identification Framework 1.0.0.0a (A1)
A quantum-secure cryptographic identification
|
UDIF capability token management. More...
#include "udif.h"Go to the source code of this file.
Data Structures | |
| struct | udif_capability |
| Capability token. More... | |
Macros | |
| #define | UDIF_CAPABILITY_POLICY_SIZE 4U |
| #define | UDIF_CAPABILITY_ENCODED_SIZE |
| The capability structure encoded size. | |
| #define | UDIF_CAPABILITY_SIGNED_SIZE |
| The capability structure signed size. | |
Typedefs | |
| typedef UDIF_EXPORT_API struct udif_capability | udif_capability |
| typedef UDIF_EXPORT_API enum udif_capability_id | udif_capability_id |
| typedef UDIF_EXPORT_API enum udif_capability_verbs | udif_capability_verbs |
| typedef UDIF_EXPORT_API enum udif_capability_scopes | udif_capability_scopes |
Functions | |
| UDIF_EXPORT_API bool | udif_capability_allows_scope (const udif_capability *capability, uint32_t scope) |
| Check if capability allows a scope. | |
| UDIF_EXPORT_API bool | udif_capability_allows_verb (const udif_capability *capability, uint32_t verb) |
| Check if capability allows a verb. | |
| UDIF_EXPORT_API void | udif_capability_clear (udif_capability *capability) |
| Clear a capability. | |
| UDIF_EXPORT_API udif_errors | udif_capability_create (udif_capability *capability, uint32_t verbsbitmap, uint32_t scopebitmap, const uint8_t *issuedto, const uint8_t *issuedby, uint64_t validto, uint32_t policy, const uint8_t *issuerkey) |
| Create a capability token. | |
| UDIF_EXPORT_API udif_errors | udif_capability_compute_digest (uint8_t *digest, const udif_capability *capability) |
| Compute object digest. | |
| UDIF_EXPORT_API udif_errors | udif_capability_deserialize (udif_capability *capability, const uint8_t *input, size_t inplen) |
| Deserialize a capability. | |
| UDIF_EXPORT_API bool | udif_capability_grants_permission (const udif_capability *capability, uint32_t verb, uint32_t scope, uint64_t ctime) |
| Check if capability grants permission. | |
| UDIF_EXPORT_API bool | udif_capability_is_expired (const udif_capability *capability, uint64_t ctime) |
| Check if capability is expired. | |
| UDIF_EXPORT_API udif_errors | udif_capability_serialize (uint8_t *output, size_t outlen, const udif_capability *capability) |
| Serialize a capability. | |
| UDIF_EXPORT_API bool | udif_capability_verify (const udif_capability *capability, const uint8_t *issuerkey) |
| Verify a capability token. | |
UDIF capability token management.
This module implements capability-based access control for UDIF. Capabilities are unforgeable tokens that grant specific permissions to entities. They use KMAC-256 for authentication.
Capabilities define:
| #define UDIF_CAPABILITY_ENCODED_SIZE |
The capability structure encoded size.
| #define UDIF_CAPABILITY_SIGNED_SIZE |
The capability structure signed size.
| enum udif_capability_id |
Canonical capability identifiers (bit positions map to the mask).
NO_DOCUMENT
Capability permission verbs (bit positions)
| UDIF_EXPORT_API bool udif_capability_allows_scope | ( | const udif_capability * | capability, |
| uint32_t | scope ) |
Check if capability allows a scope.
Tests if a specific operation scope is granted.
| capability | [const] The capability |
| scope | The scope to check |
| UDIF_EXPORT_API bool udif_capability_allows_verb | ( | const udif_capability * | capability, |
| uint32_t | verb ) |
Check if capability allows a verb.
Tests if a specific operation verb is granted.
| capability | [const] The capability |
| verb | The verb to check (bit position) |
| UDIF_EXPORT_API void udif_capability_clear | ( | udif_capability * | capability | ) |
Clear a capability.
Zeros out a capability structure.
| capability | The capability to clear |
| UDIF_EXPORT_API udif_errors udif_capability_compute_digest | ( | uint8_t * | digest, |
| const udif_capability * | capability ) |
Compute object digest.
Computes the canonical digest for an object, does not include the signature and hash.
| digest | The output digest (32 bytes) |
| capability | The output capability structure |
| UDIF_EXPORT_API udif_errors udif_capability_create | ( | udif_capability * | capability, |
| uint32_t | verbsbitmap, | ||
| uint32_t | scopebitmap, | ||
| const uint8_t * | issuedto, | ||
| const uint8_t * | issuedby, | ||
| uint64_t | validto, | ||
| uint32_t | policy, | ||
| const uint8_t * | issuerkey ) |
Create a capability token.
Creates a new capability token authenticated with KMAC-256.
| capability | The output capability structure |
| verbsbitmap | The allowed operation verbs |
| scopebitmap | The allowed operation scopes |
| issuedto | [const] The recipient serial (16 bytes) |
| issuedby | [const] The issuer serial (16 bytes) |
| validto | The expiration time (UTC seconds) |
| policy | The policy version number |
| issuerkey | [const] The issuer's MAC key |
| UDIF_EXPORT_API udif_errors udif_capability_deserialize | ( | udif_capability * | capability, |
| const uint8_t * | input, | ||
| size_t | inplen ) |
Deserialize a capability.
Decodes a capability from canonical TLV format.
| capability | The output capability structure |
| input | [const] The input buffer |
| inplen | The input buffer length |
| UDIF_EXPORT_API bool udif_capability_grants_permission | ( | const udif_capability * | capability, |
| uint32_t | verb, | ||
| uint32_t | scope, | ||
| uint64_t | ctime ) |
Check if capability grants permission.
Comprehensive check: verb, scope, and expiration.
| capability | [const] The capability |
| verb | The required verb |
| scope | The required scope |
| ctime | The current time |
| UDIF_EXPORT_API bool udif_capability_is_expired | ( | const udif_capability * | capability, |
| uint64_t | ctime ) |
Check if capability is expired.
Tests if a capability has expired.
| capability | [const] The capability |
| ctime | The current time (UTC seconds) |
| UDIF_EXPORT_API udif_errors udif_capability_serialize | ( | uint8_t * | output, |
| size_t | outlen, | ||
| const udif_capability * | capability ) |
Serialize a capability.
Encodes a capability to canonical TLV format.
| output | The output buffer |
| outlen | The output buffer LENGTH |
| capability | [const] The capability to serialize |
| UDIF_EXPORT_API bool udif_capability_verify | ( | const udif_capability * | capability, |
| const uint8_t * | issuerkey ) |
Verify a capability token.
Verifies the KMAC authentication tag on a capability.
| capability | [const] The capability to verify |
| issuerkey | [const] The issuer's MAC key |