A descriptor of encryption method and key to be used in container.
More...
#include <Recipient.h>
|
| | Recipient ()=default |
| |
| bool | isEmpty () const |
| | test whether the Recipient structure is initialized
|
| |
| bool | isSymmetric () const |
| | check whether Recipient is based on symmetric key
|
| |
| bool | isPKI () const |
| | check whether Recipient is based on public key
|
| |
| bool | isCertificate () const |
| | check whether Recipient is based on certificate
|
| |
| bool | isKeyServer () const |
| | check whether Recipient is keyserver
|
| |
| bool | isTheSameRecipient (const Recipient &other) const |
| | A convenience method to check whether two recipients are both public key based and have the same keys.
|
| |
| bool | isTheSameRecipient (const std::vector< uint8_t > &public_key) const |
| | A convenience method to check whether a recipient is public key based and has the given key.
|
| |
| std::string | getLabel (std::map< std::string_view, std::string_view > extra) const |
| | Get the label for this recipient.
|
| |
| void | setLabelValue (std::string_view key, std::string_view value) |
| | Set a property for automatic label generation.
|
| |
| bool | validate () const |
| | Validate recipient record.
|
| |
| bool | operator== (const Recipient &other) const =default |
| |
A descriptor of encryption method and key to be used in container.
Recipient determines all the relevant properties to encrypt the FMK for a certain target.
◆ Type
The recipient type.
| Enumerator |
|---|
| NONE | Uninitialized recipient
|
| SYMMETRIC_KEY | Symmetric key (or password)
|
| PUBLIC_KEY | Public key.
|
◆ Recipient() [1/2]
| libcdoc::Recipient::Recipient |
( |
| ) |
|
|
default |
◆ Recipient() [2/2]
| libcdoc::Recipient::Recipient |
( |
Type |
_type | ) |
|
|
inlineprotected |
◆ getLabel()
| std::string libcdoc::Recipient::getLabel |
( |
std::map< std::string_view, std::string_view > |
extra | ) |
const |
Get the label for this recipient.
Either returns user-specified label or generate machine-readable if empty
- Parameters
-
| extra | additional parameter values to use |
- Returns
- a label value
◆ isCertificate()
| bool libcdoc::Recipient::isCertificate |
( |
| ) |
const |
|
inline |
check whether Recipient is based on certificate
- Returns
- true if type is CERTIFICATE
◆ isEmpty()
| bool libcdoc::Recipient::isEmpty |
( |
| ) |
const |
|
inline |
test whether the Recipient structure is initialized
- Returns
- true if not initialized
◆ isKeyServer()
| bool libcdoc::Recipient::isKeyServer |
( |
| ) |
const |
|
inline |
check whether Recipient is keyserver
- Returns
- true if type is SERVER
◆ isPKI()
| bool libcdoc::Recipient::isPKI |
( |
| ) |
const |
|
inline |
check whether Recipient is based on public key
- Returns
- true if type is CERTIFICATE, PUBLIC_KEY or SERVER
◆ isSymmetric()
| bool libcdoc::Recipient::isSymmetric |
( |
| ) |
const |
|
inline |
check whether Recipient is based on symmetric key
- Returns
- true if type is SYMMETRIC_KEY
◆ isTheSameRecipient() [1/2]
| bool libcdoc::Recipient::isTheSameRecipient |
( |
const Recipient & |
other | ) |
const |
A convenience method to check whether two recipients are both public key based and have the same keys.
- Parameters
-
- Returns
- true if the public keys are identical
◆ isTheSameRecipient() [2/2]
| bool libcdoc::Recipient::isTheSameRecipient |
( |
const std::vector< uint8_t > & |
public_key | ) |
const |
A convenience method to check whether a recipient is public key based and has the given key.
- Parameters
-
| public_key | a public key to test |
- Returns
- true if the public keys are identical
◆ makeCertificate()
| static Recipient libcdoc::Recipient::makeCertificate |
( |
std::string |
label, |
|
|
std::vector< uint8_t > |
cert, |
|
|
std::string |
server_id = {} |
|
) |
| |
|
static |
Create a new certificate based Recipient.
If the label is empty, a machine-readable label will be created according to CDoc2 specification
- Parameters
-
| label | the label text |
| cert | the certificate value (der-encoded) |
| server_id | the keyserver id or empty string for offline capsule |
- Returns
- a new Recipient structure
◆ makePublicKey() [1/2]
| static Recipient libcdoc::Recipient::makePublicKey |
( |
const Lock & |
lock, |
|
|
std::string |
server_id = {} |
|
) |
| |
|
static |
Create a new public key based Recipient.
- Parameters
-
| lock | Lock to derive parameters from |
| server_id | the keyserver id or empty string for offline capsule |
- Returns
- a new Recipient structure
◆ makePublicKey() [2/2]
| static Recipient libcdoc::Recipient::makePublicKey |
( |
std::string |
label, |
|
|
std::vector< uint8_t > |
public_key, |
|
|
std::string |
server_id = {} |
|
) |
| |
|
static |
Create a new public key based Recipient.
If the label is empty, a machine-readable label will be created according to CDoc2 specification
- Parameters
-
| label | the label text |
| public_key | the public key value |
| server_id | the keyserver id or empty string for offline capsule |
- Returns
- a new Recipient structure
◆ makeSymmetric()
| static Recipient libcdoc::Recipient::makeSymmetric |
( |
std::string |
label, |
|
|
int32_t |
kdf_iter |
|
) |
| |
|
static |
Create a new symmetric key based Recipient.
If the label is empty, a machine-readable label will be created according to CDoc2 specification
- Parameters
-
| label | the label text |
| kdf_iter | the number of PBKDF iterations (0 if full key is provided) |
- Returns
- a new Recipient structure
◆ operator==()
| bool libcdoc::Recipient::operator== |
( |
const Recipient & |
other | ) |
const |
|
default |
◆ setLabelValue()
| void libcdoc::Recipient::setLabelValue |
( |
std::string_view |
key, |
|
|
std::string_view |
value |
|
) |
| |
|
inline |
Set a property for automatic label generation.
- Parameters
-
| key | the property name |
| value | the property value |
◆ validate()
| bool libcdoc::Recipient::validate |
( |
| ) |
const |
Validate recipient record.
- Returns
- true if Recipient is valid
◆ cert
| std::vector<uint8_t> libcdoc::Recipient::cert |
The recipient's certificate (if present)
◆ ec_type
◆ expiry_ts
| uint64_t libcdoc::Recipient::expiry_ts = 0 |
The requested capsule expiry timestamp (0 - use server default)
◆ kdf_iter
| int32_t libcdoc::Recipient::kdf_iter = 0 |
The number of iterations for PBKDF. Value 0 means directly provided symmetric key.
◆ label
| std::string libcdoc::Recipient::label |
The recipient's label (if empty the lock label will be autogenerated)
◆ pk_type
◆ rcpt_key
| std::vector<uint8_t> libcdoc::Recipient::rcpt_key |
◆ server_id
| std::string libcdoc::Recipient::server_id |
The keyserver or share server list id (if present)
◆ type
The documentation for this struct was generated from the following file: