#![forbid(unsafe_code)]
#![deny(
clippy::all,
clippy::unwrap_used,
clippy::expect_used,
clippy::panic,
clippy::todo,
clippy::unimplemented,
missing_docs,
rust_2018_idioms
)]
pub mod client;
pub mod crypto;
pub mod discovery;
pub mod dpop;
pub mod error;
pub mod identity;
pub mod integrations;
pub mod par;
pub mod pkce;
pub mod session;
pub mod ssrf;
pub mod store;
pub mod verification;
pub use client::{
AtprotoOAuthClient, AtprotoOAuthClientBuilder, AuthorizationRequest, CallbackParams,
OAuthClientMetadata, StoredStateEntry, TokenResponse,
};
pub use crypto::{
base64url_decode, base64url_decode_fixed, base64url_encode, constant_time_eq, hmac_sha256,
jwk_thumbprint_ec_p256, jwk_thumbprint_rsa, sha256_digest, sign_p256_raw, verify_p256_raw,
verifying_key_from_coordinates, verifying_key_to_coordinates,
};
pub use discovery::{
discover_oauth_endpoints, fetch_auth_server_metadata, fetch_protected_resource_metadata,
validate_auth_server_capabilities, AuthorizationServerMetadata, DiscoveredAuthEndpoints,
ProtectedResourceMetadata,
};
pub use dpop::{
compute_access_token_hash, extract_dpop_nonce, normalize_htu, DPoPKey, DPoPNonceCache,
DPoPProofClaims, DPoPVerifier, JwkEc, DEFAULT_CLOCK_SKEW_LEEWAY, DEFAULT_MAX_PROOF_AGE,
};
pub use error::{
AtprotoOAuthError, CryptoError, DPoPError, DiscoveryError, IdentityError, IntegrationError,
ParError, PkceError, SsrfError, StoreError, TokenError,
};
pub use identity::{
normalize_handle, validate_did_syntax, DidDocument, DidMethod, DidService, DnsTxtResolver,
IdentityResolver, IdentityResolverBuilder, ResolvedIdentity, StandardDnsResolver,
VerificationMethod, DEFAULT_PLC_DIRECTORY,
};
pub use integrations::{AuthenticatedUser, OAuthCallbackQuery, OAuthSessionExtension};
pub use par::{build_authorization_url, execute_par_request, ParParameters, ParResponse};
pub use pkce::{derive_s256_challenge, validate_verifier, verify_pkce, PkceMethod, PkcePair};
pub use session::OAuthSession;
pub use ssrf::{
is_blocked_hostname, is_restricted_ip, is_restricted_ipv4, is_restricted_ipv6, SsrfFilter,
};
pub use store::{OAuthStateStore, OAuthStore, DEFAULT_STATE_TTL, NUM_SHARDS};
pub use verification::{
ConstantTimeEqSpec, DPoPHtuFormalSpec, OAuthStateTransitionModel, PkceFormalSpec,
SsrfFormalSpec, StateTransitionStatus,
};