pub struct PkiKeyDef<CA: KeyComponent<Pki>, PK: KeyComponent<Pki>, SK: KeyComponent<Pki>> { /* private fields */ }
Expand description
Key definition for a DTLS key consisting of a private key and a CA-signed certificate.
Optionally, it may also contain a CA certificate whose name will be sent to clients to indicate the key that they should themselves send.
§Note on key construction
For maximum compatibility, you should stick to the with_*
constructors defined for this type.
While in theory you could use an arbitrary combination of key component types for a key
definition, those defined using with_*
match explicit key types provided in libcoap and should
therefore always be supported.
§The CA certificate field
Important: The CA certificate field/parameter is not to be confused with the CA certificate you may set while configuring HTTP servers. The CA certificate will not be sent in full to the peer during connection establishment and does not have to refer to the CA that signed the public certificate. It will only be used to set the CA list sent to the client for client certificate validation.
Therefore, in order for TLS certificate validation to succeed, the peer must already know the root CA’s and all intermediate CAs’ certificates.
Implementations§
Source§impl<CA: KeyComponent<Pki>, PK: KeyComponent<Pki>, SK: KeyComponent<Pki>> PkiKeyDef<CA, PK, SK>
impl<CA: KeyComponent<Pki>, PK: KeyComponent<Pki>, SK: KeyComponent<Pki>> PkiKeyDef<CA, PK, SK>
Sourcepub fn new(
ca_cert: Option<CA>,
public_cert: PK,
private_key: SK,
user_pin: Option<CString>,
asn1_private_key_type: Asn1PrivateKeyType,
) -> Self
pub fn new( ca_cert: Option<CA>, public_cert: PK, private_key: SK, user_pin: Option<CString>, asn1_private_key_type: Asn1PrivateKeyType, ) -> Self
Creates a new key definition using the given components.
§Parameters
ca_cert
: The certificate of the CA whose name should be provided to clients when requesting client certificates. Important: See the section in the struct-level documentation regarding this field for more information.public_cert
: The public (signed) certificate of this key.private_key
: The private key.user_pin
: The PIN that should be used when unlocking a token (for PKCS11 keys stored on a token, ignored otherwise)asn1_private_key_type
: The type of the private key (only used for DER/ASN.1 encoded keys).
Source§impl PkiKeyDef<PemFileKeyComponent, PemFileKeyComponent, PemFileKeyComponent>
impl PkiKeyDef<PemFileKeyComponent, PemFileKeyComponent, PemFileKeyComponent>
Sourcepub fn with_pem_files(
ca_cert: Option<impl Into<PemFileKeyComponent>>,
public_cert: impl Into<PemFileKeyComponent>,
private_key: impl Into<PemFileKeyComponent>,
) -> Self
pub fn with_pem_files( ca_cert: Option<impl Into<PemFileKeyComponent>>, public_cert: impl Into<PemFileKeyComponent>, private_key: impl Into<PemFileKeyComponent>, ) -> Self
Creates a new key definition using PEM-encoded files as components.
See the documentation of PkiKeyDef::new for more information on the parameters, especially
regarding the ca_cert
field.
Source§impl PkiKeyDef<PemMemoryKeyComponent, PemMemoryKeyComponent, PemMemoryKeyComponent>
impl PkiKeyDef<PemMemoryKeyComponent, PemMemoryKeyComponent, PemMemoryKeyComponent>
Sourcepub fn with_pem_memory(
ca_cert: Option<impl Into<PemMemoryKeyComponent>>,
public_cert: impl Into<PemMemoryKeyComponent>,
private_key: impl Into<PemMemoryKeyComponent>,
) -> Self
pub fn with_pem_memory( ca_cert: Option<impl Into<PemMemoryKeyComponent>>, public_cert: impl Into<PemMemoryKeyComponent>, private_key: impl Into<PemMemoryKeyComponent>, ) -> Self
Creates a new key definition using PEM-encoded byte sequences in memory as components.
See the documentation of PkiKeyDef::new
for more information on the parameters, especially
regarding the ca_cert
field.
Source§impl PkiKeyDef<DerFileKeyComponent, DerFileKeyComponent, DerFileKeyComponent>
impl PkiKeyDef<DerFileKeyComponent, DerFileKeyComponent, DerFileKeyComponent>
Sourcepub fn with_asn1_files(
ca_cert: Option<impl Into<DerFileKeyComponent>>,
public_cert: impl Into<DerFileKeyComponent>,
private_key: impl Into<DerFileKeyComponent>,
private_key_type: Asn1PrivateKeyType,
) -> Self
pub fn with_asn1_files( ca_cert: Option<impl Into<DerFileKeyComponent>>, public_cert: impl Into<DerFileKeyComponent>, private_key: impl Into<DerFileKeyComponent>, private_key_type: Asn1PrivateKeyType, ) -> Self
Creates a new key definition using DER-encoded files as components.
See the documentation of PkiKeyDef::new
for more information on the parameters, especially
regarding the ca_cert
field.
Source§impl PkiKeyDef<DerMemoryKeyComponent, DerMemoryKeyComponent, DerMemoryKeyComponent>
impl PkiKeyDef<DerMemoryKeyComponent, DerMemoryKeyComponent, DerMemoryKeyComponent>
Sourcepub fn with_asn1_memory(
ca_cert: Option<impl Into<DerMemoryKeyComponent>>,
public_cert: impl Into<DerMemoryKeyComponent>,
private_key: impl Into<DerMemoryKeyComponent>,
private_key_type: Asn1PrivateKeyType,
) -> Self
pub fn with_asn1_memory( ca_cert: Option<impl Into<DerMemoryKeyComponent>>, public_cert: impl Into<DerMemoryKeyComponent>, private_key: impl Into<DerMemoryKeyComponent>, private_key_type: Asn1PrivateKeyType, ) -> Self
Creates a new key definition using DER-encoded byte sequences in memory as components.
See the documentation of PkiKeyDef::new
for more information on the parameters, especially
regarding the ca_cert
field.
Source§impl PkiKeyDef<Pkcs11KeyComponent, Pkcs11KeyComponent, Pkcs11KeyComponent>
impl PkiKeyDef<Pkcs11KeyComponent, Pkcs11KeyComponent, Pkcs11KeyComponent>
Sourcepub fn with_pkcs11(
ca_cert: Option<impl Into<Pkcs11KeyComponent>>,
public_cert: impl Into<Pkcs11KeyComponent>,
private_key: impl Into<Pkcs11KeyComponent>,
user_pin: Option<CString>,
) -> Self
pub fn with_pkcs11( ca_cert: Option<impl Into<Pkcs11KeyComponent>>, public_cert: impl Into<Pkcs11KeyComponent>, private_key: impl Into<Pkcs11KeyComponent>, user_pin: Option<CString>, ) -> Self
Creates a new key definition using PKCS11 URIs as components.
See the documentation of PkiKeyDef::new
for more information on the parameters, especially
regarding the ca_cert
field.