coapcore::seccfg

Struct ConfigBuilder

Source
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

Source

pub fn new() -> Self

Creates an empty server security configuration.

Without any additional building steps, this is equivalent to DenyAll.

Source

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.

Source

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.

Source

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).

Source

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.

Source

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.

Source

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

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl ServerSecurityConfig for ConfigBuilder

Source§

const PARSES_TOKENS: bool = true

True if the type will at any time need to process tokens at /authz-info Read more
Source§

type Scope = UnionScope

The way scopes issued with this system as audience by this AS are expressed here.
Source§

fn decrypt_symmetric_token<'buf>( &self, headers: &HeaderMap<'_>, aad: &[u8], ciphertext_buffer: &'buf mut [u8], _: PrivateMethod, ) -> Result<(Self::Scope, CwtClaimsSet<'buf>), CredentialError>

Unprotects a symmetriclly encrypted token and processes the contained [CWT Claims Set][crate::ace::CwtClaimsSet] into a Self::Scope and returns the claims. Read more
Source§

fn verify_asymmetric_token<'b>( &self, headers: &HeaderMap<'_>, signed_data: &[u8], signature: &[u8], signed_payload: &'b [u8], _: PrivateMethod, ) -> Result<(Self::Scope, CwtClaimsSet<'b>), CredentialError>

Verify the signature on a symmetrically encrypted token Read more
Source§

fn nosec_authorization(&self) -> Option<Self::Scope>

Generates the scope representing unauthenticated access.
Source§

fn own_edhoc_credential(&self) -> Option<(Credential, BytesP256ElemLen)>

Source§

fn expand_id_cred_x( &self, id_cred_x: IdCred, ) -> Option<(Credential, Self::Scope)>

Expands an EDHOC ID_CRED_x into a parsed CRED_x along with the associated authorizations.
Source§

fn render_not_allowed<M: MutableWritableMessage>( &self, message: &mut M, ) -> Result<(), NotAllowedRenderingFailed>

Render the “not allowed” message in this scenario. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.