Repository navigation
Releases: boxtheta/asnkit
Releases · boxtheta/asnkit
Release list
asnkit 1.2.0
Immutable
release. Only release title and notes can be modified.
Deprecated
- The dictionaries of specifications in the runtime for Python:
asnkitrt.runtime.load_dict()andasnkitrt.syntax.from_dict(),
to_dict(),compiled_from_dict()andcompiled_to_dict(). They
warn with aDeprecationWarning, and are removed in 2.0. Load an
.asnifile or a compiled specification withasnkitrt.load(), and
read the nodes of a syntax tree or a compiled specification instead.
asnkit 1.1.0
Immutable
release. Only release title and notes can be modified.
Added
asnkitcc convert, which decodes a value with one codec and encodes
it with another, as JER to DER, with an.asnifile or ASN.1 files
it compiles first.asnkitccnow depends on the runtimeasnkitrt.- The compiler for browsers and Node.js, as WebAssembly, in
packages/asnkit-compiler-wasm: it compiles and parses the text of a
specification, and signs, encrypts, binds and gives a nonce as
asnkitccdoes. It is on npm asasnkit-compiler. - The runtime for C, in
packages/asnkitrt-c: the Rust runtime as a
shared and a static library, with the headerasnkitrt.h. It is
built from source.
Changed
-
asnkit-compilerbuilds forwasm32-unknown-unknown, where it has no
moduleplugin, as WebAssembly runs no programs.aes-gcmis used
without its default features, which the compiler did not use. -
The option
embedof the pluginsasnkit-gen-pythonand
asnkit-gen-rust: withembed=false, the module made does not have
the compiled specification in it, and is given one that is loaded
from a file, as one that is signed, encrypted, bound or has a nonce.
The module of Python then hasuse_asni().
Fixed
- XER, in every runtime: a BOOLEAN is read only as
<true/>or
<false/>, and anything else is an error, where it was read as false.
An OCTET STRING with an odd number of hexadecimal digits is ended by a
zero (X.680 22.3), so<A>123</A>is12 30, where it was01 23.
A BIT STRING and an OCTET STRING may have space in them (X.680 12.10,
12.12), and the runtime for Python no longer takes0b,_or+in
a BIT STRING. A carriage return in a string is written , as one
written as it is is read as a line feed. - The playground no longer tells a byte offset for an error in JER or
XER, which the runtimes do not give.
asnkit 1.0.1
What the runtimes write and read now follows the standards where it
did not. Values that were encoded otherwise before are listed below.
The WebAssembly runtime 1.0.0 on npm was made after these changes, and
already has them.
Fixed
GeneralizedTime: a time with a fraction of a second and a second of
0 is written with its seconds, as a fraction after the minute is one
of a minute (X.680 46.3). A decoder reads a fraction of a minute or of
an hour, a time with no minute, an offset of hours only and a
fraction of any number of digits, rounded down to the microsecond.- JER: minus zero is the string
"-0", and is read as minus zero
(X.697 23.2). AnENUMERATEDis always written as its name, also
when the runtime gives numbers (X.697 22). ABIT STRINGis written
with the bytes of its bits only, the bits past them 0, and with named
bits made the size of a fixed size (X.697 24.2). - XER: a control character in a string is an empty element, as
<bel/>, and is read back (X.680 12.15.5). TIME-OF-DAYandDATE-TIME: a value with a fraction of a second or
an offset is rejected when encoding, as these types have neither
(X.680 38.4). The WebAssembly runtime takes aDatefor them as its
time in UTC with no offset.- A default of a
SEQUENCE, aSET, aCHOICE, aSEQUENCE OFor a
SET OFhas the values of its members and items as their own types.
The Rust runtime left out a member of anOCTET STRINGor aBIT STRINGin one.
Changed
- The WebAssembly runtime gives values to and takes them from the
WebAssembly in one buffer, which encodes and decodes about twice as
fast. An object is read by its own enumerable properties. - The specification of the formats tells more of what a runtime needs:
the values of the fields of the nodes, the limits of the CBOR, how a
signature is verified, and what BER, JER and XER write where the
standards let them choose.