Docs menu: vestibule_apple/jwt

vestibule_apple/jwt

JWT verification using ywt_core with a custom Erlang FFI backend.

vestibule_apple/jwt

JWT verification using ywt_core with a custom Erlang FFI backend.

This replaces ywt_erlang to avoid an OTP 27 compatibility issue in its EC key generation. We only need RS256 verification in production; the RSA signing counterpart used by tests lives in test/vestibule_apple/jwt_signing.gleam.

Types

ParseError

Detailed error information for JWT parsing failures.

pub type ParseError {
MalformedToken
InvalidHeaderEncoding
InvalidPayloadEncoding
InvalidSignatureEncoding
InvalidHeaderJson(json.DecodeError)
InvalidPayloadJson(json.DecodeError)
UnsupportedAlgorithm(actual: String)
NoMatchingKey
InvalidSignature
TokenExpired(expired_at: timestamp.Timestamp)
TokenNotYetValid(not_before: timestamp.Timestamp)
InvalidIssuer(
expected: List(String),
actual: String
)
InvalidAudience(
expected: List(String),
actual: String
)
InvalidSubject(
expected: List(String),
actual: String
)
InvalidId(
expected: List(String),
actual: String
)
MissingClaim(claim_name: String)
ClaimDecodingError(
claim_name: String,
error: List(decode.DecodeError)
)
InvalidCustomClaim(claim_name: String)
PayloadDecodingError(List(decode.DecodeError))
}

Functions

decode

Verify a JWT signature and validate claims.

pub fn decode(
jwt: String,
using: decode.Decoder(a),
claims: List(claim.Claim),
keys: List(verify_key.VerifyKey)
) -> Result(a, ParseError)