module Value: sig
.. end
type
pc =
| |
Primitive |
| |
Constructed |
type
value =
| |
Bool of bool |
| |
Integer of int_value |
| |
Enum of int_value |
| |
Real of real_value |
| |
Bitstring of bitstring_value |
| |
Octetstring of string |
| |
Null |
| |
Seq of value list |
| |
Set of value list |
| |
Tagptr of tag_class * int * pc * Netstring_tstring.tstring_polybox * int * int |
| |
Tag of tag_class * int * pc * value |
| |
ITag of tag_class * int * value |
| |
OID of int array |
| |
ROID of int array |
| |
ObjectDescriptor of string |
| |
External of value list |
| |
Embedded_PDV of value list |
| |
NumericString of string |
| |
PrintableString of string |
| |
TeletexString of string |
| |
VideotexString of string |
| |
VisibleString of string |
| |
IA5String of string |
| |
GraphicString of string |
| |
GeneralString of string |
| |
UniversalString of string |
| |
BMPString of string |
| |
UTF8String of string |
| |
CharString of string |
| |
UTCTime of time_value |
| |
GeneralizedTime of time_value |
type
tag_class =
| |
Universal |
| |
Application |
| |
Context |
| |
Private |
type
int_value
type
real_value
type
bitstring_value
type
time_value
type
time_subtype = [ `G | `U ]
val type_of_value : value -> Netasn1.Type_name.type_name option
Returns the type, or None
for Tag
, ITag
and Tagptr
Integer
val get_int_repr : int_value -> string
Get an integer as bytes
val get_int_b256 : int_value -> int array
Get an integer in base 256 notation, big endian. Negative values are
represented using two's complement (i.e. the first array element is
>= 128). The empty array means 0.
val get_int : int_value -> int
Get an integer as int
if representable, or raise Out_of_range
val get_int32 : int_value -> int32
Get an integer as int32
if representable, or raise Out_of_range
val get_int64 : int_value -> int64
Get an integer as int64
if representable, or raise Out_of_range
val int : int -> int_value
Create an int
val int32 : int32 -> int_value
Create an int
val int64 : int64 -> int_value
Create an int
val int_b256 : int array -> int_value
Create an int from a base 256 number, big endian, signed
Real
Reals are not really supported ;-(
val get_real_repr : real_value -> string
Get the byte representation of the real
Bitstring
In some contexts it is usual that trailing zero bits are truncated.
val get_bitstring_size : bitstring_value -> int
Get the number of bits
val get_bitstring_data : bitstring_value -> string
Get the data. The last byte may be partial. The order of the bits
in every byte: bit 7 (MSB) contains the first bit
val get_bitstring_bits : ?size:int -> bitstring_value -> bool array
Get the bitstring as bool array. If size
is specified the array
will have exactly this number of bits (by dropping exceeding data,
or by adding false
at the end)
val get_bitstring_repr : bitstring_value -> string
Get the representation
val bitstring_of_bits : bool array -> bitstring_value
Get the bitstring from a bool array
val bitstring_of_string : string -> int -> bitstring_value
Get the bitstring from a string and the total number of bits.
The bits are taken from the beginning of the string (MSB first).
If the string is shorter than the number of bits suggests, the
remaining bits are assumed to be zero. If the string is longer
than the number of bits suggests, the exceeding data is ignored.
val truncate_trailing_zero_bits : bitstring_value -> bitstring_value
Truncates the biggest trailing part that only consist of 0 bits
Time
Time values referring to the local time zone are not supported
val get_time_subtype : time_value -> time_subtype
Whether this is for UTCTime (`U
) or GeneralizedTime (`G
)
val get_time_repr : time_value -> string
Get the raw time string
val get_time : time_value -> Netdate.t
Get the time. Notes:
- UTCTime years are two-digit years, and
interpreted so that 0-49 is understood as 2000-2049, and 50-99
is understood as 1950-1999 (as required by X.509).
- This function is restricted to the time formats occurring in DER
(string terminates with "Z", i.e. UTC time zone)
val utctime : Netdate.t -> time_value
Create a time value for UTCTime. This function is restricted to years
between 1950 and 2049.
val gentime : digits:int -> Netdate.t -> time_value
Create a time value for GeneralizedTime. digits
is the number
of fractional (subsecond) digits
Equality
val equal : value -> value -> bool
Checks for equality. Notes:
Tag
and Tagptr
are considered different
Tagptr
is checked by comparing the equality of the substring
Set
is so far not compared as set, but as sequence (i.e. order
matters)