baseid-vc
The VC crate implements the W3C Verifiable Credentials Data Model 2.0 with JWT encoding.
Installation
Section titled “Installation”[dependencies]baseid-vc = "0.1.0-alpha.1"Issue a Credential
Section titled “Issue a Credential”use baseid_vc::{sign_credential_jwt, VerifiableCredential};use baseid_vc::credential::Issuer;
let vc = VerifiableCredential { context: vec!["https://www.w3.org/ns/credentials/v2".into()], id: None, r#type: vec!["VerifiableCredential".into(), "AlumniCredential".into()], issuer: Issuer::Uri(issuer_did.clone()), valid_from: Some("2024-01-01T00:00:00Z".into()), valid_until: Some("2029-01-01T00:00:00Z".into()), credential_subject: serde_json::json!({ "alumniOf": "Example University" }), credential_status: None, proof: None,};
let jwt = sign_credential_jwt(&vc, &key_pair, &kid)?;Verify a Credential
Section titled “Verify a Credential”use baseid_vc::verify_credential_jwt;
let verified = verify_credential_jwt(&jwt, &public_key)?;println!("Issuer: {}", verified.issuer);println!("Claims: {:?}", verified.credential_subject);Credential Status
Section titled “Credential Status”Check revocation status:
use baseid_vc::credential::CredentialStatus;
if let Some(status) = &vc.credential_status { // Check against status list}Verifiable Presentations
Section titled “Verifiable Presentations”Wrap credentials in a presentation for submission to a verifier:
use baseid_vc::VerifiablePresentation;
let vp = VerifiablePresentation { context: vec!["https://www.w3.org/ns/credentials/v2".into()], r#type: vec!["VerifiablePresentation".into()], holder: Some(holder_did), verifiable_credential: vec![jwt],};