|
libcdoc 0.5.0
|
A descriptor of encryption method and key to be used in container. More...
#include <Recipient.h>
Public Types | |
| enum | Type : uint8_t { NONE , SYMMETRIC_KEY , PUBLIC_KEY } |
| The recipient type. More... | |
Public Member Functions | |
| 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 | |
| void | clear () |
| Clear all values and set type to NONE. | |
| 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 keys. | |
| 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 |
Static Public Member Functions | |
| static Recipient | makeSymmetric (std::string label, int32_t kdf_iter) |
| Create a new symmetric key based Recipient. | |
| static Recipient | makePublicKey (std::string label, std::vector< uint8_t > public_key, PKType pk_type) |
| Create a new public key based Recipient. | |
| static Recipient | makePublicKey (const Lock &lock) |
| Create a new public key based Recipient. | |
| static Recipient | makeCertificate (std::string label, std::vector< uint8_t > cert) |
| Create a new certificate based Recipient. | |
| static Recipient | makeServer (std::string label, std::vector< uint8_t > public_key, PKType pk_type, std::string server_id) |
| Create a new capsule server based Recipient If the label is empty, a machine-readable label text (public key version) is automatically generated according to CDoc2 specification. | |
| static Recipient | makeServer (std::string label, std::vector< uint8_t > cert, std::string server_id) |
| Create a new capsule server based Recipient If the label is empty, a machine-readable label text (either eID or certificate version) is automatically generated according to CDoc2 specification. | |
| static Recipient | makeServer (const Lock &lock, std::string server_id) |
| Create a new capsule server based Recipient. | |
Public Attributes | |
| Type | type = Type::NONE |
| The recipient type. | |
| PKType | pk_type = PKType::ECC |
| The public key type. | |
| int32_t | kdf_iter = 0 |
| The number of iterations for PBKDF. Value 0 means directly provided symmetric key. | |
| std::string | label |
| The recipient's label (if empty the lock label will be autogenerated). | |
| std::vector< uint8_t > | rcpt_key |
| Recipient's public key (for all PKI types). | |
| std::vector< uint8_t > | cert |
| The recipient's certificate (if present). | |
| std::string | server_id |
| The keyserver or share server list id (if present). | |
| uint64_t | expiry_ts = 0 |
| The requested capsule expiry timestamp (0 - use server default). | |
Protected Member Functions | |
| Recipient (Type _type) | |
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.
| enum libcdoc::Recipient::Type : uint8_t |
|
default |
Referenced by isTheSameRecipient(), makeCertificate(), makePublicKey(), makePublicKey(), makeServer(), makeServer(), makeServer(), makeSymmetric(), and operator==().
|
inline |
| 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
| extra | additional parameter values to use |
|
inline |
check whether Recipient is based on certificate
References cert, PUBLIC_KEY, and type.
|
inline |
|
inline |
check whether Recipient is keyserver
References PUBLIC_KEY, server_id, and type.
|
inline |
check whether Recipient is based on public key
References PUBLIC_KEY, and type.
|
inline |
check whether Recipient is based on symmetric key
References SYMMETRIC_KEY, and type.
| 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.
| other | another Recipient |
References Recipient().
| 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 keys.
| public_key | a public key to test |
|
static |
Create a new certificate based Recipient.
| label | the label text |
| cert | the certificate value (der-encoded) |
References cert, label, and Recipient().
Create a new public key based Recipient.
| lock | Lock to derive parameters from |
References Recipient().
|
static |
Create a new public key based Recipient.
| label | the label text |
| public_key | the public key value |
| pk_type | the algorithm type (either ECC or RSA) |
References label, pk_type, and Recipient().
|
static |
Create a new capsule server based Recipient If the label is empty, a machine-readable label text (either eID or certificate version) is automatically generated according to CDoc2 specification.
| label | the label text |
| cert | the recipient's certificate (der-encoded) |
| server_id | the keyserver id |
References cert, label, Recipient(), and server_id.
|
static |
Create a new capsule server based Recipient If the label is empty, a machine-readable label text (public key version) is automatically generated according to CDoc2 specification.
| label | the label text |
| public_key | the public key value |
| pk_type | the algorithm type (either ECC or RSA) |
| server_id | the keyserver id |
References label, pk_type, Recipient(), and server_id.
|
static |
Create a new symmetric key based Recipient.
| label | the label text |
| kdf_iter | the number of PBKDF iterations (0 if full key is provided) |
References kdf_iter, label, and Recipient().
|
default |
References Recipient().
|
inline |
Set a property for automatic label generation.
| key | the property name |
| value | the property value |
| bool libcdoc::Recipient::validate | ( | ) | const |
Validate recipient record.
| std::vector<uint8_t> libcdoc::Recipient::cert |
The recipient's certificate (if present).
Referenced by clear(), isCertificate(), makeCertificate(), and makeServer().
| uint64_t libcdoc::Recipient::expiry_ts = 0 |
The requested capsule expiry timestamp (0 - use server default).
| int32_t libcdoc::Recipient::kdf_iter = 0 |
The number of iterations for PBKDF. Value 0 means directly provided symmetric key.
Referenced by clear(), and makeSymmetric().
| std::string libcdoc::Recipient::label |
The recipient's label (if empty the lock label will be autogenerated).
Referenced by clear(), makeCertificate(), makePublicKey(), makeServer(), makeServer(), makeServer(), and makeSymmetric().
| PKType libcdoc::Recipient::pk_type = PKType::ECC |
The public key type.
Referenced by clear(), makePublicKey(), and makeServer().
| std::vector<uint8_t> libcdoc::Recipient::rcpt_key |
| std::string libcdoc::Recipient::server_id |
The keyserver or share server list id (if present).
Referenced by isKeyServer(), makeServer(), makeServer(), and makeServer().
| Type libcdoc::Recipient::type = Type::NONE |
The recipient type.
Referenced by clear(), isCertificate(), isEmpty(), isKeyServer(), isPKI(), isSymmetric(), and Recipient().