Module X509.ExtensionSource
X.509v3 extensions
type key_usage = [ | `Digital_signature| `Content_commitment| `Key_encipherment| `Data_encipherment| `Key_agreement| `Key_cert_sign| `CRL_sign| `Encipher_only| `Decipher_only
]The polymorphic variant of key usages.
type extended_key_usage = [ | `Any| `Server_auth| `Client_auth| `Code_signing| `Email_protection| `Ipsec_end| `Ipsec_tunnel| `Ipsec_user| `Time_stamping| `Ocsp_signing| `Other of Asn.oid
]The polymorphic variant of extended key usages.
type authority_key_id = string option * X509.General_name.t * string optionThe authority key identifier, as present in the Authority Key Identifier extension.
The private key usage period, as defined in RFC 3280.
type name_constraint = (X509.General_name.b * int * int option) listName constraints, as defined in RFC 5280.
Certificate policies, the policy extension.
type reason = [ | `Unspecified| `Key_compromise| `CA_compromise| `Affiliation_changed| `Superseded| `Cessation_of_operation| `Certificate_hold| `Remove_from_CRL| `Privilege_withdrawn| `AA_compromise
]Type of revocation reasons for a given distribution point.
type distribution_point_name = [ | `Full of X509.General_name.t| `Relative of X509.Distinguished_name.t
]Distribution point name, either a full one using general names, or a relative one using a distinguished name.
type distribution_point =
X509.Extension.distribution_point_name option
* X509.Extension.reason list option
* X509.General_name.t optionDistribution point, consisting of an optional name, an optional list of allowed reasons, and an optional issuer.
type _ k = | Unsupported : Asn.oid -> string X509.Extension.extension X509.Extension.k| Subject_alt_name : X509.General_name.t X509.Extension.extension X509.Extension.k| Authority_key_id : X509.Extension.authority_key_id X509.Extension.extension X509.Extension.k| Subject_key_id : string X509.Extension.extension X509.Extension.k| Issuer_alt_name : X509.General_name.t X509.Extension.extension X509.Extension.k| Key_usage : X509.Extension.key_usage list X509.Extension.extension X509.Extension.k| Ext_key_usage : X509.Extension.extended_key_usage list X509.Extension.extension X509.Extension.k| Basic_constraints : (bool * int option) X509.Extension.extension X509.Extension.k| CRL_number : int X509.Extension.extension X509.Extension.k| Delta_CRL_indicator : int X509.Extension.extension X509.Extension.k| Priv_key_period : X509.Extension.priv_key_usage_period X509.Extension.extension X509.Extension.k| Name_constraints : (X509.Extension.name_constraint * X509.Extension.name_constraint) X509.Extension.extension X509.Extension.k| CRL_distribution_points : X509.Extension.distribution_point list X509.Extension.extension X509.Extension.k| Issuing_distribution_point : (X509.Extension.distribution_point_name option * bool * bool * X509.Extension.reason list option * bool * bool) X509.Extension.extension X509.Extension.k| Freshest_CRL : X509.Extension.distribution_point list X509.Extension.extension X509.Extension.k| Reason : X509.Extension.reason X509.Extension.extension X509.Extension.k| Invalidity_date : Ptime.t X509.Extension.extension X509.Extension.k| Certificate_issuer : X509.General_name.t X509.Extension.extension X509.Extension.k| Policies : X509.Extension.policy list X509.Extension.extension X509.Extension.k
include Gmap.S with type 'a key = 'a X509.Extension.k
type 'a key = 'a X509.Extension.kThe type for map keys whose lookup value is 'a.
Constructors
val empty : X509.Extension.tempty is the empty map.
val singleton : 'a X509.Extension.key -> 'a -> X509.Extension.tsingleton key value creates a one-element map that contains a binding value for key.
Basic operations
val is_empty : X509.Extension.t -> boolis_empty m returns true if the map m is empty, false otherwise.
val cardinal : X509.Extension.t -> intcardinal m returns the number of bindings of the map m.
Lookup operations
val mem : 'a X509.Extension.key -> X509.Extension.t -> boolmem key m returns true if the map m contains a binding for key.
val find : 'a X509.Extension.key -> X509.Extension.t -> 'a optionfind key m returns Some v if the binding of key in m is v, or None if key is not bound m.
val get : 'a X509.Extension.key -> X509.Extension.t -> 'afind key m returns v if the binding of key in m is v.
Insertion and removal operations
val add_unless_bound :
'a X509.Extension.key ->
'a ->
X509.Extension.t ->
X509.Extension.t optionadd_unless_bound key value m returns Some m', a map containing the same bindings as m, plus a binding of key to value. Or, None if key was already bound in m.
val add : 'a X509.Extension.key -> 'a -> X509.Extension.t -> X509.Extension.tadd key value m returns a map containing the same bindings as m, plus a binding of key to value. If key was already bound in m, the previous binding disappears.
val remove : 'a X509.Extension.key -> X509.Extension.t -> X509.Extension.tremove key m returns a map containing the same bindings as m, except for key which is not bound in the returned map. If key was not bound in m, m is returned unchanged.
val update :
'a X509.Extension.key ->
('a option -> 'a option) ->
X509.Extension.t ->
X509.Extension.tupdate k f m returns a map containing the same bindings as m, except for the binding v of k. Depending the value of v, which is f (find k m), the binding of k is added, removed, or updated.
Bindings
type b = | B : 'a X509.Extension.key * 'a -> X509.Extension.b(*The type for a binding: a pair containing a key and its value.
*)
Selection of bindings
val min_binding : X509.Extension.t -> X509.Extension.b optionmin_binding m is the minimal binding in m, None if m is empty.
val max_binding : X509.Extension.t -> X509.Extension.b optionmax_binding m is the maximal binding in m, None if m is empty.
val any_binding : X509.Extension.t -> X509.Extension.b optionany_binding m is any binding in m, None if m is empty.
val bindings : X509.Extension.t -> X509.Extension.b listbindings m returns the list of all bindings in the given map m. The list is sorted with respect to the ordering over the type of the keys.
Higher-order functions
The function type for the equal operation, using a record type for "first-class" semi-explicit polymorphism.
val equal : X509.Extension.eq -> X509.Extension.t -> X509.Extension.t -> boolequal p m m' tests whether the maps m and m' are equal, that is contain equal keys and associate them with equal data. p is the equality predicate used to compare the data associated with the keys.
The function type for the map operation, using a record type for "first-class" semi-explicit polymorphism.
val map : X509.Extension.mapper -> X509.Extension.t -> X509.Extension.tmap f m returns a map with the same domain as m, where the associated binding b has been replaced by the result of the application of f to b. The bindings are passed to f in increasing order with respect to the ordering over the type of the keys.
val iter : (X509.Extension.b -> unit) -> X509.Extension.t -> unititer f m applies f to all bindings in m. The bindings are passed in increasing order with respect to the ordering over the type of keys.
val fold : (X509.Extension.b -> 'a -> 'a) -> X509.Extension.t -> 'a -> 'afold f m acc computes (f bN .. (f b1 acc)), where b1 .. bN are the bindings of m in increasing order with respect to the ordering over the type of the keys.
val for_all : (X509.Extension.b -> bool) -> X509.Extension.t -> boolfor_all p m checks if all bindings of the map m satisfy the predicate p.
val exists : (X509.Extension.b -> bool) -> X509.Extension.t -> boolexists p m checks if at least one binding of the map m satisfies p.
val filter : (X509.Extension.b -> bool) -> X509.Extension.t -> X509.Extension.tfilter p m returns the map with all the bindings in m that satisfy p.
The function type for the merge operation, using a record type for "first-class" semi-explicit polymorphism.
val merge :
X509.Extension.merger ->
X509.Extension.t ->
X509.Extension.t ->
X509.Extension.tmerge f m m' computes a map whose keys is a subset of keys of m and m'. The presence of each such binding, and the corresponding value, is determined with the function f.
The function type for the union operation, using a record type for "first-class" semi-explicit polymorphism.
val union :
X509.Extension.unionee ->
X509.Extension.t ->
X509.Extension.t ->
X509.Extension.tunion f m m' computes a map whose keys is the union of the keys of m and m'. When the same binding is defined in both maps, the function f is used to combine them.
val critical : 'a X509.Extension.key -> 'a -> boolcritical ext_key ext_value is the critical bit in ext_value.
val pp : X509.Extension.t Fmt.tpp ppf ext_map pretty-prints the extension map.
val pp' : (Asn.oid * string) Fmt.t -> X509.Extension.t Fmt.tpp' custom ppf ext_map pretty-prints the extension map using custom to print Unsupported _ extensions.