pub struct ConfigBuilder { /* private fields */ }
Expand description
An implementation of ServerSecurityConfig
that can be extended using builder methods.
This is very much in flux, and will need further exploration as to inhowmuch this can be type-composed from components.
Implementations§
Source§impl ConfigBuilder
impl ConfigBuilder
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates an empty server security configuration.
Without any additional building steps, this is equivalent to DenyAll
.
Sourcepub fn with_aif_symmetric_as_aesccm256(self, key: [u8; 32]) -> Self
pub fn with_aif_symmetric_as_aesccm256(self, key: [u8; 32]) -> Self
Sets a single Authorization Server recognized by a shared AES-16-128-256
(COSE algorithm
31) key.
Scopes are accepted as given by the AS using the AIF REST model as understood by
crate::scope::AifValue
.
§Caveats and evolution
Currently, this type just supports a single AS; it should therefore only be called once,
and the latest value overwrites any earlier. Building these in type state (as [(&as_key); { N+1 }]
(once that is possible) or (&as_key1, (&as_key2, ()))
will make sense on the
long run, but is not implemented yet.
Depending on whether the keys are already referenced in a long-lived location, when
implementing that, it can also make sense to allow using any AsRef<[u8; 32]>
types at
that point.
Currently, keys are taken as byte sequence. With the expected flexibilization of crypto backends, this may later allow a more generic type that reflects secure element key slots.
Sourcepub fn with_aif_asymmetric_es256(
self,
x: [u8; 32],
y: [u8; 32],
audience: String<MAX_AUD_SIZE>,
) -> Self
pub fn with_aif_asymmetric_es256( self, x: [u8; 32], y: [u8; 32], audience: String<MAX_AUD_SIZE>, ) -> Self
Sets a single Authorization Server recignized by its ES256
(COSE algorithm -7) signing
key.
An audience identifier is taken along with the key; signed tokens are only accepted if they have that audience.
Scopes are accepted as given by the AS using the AIF REST model as understood by
crate::scope::AifValue
.
§Caveats and evolution
Same from Self::with_aif_symmetric_as_aesccm256
apply, minus the considerations for
secure key storage.
Sourcepub fn with_known_edhoc_credential(
self,
credential: Credential,
scope: UnionScope,
) -> Self
pub fn with_known_edhoc_credential( self, credential: Credential, scope: UnionScope, ) -> Self
Allow use of the server within the limits of the given scope by EDHOC clients provided they present the given credential.
§Caveats and evolution
Currently, this type just supports a single credential; it should therefore only be called
once, and the latest value overwrites any earlier. (See
Self::with_aif_symmetric_as_aesccm256
for plans).
Sourcepub fn with_own_edhoc_credential(
self,
credential: Credential,
key: BytesP256ElemLen,
) -> Self
pub fn with_own_edhoc_credential( self, credential: Credential, key: BytesP256ElemLen, ) -> Self
Configures an EDHOC credential and private key to be presented by this server.
§Panics
When debug assertions are enabled, this panics if an own credential has already been configured.
Sourcepub fn allow_unauthenticated(self, scope: UnionScope) -> Self
pub fn allow_unauthenticated(self, scope: UnionScope) -> Self
Allow use of the server by unauthenticated clients using the given scope.
§Panics
When debug assertions are enabled, this panics if an unauthenticated scope has already been configured.
Sourcepub fn with_request_creation_hints(
self,
request_creation_hints: &'static [u8],
) -> Self
pub fn with_request_creation_hints( self, request_creation_hints: &'static [u8], ) -> Self
Sets the payload of the “Unauthorized” response.
§Panics
When debug assertions are enabled, this panics if an unauthenticated scope has already been configured.
Trait Implementations§
Source§impl Default for ConfigBuilder
impl Default for ConfigBuilder
Source§impl ServerSecurityConfig for ConfigBuilder
impl ServerSecurityConfig for ConfigBuilder
Source§const PARSES_TOKENS: bool = true
const PARSES_TOKENS: bool = true
Source§type Scope = UnionScope
type Scope = UnionScope
Source§fn decrypt_symmetric_token<'buf>(
&self,
headers: &HeaderMap<'_>,
aad: &[u8],
ciphertext_buffer: &'buf mut [u8],
_: PrivateMethod,
) -> Result<(Self::Scope, CwtClaimsSet<'buf>), CredentialError>
fn decrypt_symmetric_token<'buf>( &self, headers: &HeaderMap<'_>, aad: &[u8], ciphertext_buffer: &'buf mut [u8], _: PrivateMethod, ) -> Result<(Self::Scope, CwtClaimsSet<'buf>), CredentialError>
Self::Scope
and returns the claims. Read moreSource§fn verify_asymmetric_token<'b>(
&self,
headers: &HeaderMap<'_>,
signed_data: &[u8],
signature: &[u8],
signed_payload: &'b [u8],
_: PrivateMethod,
) -> Result<(Self::Scope, CwtClaimsSet<'b>), CredentialError>
fn verify_asymmetric_token<'b>( &self, headers: &HeaderMap<'_>, signed_data: &[u8], signature: &[u8], signed_payload: &'b [u8], _: PrivateMethod, ) -> Result<(Self::Scope, CwtClaimsSet<'b>), CredentialError>
fn own_edhoc_credential(&self) -> Option<(Credential, BytesP256ElemLen)>
Source§fn expand_id_cred_x(
&self,
id_cred_x: IdCred,
) -> Option<(Credential, Self::Scope)>
fn expand_id_cred_x( &self, id_cred_x: IdCred, ) -> Option<(Credential, Self::Scope)>
ID_CRED_x
into a parsed CRED_x
along with the associated
authorizations.