package asn1-combinators

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

Module Asn

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.0 — homepage

Object identifiers

type oid

ASN.1 OBJECT IDENTIFIER.

module OID : sig ... end

Object identifiers.

ASN.1 Abstract Syntax

type 'a t

Abstract syntax of values of type 'a.

module S : sig ... end

ASN.1 Abstract Syntax.

Encoding formats

type encoding
val ber : encoding

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

val der : encoding

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

Encoding and decoding

type 'a codec
exception Ambiguous_syntax
val 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.

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

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

val 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.

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

Parse errors.

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

pp_error ppf err pretty-prints err on ppf.

val decode : 'a codec -> Cstruct.t -> ('a * Cstruct.t, error) Result.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

val random : 'a t -> 'a

random asn is a random inhabitant of 'a.

OCaml

Innovation. Community. Security.