sd-jwt-0.1.0.0: Selective Disclosure for JSON Web Tokens (RFC 9901)
Safe HaskellNone
LanguageHaskell2010

SDJWT.Internal.Types

Description

Core data types for SD-JWT (Selective Disclosure for JSON Web Tokens).

This module defines all the data types used throughout the SD-JWT library, including hash algorithms, disclosures, SD-JWT structures, and error types. These types correspond to the structures defined in RFC 9901.

Synopsis

Documentation

data HashAlgorithm Source #

Hash algorithm identifier for computing disclosure digests.

All three algorithms (SHA-256, SHA-384, SHA-512) must be supported. SHA-256 is the default when _sd_alg is not specified in the SD-JWT.

Constructors

SHA256

SHA-256 (default, required)

SHA384

SHA-384

SHA512

SHA-512

Instances

Instances details
Generic HashAlgorithm Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep HashAlgorithm 
Instance details

Defined in SDJWT.Internal.Types

type Rep HashAlgorithm = D1 ('MetaData "HashAlgorithm" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "SHA256" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SHA384" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SHA512" 'PrefixI 'False) (U1 :: Type -> Type)))
Read HashAlgorithm Source # 
Instance details

Defined in SDJWT.Internal.Types

Show HashAlgorithm Source # 
Instance details

Defined in SDJWT.Internal.Types

Eq HashAlgorithm Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep HashAlgorithm Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep HashAlgorithm = D1 ('MetaData "HashAlgorithm" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "SHA256" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SHA384" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SHA512" 'PrefixI 'False) (U1 :: Type -> Type)))

newtype Salt Source #

Salt value (cryptographically secure random).

Salts are used when creating disclosures to prevent brute-force attacks. RFC 9901 recommends 128 bits (16 bytes) of entropy.

Constructors

Salt 

Fields

Instances

Instances details
Generic Salt Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep Salt 
Instance details

Defined in SDJWT.Internal.Types

type Rep Salt = D1 ('MetaData "Salt" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'True) (C1 ('MetaCons "Salt" 'PrefixI 'True) (S1 ('MetaSel ('Just "unSalt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

Methods

from :: Salt -> Rep Salt x #

to :: Rep Salt x -> Salt #

Show Salt Source # 
Instance details

Defined in SDJWT.Internal.Types

Methods

showsPrec :: Int -> Salt -> ShowS #

show :: Salt -> String #

showList :: [Salt] -> ShowS #

Eq Salt Source # 
Instance details

Defined in SDJWT.Internal.Types

Methods

(==) :: Salt -> Salt -> Bool #

(/=) :: Salt -> Salt -> Bool #

type Rep Salt Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep Salt = D1 ('MetaData "Salt" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'True) (C1 ('MetaCons "Salt" 'PrefixI 'True) (S1 ('MetaSel ('Just "unSalt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

newtype Digest Source #

Digest (base64url-encoded hash).

A digest is the base64url-encoded hash of a disclosure. Digests replace claim values in the SD-JWT payload to enable selective disclosure.

Constructors

Digest 

Fields

Instances

Instances details
Generic Digest Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep Digest 
Instance details

Defined in SDJWT.Internal.Types

type Rep Digest = D1 ('MetaData "Digest" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'True) (C1 ('MetaCons "Digest" 'PrefixI 'True) (S1 ('MetaSel ('Just "unDigest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

Methods

from :: Digest -> Rep Digest x #

to :: Rep Digest x -> Digest #

Show Digest Source # 
Instance details

Defined in SDJWT.Internal.Types

Eq Digest Source # 
Instance details

Defined in SDJWT.Internal.Types

Methods

(==) :: Digest -> Digest -> Bool #

(/=) :: Digest -> Digest -> Bool #

type Rep Digest Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep Digest = D1 ('MetaData "Digest" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'True) (C1 ('MetaCons "Digest" 'PrefixI 'True) (S1 ('MetaSel ('Just "unDigest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data ObjectDisclosure Source #

Disclosure for object properties: [salt, claim_name, claim_value]

Instances

Instances details
Generic ObjectDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep ObjectDisclosure 
Instance details

Defined in SDJWT.Internal.Types

type Rep ObjectDisclosure = D1 ('MetaData "ObjectDisclosure" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "ObjectDisclosure" 'PrefixI 'True) (S1 ('MetaSel ('Just "disclosureSalt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Salt) :*: (S1 ('MetaSel ('Just "disclosureName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "disclosureValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value))))
Show ObjectDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

Eq ObjectDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep ObjectDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep ObjectDisclosure = D1 ('MetaData "ObjectDisclosure" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "ObjectDisclosure" 'PrefixI 'True) (S1 ('MetaSel ('Just "disclosureSalt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Salt) :*: (S1 ('MetaSel ('Just "disclosureName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "disclosureValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value))))

data ArrayDisclosure Source #

Disclosure for array elements: [salt, claim_value]

Constructors

ArrayDisclosure 

Instances

Instances details
Generic ArrayDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep ArrayDisclosure 
Instance details

Defined in SDJWT.Internal.Types

type Rep ArrayDisclosure = D1 ('MetaData "ArrayDisclosure" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "ArrayDisclosure" 'PrefixI 'True) (S1 ('MetaSel ('Just "arraySalt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Salt) :*: S1 ('MetaSel ('Just "arrayValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value)))
Show ArrayDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

Eq ArrayDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep ArrayDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep ArrayDisclosure = D1 ('MetaData "ArrayDisclosure" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "ArrayDisclosure" 'PrefixI 'True) (S1 ('MetaSel ('Just "arraySalt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Salt) :*: S1 ('MetaSel ('Just "arrayValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value)))

data Disclosure Source #

Unified disclosure type

Instances

Instances details
Generic Disclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep Disclosure 
Instance details

Defined in SDJWT.Internal.Types

type Rep Disclosure = D1 ('MetaData "Disclosure" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "DisclosureObject" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ObjectDisclosure)) :+: C1 ('MetaCons "DisclosureArray" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ArrayDisclosure)))
Show Disclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

Eq Disclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep Disclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep Disclosure = D1 ('MetaData "Disclosure" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "DisclosureObject" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ObjectDisclosure)) :+: C1 ('MetaCons "DisclosureArray" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ArrayDisclosure)))

newtype EncodedDisclosure Source #

Encoded disclosure (base64url string)

Instances

Instances details
Generic EncodedDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep EncodedDisclosure 
Instance details

Defined in SDJWT.Internal.Types

type Rep EncodedDisclosure = D1 ('MetaData "EncodedDisclosure" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'True) (C1 ('MetaCons "EncodedDisclosure" 'PrefixI 'True) (S1 ('MetaSel ('Just "unEncodedDisclosure") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
Show EncodedDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

Eq EncodedDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep EncodedDisclosure Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep EncodedDisclosure = D1 ('MetaData "EncodedDisclosure" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'True) (C1 ('MetaCons "EncodedDisclosure" 'PrefixI 'True) (S1 ('MetaSel ('Just "unEncodedDisclosure") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data SDJWTPayload Source #

SD-JWT payload structure Note: This is a simplified representation. The actual payload is a JSON object with _sd arrays and ... objects for arrays.

Constructors

SDJWTPayload 

Fields

Instances

Instances details
Generic SDJWTPayload Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep SDJWTPayload 
Instance details

Defined in SDJWT.Internal.Types

type Rep SDJWTPayload = D1 ('MetaData "SDJWTPayload" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "SDJWTPayload" 'PrefixI 'True) (S1 ('MetaSel ('Just "sdAlg") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe HashAlgorithm)) :*: S1 ('MetaSel ('Just "payloadValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value)))
Show SDJWTPayload Source # 
Instance details

Defined in SDJWT.Internal.Types

Eq SDJWTPayload Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep SDJWTPayload Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep SDJWTPayload = D1 ('MetaData "SDJWTPayload" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "SDJWTPayload" 'PrefixI 'True) (S1 ('MetaSel ('Just "sdAlg") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe HashAlgorithm)) :*: S1 ('MetaSel ('Just "payloadValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value)))

newtype KeyBindingInfo Source #

Key Binding information from cnf claim

The public key is stored as a JWK JSON string (Text), which is compatible with JWKLike. This allows users to work with JWKs without requiring a direct dependency on the jose library.

Constructors

KeyBindingInfo 

Fields

Instances

Instances details
Generic KeyBindingInfo Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep KeyBindingInfo 
Instance details

Defined in SDJWT.Internal.Types

type Rep KeyBindingInfo = D1 ('MetaData "KeyBindingInfo" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'True) (C1 ('MetaCons "KeyBindingInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "kbPublicKey") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
Show KeyBindingInfo Source # 
Instance details

Defined in SDJWT.Internal.Types

Eq KeyBindingInfo Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep KeyBindingInfo Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep KeyBindingInfo = D1 ('MetaData "KeyBindingInfo" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'True) (C1 ('MetaCons "KeyBindingInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "kbPublicKey") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data SDJWT Source #

Complete SD-JWT structure (as issued)

Constructors

SDJWT 

Fields

Instances

Instances details
Generic SDJWT Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep SDJWT 
Instance details

Defined in SDJWT.Internal.Types

type Rep SDJWT = D1 ('MetaData "SDJWT" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "SDJWT" 'PrefixI 'True) (S1 ('MetaSel ('Just "issuerSignedJWT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "disclosures") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [EncodedDisclosure])))

Methods

from :: SDJWT -> Rep SDJWT x #

to :: Rep SDJWT x -> SDJWT #

Show SDJWT Source # 
Instance details

Defined in SDJWT.Internal.Types

Methods

showsPrec :: Int -> SDJWT -> ShowS #

show :: SDJWT -> String #

showList :: [SDJWT] -> ShowS #

Eq SDJWT Source # 
Instance details

Defined in SDJWT.Internal.Types

Methods

(==) :: SDJWT -> SDJWT -> Bool #

(/=) :: SDJWT -> SDJWT -> Bool #

type Rep SDJWT Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep SDJWT = D1 ('MetaData "SDJWT" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "SDJWT" 'PrefixI 'True) (S1 ('MetaSel ('Just "issuerSignedJWT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "disclosures") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [EncodedDisclosure])))

data SDJWTPresentation Source #

SD-JWT presentation (with selected disclosures)

Instances

Instances details
Generic SDJWTPresentation Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep SDJWTPresentation 
Instance details

Defined in SDJWT.Internal.Types

type Rep SDJWTPresentation = D1 ('MetaData "SDJWTPresentation" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "SDJWTPresentation" 'PrefixI 'True) (S1 ('MetaSel ('Just "presentationJWT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "selectedDisclosures") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [EncodedDisclosure]) :*: S1 ('MetaSel ('Just "keyBindingJWT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))))
Show SDJWTPresentation Source # 
Instance details

Defined in SDJWT.Internal.Types

Eq SDJWTPresentation Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep SDJWTPresentation Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep SDJWTPresentation = D1 ('MetaData "SDJWTPresentation" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "SDJWTPresentation" 'PrefixI 'True) (S1 ('MetaSel ('Just "presentationJWT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "selectedDisclosures") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [EncodedDisclosure]) :*: S1 ('MetaSel ('Just "keyBindingJWT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))))

data ProcessedSDJWTPayload Source #

Processed SD-JWT payload (after verification)

Constructors

ProcessedSDJWTPayload 

Fields

Instances

Instances details
Generic ProcessedSDJWTPayload Source # 
Instance details

Defined in SDJWT.Internal.Types

Associated Types

type Rep ProcessedSDJWTPayload 
Instance details

Defined in SDJWT.Internal.Types

type Rep ProcessedSDJWTPayload = D1 ('MetaData "ProcessedSDJWTPayload" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "ProcessedSDJWTPayload" 'PrefixI 'True) (S1 ('MetaSel ('Just "processedClaims") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Object) :*: S1 ('MetaSel ('Just "keyBindingInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe KeyBindingInfo))))
Show ProcessedSDJWTPayload Source # 
Instance details

Defined in SDJWT.Internal.Types

Eq ProcessedSDJWTPayload Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep ProcessedSDJWTPayload Source # 
Instance details

Defined in SDJWT.Internal.Types

type Rep ProcessedSDJWTPayload = D1 ('MetaData "ProcessedSDJWTPayload" "SDJWT.Internal.Types" "sd-jwt-0.1.0.0-Ha5SFOF1e9zHZXFdSA7HZR" 'False) (C1 ('MetaCons "ProcessedSDJWTPayload" 'PrefixI 'True) (S1 ('MetaSel ('Just "processedClaims") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Object) :*: S1 ('MetaSel ('Just "keyBindingInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe KeyBindingInfo))))