package asn1-combinators

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module AsnSource

Embed typed ASN.1 grammars in OCaml

Skip the notation part of Abstract Syntax Notation, and embed the abstract syntax directly in OCaml.

References

v0.2.6 — homepage

Object identifiers

Sourcetype oid

ASN.1 OBJECT IDENTIFIER.

module OID : sig ... end

Object identifiers.

ASN.1 Abstract Syntax

Sourcetype 'a t

Abstract syntax of values of type 'a.

Sourcemodule S : sig ... end

ASN.1 Abstract Syntax.

Encoding formats

Sourcetype encoding
Sourceval ber : encoding

ber is ASN.1 Basic Encoding Rules (BER).

Sourceval der : encoding

der is ASN.1 Distinguished Encoding Rules (DER).

Encoding and decoding

Sourcetype 'a codec
Sourceexception Ambiguous_syntax
Sourceval codec : encoding -> 'a t -> 'a codec

codec enc asn represents the syntax asn encoded under the rules enc.

This function performs work up-front, and is generally expected to be called in the static context on statically known syntaxes.

  • raises Ambiguous_syntax

    if asn contains CHOICE constructs over sub-syntaxes with the same tags.

Sourceval encode : 'a codec -> 'a -> Cstruct.t

encode codec x is the encoding of x, using codec.

Sourceval encode_into : 'a codec -> 'a -> int * (Cstruct.t -> unit)

encode_into codec x is the pair (n, f), where n is the length of x encoded with codec, and f is a function that will write the encoded x to the first n bytes of the provided Cstruct.t.

Sourcetype error = [
  1. | `Parse of string
]

Parse errors.

Sourceval pp_error : Format.formatter -> error -> unit

pp_error ppf err pretty-prints err on ppf.

Sourceval decode : 'a codec -> Cstruct.t -> ('a * Cstruct.t, error) result

decode codec cs is the pair (x, cs'), where x is the result of decoding the prefix of cs with codec and cs' are the trailing bytes, or an error.

Misc

Sourceval random : 'a t -> 'a

random asn is a random inhabitant of 'a.

OCaml

Innovation. Community. Security.