The certificate following the certificate format naming convention. More...
#include <ndn-cxx/security/certificate.hpp>
Public Member Functions | |
Certificate () | |
Certificate (Data &&data) | |
Construct certificate from a data object. More... | |
Certificate (const Data &data) | |
Construct certificate from a data object. More... | |
Certificate (const Block &block) | |
Construct certificate from a wire encoding. More... | |
InputBuffers | extractSignedRanges () const |
Extract ranges of Data covered by the signature. More... | |
uint64_t | getCongestionMark () const |
get the value of the CongestionMark tag More... | |
const Block & | getContent () const noexcept |
Get the Content element. More... | |
uint32_t | getContentType () const |
Block | getExtension (uint32_t type) const |
Get extension with TLV type . More... | |
const optional< name::Component > & | getFinalBlock () const |
time::milliseconds | getFreshnessPeriod () const |
const Name & | getFullName () const |
Get full name including implicit digest. More... | |
Name | getIdentity () const |
Get identity name. More... | |
name::Component | getIssuerId () const |
Get issuer ID. More... | |
name::Component | getKeyId () const |
Get key ID. More... | |
optional< KeyLocator > | getKeyLocator () const noexcept |
Get KeyLocator. More... | |
Name | getKeyName () const |
Get key name. More... | |
const MetaInfo & | getMetaInfo () const noexcept |
Get MetaInfo. More... | |
const Name & | getName () const noexcept |
Get name. More... | |
Buffer | getPublicKey () const |
Get public key bits (in PKCS#8 format) More... | |
Signature | getSignature () const |
Get Signature. More... | |
const SignatureInfo & | getSignatureInfo () const noexcept |
Get SignatureInfo. More... | |
int32_t | getSignatureType () const noexcept |
Get SignatureType. More... | |
const Block & | getSignatureValue () const noexcept |
Get SignatureValue. More... | |
template<typename T > | |
shared_ptr< T > | getTag () const |
get a tag item More... | |
ValidityPeriod | getValidityPeriod () const |
Get validity period of the certificate. More... | |
bool | hasContent () const noexcept |
Return whether this Data has a Content element. More... | |
bool | hasWire () const noexcept |
Check if this instance has cached wire encoding. More... | |
bool | isValid (const time::system_clock::TimePoint &ts=time::system_clock::now()) const |
Check if the certificate is valid at ts . More... | |
template<typename T > | |
void | removeTag () const |
remove tag item More... | |
void | setCongestionMark (uint64_t mark) |
set the CongestionMark tag to the specified value More... | |
Data & | setContent (const Block &block) |
Set Content from a Block. More... | |
Data & | setContent (const uint8_t *value, size_t length) |
Set Content by copying from a raw buffer. More... | |
Data & | setContent (ConstBufferPtr value) |
Set Content from a shared buffer. More... | |
Data & | setContentType (uint32_t type) |
Data & | setFinalBlock (optional< name::Component > finalBlockId) |
Data & | setFreshnessPeriod (time::milliseconds freshnessPeriod) |
Data & | setMetaInfo (const MetaInfo &metaInfo) |
Set MetaInfo. More... | |
Data & | setName (const Name &name) |
Set name. More... | |
Data & | setSignature (const Signature &signature) |
Set Signature. More... | |
Data & | setSignatureInfo (const SignatureInfo &info) |
Set SignatureInfo. More... | |
Data & | setSignatureValue (ConstBufferPtr value) |
Set SignatureValue. More... | |
template<typename T > | |
void | setTag (shared_ptr< T > tag) const |
set a tag item More... | |
Data & | unsetContent () |
Remove the Content element. More... | |
void | wireDecode (const Block &wire) |
Decode from wire . More... | |
template<encoding::Tag TAG> | |
size_t | wireEncode (EncodingImpl< TAG > &encoder, bool wantUnsignedPortionOnly=false) const |
Prepend wire encoding to encoder . More... | |
const Block & | wireEncode (EncodingBuffer &encoder, const Block &signatureValue) const |
Finalize Data packet encoding with the specified SignatureValue. More... | |
const Block & | wireEncode () const |
Encode into a Block. More... | |
Static Public Member Functions | |
static bool | isValidName (const Name &certName) |
Check if the specified name follows the naming convention for the certificate. More... | |
Static Public Attributes | |
static const ssize_t | ISSUER_ID_OFFSET = -2 |
static const name::Component | KEY_COMPONENT |
static const ssize_t | KEY_COMPONENT_OFFSET = -4 |
static const ssize_t | KEY_ID_OFFSET = -3 |
static const size_t | MIN_CERT_NAME_LENGTH = 4 |
static const size_t | MIN_KEY_NAME_LENGTH = 2 |
static const ssize_t | VERSION_OFFSET = -1 |
Protected Member Functions | |
void | resetWire () |
Clear wire encoding and cached FullName. More... | |
The certificate following the certificate format naming convention.
Overview of NDN certificate format:
CertificateV2 ::= DATA-TLV TLV-LENGTH Name (= /<NameSpace>/KEY/[KeyId]/[IssuerId]/[Version]) MetaInfo (.ContentType = KEY) Content (= X509PublicKeyContent) SignatureInfo (= CertificateV2SignatureInfo) SignatureValue X509PublicKeyContent ::= CONTENT-TLV TLV-LENGTH BYTE+ (= public key bits in PKCS#8 format) CertificateV2SignatureInfo ::= SIGNATURE-INFO-TYPE TLV-LENGTH SignatureType KeyLocator ValidityPeriod ... optional critical or non-critical extension blocks ...
An example of NDN certificate name:
/edu/ucla/cs/yingdi/KEY/%03%CD...%F1/%9F%D3...%B7/%FD%d2...%8E \_________________/ \___________/ \___________/\___________/
Certificate Namespace Key Id Issuer Id Version (Identity) __________________________________/ Key Name
Notes:
Key Id
is opaque name component to identify an instance of the public key for the certificate namespace. The value of Key ID
is controlled by the namespace owner. The library includes helpers for generation of key IDs using 8-byte random number, SHA-256 digest of the public key, timestamp, and the specified numerical identifiers.Issuer Id
is opaque name component to identify issuer of the certificate. The value is controlled by the issuer. The library includes helpers to set issuer ID to a 8-byte random number, SHA-256 digest of the issuer's public key, and the specified numerical identifiers.Key Name
is a logical name of the key used for management pursposes. Key Name includes the certificate namespace, keyword KEY
, and KeyId
components.Definition at line 81 of file certificate.hpp.
ndn::security::v2::Certificate::Certificate | ( | ) |
Definition at line 48 of file certificate.cpp.
|
explicit |
Construct certificate from a data object.
tlv::Error | if data does not follow certificate format |
Definition at line 53 of file certificate.cpp.
|
explicit |
Construct certificate from a data object.
tlv::Error | if data does not follow certificate format |
Definition at line 70 of file certificate.cpp.
|
explicit |
Construct certificate from a wire encoding.
tlv::Error | if wire encoding is invalid or does not follow certificate format |
Definition at line 75 of file certificate.cpp.
|
inherited |
Extract ranges of Data covered by the signature.
Error | Data cannot be encoded or is missing ranges necessary for signing |
|
inherited |
get the value of the CongestionMark tag
Definition at line 28 of file packet-base.cpp.
|
inlinenoexceptinherited |
Get the Content element.
If the element is not present (hasContent() == false), an invalid Block will be returned.
The value of the returned Content Block (if valid) can be accessed through Block::value() / Block::value_size() or Block::value_begin() / Block::value_end().
|
inlineinherited |
Block ndn::security::v2::Certificate::getExtension | ( | uint32_t | type | ) | const |
Get extension with TLV type
.
Error | The specified block type does not exist |
Definition at line 125 of file certificate.cpp.
|
inlineinherited |
|
inlineinherited |
|
inherited |
Get full name including implicit digest.
Error | Data has no wire encoding |
Name ndn::security::v2::Certificate::getIdentity | ( | ) | const |
Get identity name.
Definition at line 87 of file certificate.cpp.
name::Component ndn::security::v2::Certificate::getIssuerId | ( | ) | const |
Get issuer ID.
Definition at line 99 of file certificate.cpp.
name::Component ndn::security::v2::Certificate::getKeyId | ( | ) | const |
Get key ID.
Definition at line 93 of file certificate.cpp.
|
inlinenoexceptinherited |
Get KeyLocator.
Name ndn::security::v2::Certificate::getKeyName | ( | ) | const |
Get key name.
Definition at line 81 of file certificate.cpp.
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
Buffer ndn::security::v2::Certificate::getPublicKey | ( | ) | const |
Get public key bits (in PKCS#8 format)
Error | If content is empty |
Definition at line 105 of file certificate.cpp.
|
inherited |
Get Signature.
|
inlinenoexceptinherited |
Get SignatureInfo.
|
inlinenoexceptinherited |
Get SignatureType.
|
inlinenoexceptinherited |
|
inherited |
get a tag item
T | type of the tag, which must be a subclass of ndn::Tag |
nullptr | if no Tag of type T is stored |
Definition at line 66 of file tag-host.hpp.
ValidityPeriod ndn::security::v2::Certificate::getValidityPeriod | ( | ) | const |
Get validity period of the certificate.
Definition at line 113 of file certificate.cpp.
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
bool ndn::security::v2::Certificate::isValid | ( | const time::system_clock::TimePoint & | ts = time::system_clock::now() | ) | const |
Check if the certificate is valid at ts
.
Definition at line 119 of file certificate.cpp.
|
static |
Check if the specified name follows the naming convention for the certificate.
Definition at line 135 of file certificate.cpp.
|
inherited |
remove tag item
Definition at line 93 of file tag-host.hpp.
|
protectedinherited |
|
inherited |
set the CongestionMark tag to the specified value
Definition at line 41 of file packet-base.cpp.
Set Content from a Block.
block | TLV block to be used as Content; must be valid |
If the block's TLV-TYPE is tlv::Content, it will be used directly as this Data's Content element. Otherwise, the block will be nested into a Content element.
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
Set Signature.
|
inherited |
Set SignatureInfo.
This is a low-level function that should not normally be called directly by applications. Instead, provide a SignatureInfo to the SigningInfo object passed to KeyChain::sign().
|
inherited |
Set SignatureValue.
value | buffer containing the TLV-VALUE of the SignatureValue; must not be nullptr |
This is a low-level function that should not normally be called directly by applications. Instead, use KeyChain::sign() to sign the packet.
|
inherited |
set a tag item
T | type of the tag, which must be a subclass of ndn::Tag |
Definition at line 79 of file tag-host.hpp.
|
inherited |
Remove the Content element.
|
inherited |
|
inherited |
Prepend wire encoding to encoder
.
encoder | EncodingEstimator or EncodingBuffer instance. |
wantUnsignedPortionOnly | If true, prepend only Name, MetaInfo, Content, and SignatureInfo to encoder , but omit SignatureValue and the outermost TLV Type and Length of the Data element. This is intended to be used with wireEncode(EncodingBuffer&, const Block&) const. |
Error | Signature is not present and wantUnsignedPortionOnly is false. |
|
inherited |
Finalize Data packet encoding with the specified SignatureValue.
encoder | EncodingBuffer containing Name, MetaInfo, Content, and SignatureInfo, but without SignatureValue and the outermost Type-Length of the Data element. |
signatureValue | SignatureValue element. |
This method is intended to be used in concert with wireEncode(encoder, true)
, e.g.:
|
inherited |
|
static |
Definition at line 167 of file certificate.hpp.
|
static |
Definition at line 172 of file certificate.hpp.
|
static |
Definition at line 168 of file certificate.hpp.
|
static |
Definition at line 169 of file certificate.hpp.
|
static |
Definition at line 170 of file certificate.hpp.
|
static |
Definition at line 171 of file certificate.hpp.
|
static |
Definition at line 166 of file certificate.hpp.