Skip to content

baseid-core

The foundation crate providing types used across all BaseID crates.

[dependencies]
baseid-core = "0.1.0-alpha.1"
TypeDescription
KeyTypeEd25519, P256, P384, Secp256k1
CredentialFormatW3cVc, Mdl, SdJwtVc, AnonCreds, Bbs
CredentialIdUnique credential identifier
AssuranceLevelLow, Substantial, High
AssuranceFrameworkPctf, Eidas, Nist80063, Tdif
LanguageEn, Fr, De, Es, It, Ar, and more

All BaseID errors implement BilingualError:

use baseid_core::error::BilingualError;
use baseid_core::language::Language;
let error = some_operation().unwrap_err();
println!("EN: {}", error.message(Language::En));
println!("FR: {}", error.message(Language::Fr));

This is a core requirement for Canadian government deployments where both official languages must be supported.

The credential lifecycle is modeled with three traits:

pub trait CredentialIssuer {
fn issue(&self, request: &IssuanceRequest) -> Result<IssuedCredential>;
}
pub trait CredentialVerifier {
fn verify(&self, credential: &[u8]) -> Result<VerifiedClaims>;
}
pub trait CredentialPresenter {
fn present(&self, request: &PresentationRequest) -> Result<Presentation>;
}

Each credential format crate implements these traits.

A namespace-keyed data structure for credential claims:

use baseid_core::claims::ClaimSet;
let mut claims = ClaimSet::new();
claims.insert("org.iso.18013.5.1", "family_name", "Smith".into());
claims.insert("org.iso.18013.5.1", "given_name", "Alice".into());

Full API Reference