Skip to main content

identity_kit/
prelude.rs

1//! The commonly used types and traits of each layer, for glob import.
2//!
3//! The crate has two layers (see the [crate documentation](crate)). This module is the lower
4//! layer's prelude: DIDs and DID documents, JOSE keys and signatures, key stores, the signing
5//! party, DID resolution and the methods the enabled features provide. [`credentials`] is the upper
6//! layer's: verifiable credentials as JWTs, SD-JWT VCs and domain linkage.
7//!
8//! ```
9//! use identity_kit::prelude::*;
10//!
11//! let did = Did::parse("did:example:123")?;
12//! let url = did.join("#key-1")?;
13//! assert_eq!(url.fragment(), Some("key-1"));
14//! # Ok::<(), DidError>(())
15//! ```
16
17pub use crate::did::{
18    Context, Did, DidDocument, DidDocumentBuilder, DidError, DidMethod, DidUrl, DidUrlReference,
19    DocumentMetadata, MethodRef, MethodType, OneOrMany, ResolutionError, ResolutionErrorKind,
20    ResolutionMetadata, ResolutionOptions, ResolutionResult, Service, ServiceEndpoint, Uri,
21    VerificationMaterial, VerificationMethod, VerificationRelationship,
22};
23pub use crate::identity::{Identifier, Identity, IdentityError, IdentityKind, KeyStoreIdentity};
24pub use crate::jose::{
25    CompactJws, DefaultVerifier, Jwk, JwsAlgorithm, JwsHeader, JwsVerifier, JwtClaims, KeyType,
26    Signer, encode_compact,
27};
28#[cfg(feature = "in-memory")]
29#[cfg_attr(docsrs, doc(cfg(feature = "in-memory")))]
30pub use crate::keys::InMemoryKeyStore;
31pub use crate::keys::{KeyId, KeySigner, KeySpec, KeyStore, KeyStoreCapabilities, KeyStoreError};
32#[cfg(feature = "software")]
33#[cfg_attr(docsrs, doc(cfg(feature = "software")))]
34pub use crate::keys::{SoftwareKeyStore, SoftwareKeyStoreOptions};
35#[cfg(feature = "did-jwk")]
36#[cfg_attr(docsrs, doc(cfg(feature = "did-jwk")))]
37pub use crate::methods::DidJwk;
38#[cfg(feature = "did-key")]
39#[cfg_attr(docsrs, doc(cfg(feature = "did-key")))]
40pub use crate::methods::DidKey;
41#[cfg(feature = "did-web")]
42#[cfg_attr(docsrs, doc(cfg(feature = "did-web")))]
43pub use crate::methods::DidWeb;
44#[cfg(feature = "jwks")]
45#[cfg_attr(docsrs, doc(cfg(feature = "jwks")))]
46pub use crate::resolver::JwksResolver;
47pub use crate::resolver::{
48    CompositeKeyResolver, DereferenceError, Dereferenced, DidProducer, DidResolver, DocumentCache,
49    Hosting, JwkResolver, JwtValidationError, JwtValidationOptions, JwtValidator, KeyReference,
50    KeyReferenceError, KeyResolutionError, KeyResolver, KeyRole, MethodCapabilities, ProduceError,
51    Resolver, ResolverBuilder,
52};
53
54/// The upper layer's prelude: credentials and presentations as JWTs (feature `vc`), SD-JWT
55/// VCs (feature `sd-jwt`), domain linkage (feature `domain-linkage`) and linked presentations
56/// (feature `linked-vp`).
57///
58/// It does not repeat the lower layer; import both.
59///
60/// ```
61/// use identity_kit::prelude::*;
62/// use identity_kit::prelude::credentials::*;
63///
64/// let holder = Did::parse("did:example:holder")?;
65/// let subject = Subject::new(holder);
66/// assert_eq!(subject.id.as_ref().map(Uri::as_str), Some("did:example:holder"));
67/// # Ok::<(), DidError>(())
68/// ```
69#[cfg(feature = "vc")]
70#[cfg_attr(docsrs, doc(cfg(feature = "vc")))]
71pub mod credentials {
72    #[cfg(feature = "domain-linkage")]
73    #[cfg_attr(docsrs, doc(cfg(feature = "domain-linkage")))]
74    pub use crate::domain_linkage::{
75        DomainLinkageClient, DomainLinkageConfiguration, DomainLinkageCredentialBuilder,
76        DomainLinkageError, DomainLinkageReport, DomainLinkageValidator, LinkedDid,
77        LinkedDomainReport, LinkedDomainsService, UnverifiedLinkage,
78    };
79    #[cfg(feature = "linked-vp")]
80    #[cfg_attr(docsrs, doc(cfg(feature = "linked-vp")))]
81    pub use crate::linked_vp::{
82        LinkedPresentationBuilder, LinkedPresentationReport, LinkedVpClient, LinkedVpError,
83        LinkedVpService, LinkedVpValidationOptions, LinkedVpValidator,
84    };
85    #[cfg(feature = "sd-jwt")]
86    #[cfg_attr(docsrs, doc(cfg(feature = "sd-jwt")))]
87    pub use crate::sd_jwt_vc::{
88        Disclosure, HashAlgorithm, KeyBinding, KeyBindingOptions, Processed, SdJwt, SdJwtBuilder,
89        SdJwtCredentialV2, SdJwtCredentialV2Builder, SdJwtCredentialV2Error,
90        SdJwtCredentialValidator, SdJwtError, SdJwtValidationError, SdJwtValidationOptions,
91        SdJwtVc, SdJwtVcBuilder, SdJwtVcClaims, SdJwtVcError, TypeMetadata,
92        ValidatedSdJwtCredentialV2, ValidatedSdJwtVc,
93    };
94    #[cfg(feature = "status-list")]
95    #[cfg_attr(docsrs, doc(cfg(feature = "status-list")))]
96    pub use crate::status_list::{Status, StatusList, StatusListToken};
97    pub use crate::vc::validation::{
98        CredentialStatus, CredentialValidationOptions, DecodedCredential, DecodedCredentialV2,
99        DecodedPresentation, DecodedPresentationV2, FailFast, JwtCredentialValidator,
100        JwtPresentationValidator, PresentationValidationOptions, PresentedCredentialV2,
101        StatusCheck, StatusPolicy, SubjectHolderRelationship, TimeOptions, ValidationError,
102    };
103    pub use crate::vc::{
104        ClaimPath, Credential, CredentialError, CredentialV2, EnvelopedVc, EnvelopedVp, Jwt,
105        JwtClaims, Party, Presentation, PresentationV2, Subject,
106    };
107}