Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release/3.8.0 #132

Merged
merged 8 commits into from
Sep 20, 2024
Merged

Release/3.8.0 #132

merged 8 commits into from
Sep 20, 2024

Commits on Sep 5, 2024

  1. Configuration menu
    Copy the full SHA
    8a97e1c View commit details
    Browse the repository at this point in the history

Commits on Sep 12, 2024

  1. Configuration menu
    Copy the full SHA
    5decc16 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c35df3e View commit details
    Browse the repository at this point in the history

Commits on Sep 16, 2024

  1. Proper ASN.1 Tagging (#117)

    * Completely revamped ASN.1 Tag Handling
      * Properly handle multi-byte tags
      * Introduce a new data structure `TLV.Tag` with an accompanying `TagClass` enum and a `constructed` flag to accurately represent arbitrary tags up to `ULong.MAX_VALUE`
      * Make all `tag` parameters `ULong` to reflect support for multi-byte tags
      * Remove `DERTags`
      * Revamp implicit tagging (there is still work to be done, but at least it supports CONSTRUCTED ASN.1 elements)
    * Refactor `Int.Companion.decodeFromDer()` -> `Int.Companion.decodeFromDerValue()`
    * Refactor `Long.Companion.decodeFromDer()` -> `Long.Companion.decodeFromDerValue()`
    * Introduce `ULong.toAsn1VarInt()` to encode ULongs into ASN.1 unsigned VarInts (**not to be confused with
      multi^2_base's`UVarInt`!**)
    * Introduce `decodeAsn1VarULong()` and `decodeAsn1VarUInt()` which can handle overlong inputs, as long as they start with a valid unsigned number encoding.
      * Comes in three ULong flavours:
        * `Iterator<Byte>.decodeAsn1VarULong()`
        * `Iterable<Byte>.decodeAsn1VarULong()`
        * `ByteArray.decodeAsn1VarULong()`
      * and three UInt flavours:
          * `Iterator<Byte>.decodeAsn1VarUInt()`
          * `Iterable<Byte>.decodeAsn1VarUInt()`
          * `ByteArray.decodeAsn1VarUInt()`
    JesusMcCloud authored and iaik-jheher committed Sep 16, 2024
    Configuration menu
    Copy the full SHA
    eee8ee6 View commit details
    Browse the repository at this point in the history
  2. Feature/smooth casting (closes #122) (#127)

    * convenience casting of Asn1Elements to more specific subclasses
    
    ---------
    
    Co-authored-by: Jakob Heher <jakob.heher@iaik.tugraz.at>
    JesusMcCloud and iaik-jheher authored Sep 16, 2024
    Configuration menu
    Copy the full SHA
    9464eb5 View commit details
    Browse the repository at this point in the history
  3. Fix/implicit tagging (#126)

    revamp and clean up implicit tagging. this closes #13
    JesusMcCloud authored Sep 16, 2024
    Configuration menu
    Copy the full SHA
    b8cc4a2 View commit details
    Browse the repository at this point in the history

Commits on Sep 20, 2024

  1. Feature/consistent api (#130)

    * Revamp `Asn1Element.parse()`, introducing new variants. This yields:
      * `Asn1Element.parse()` with the same semantics as before
      * `Asn1Element.parse()` alternative introduced, which takes a `ByteIterator` instead of a `ByteArray`
      * `Asn1Element.parseAll()` introduced, which consumes all bytes and returns a list of all ASN.1 elements (if parsing works)
        * Variant 1 takes a `ByteIterator`
        * Variant 2 takes a `ByteArray`
      * `Asn1Element.parseFirst()` introduced, which tries to only parse a single ASN.1 element from the input and leaves the rest untouched.
        * Variant 1 takes a `ByteIterator` and returns the element; the `ByteIterator` is advanced accordingly
        * Variant 2 takes a `ByteArray` and returns a `Pair` of `(element, remainingBytes)`
    * More consistent low-level encoding and decoding function names:
      * `encodeToAsn1Primitive` to produce an `Asn1Primitive` that can directly be DER-encoded
      * `encodeToAsn1ContentBytes` to produce the content bytes of a TLV primitive (the _V_ in TLV)
      * `decodeToXXX` to be invoked on an `Asn1Primitive` to decode a DER-encoded primitive into the target type
      * `decodeFromAsn1ContentBytes` to be invoked on the companion of the target type to decode the content bytes of a TLV primitive (the _V_ in TLV)
    * Update conventions -> Coroutines 1.0.9
    
    ---------
    
    Co-authored-by: Jakob Heher <jakob.heher@iaik.tugraz.at>
    JesusMcCloud and iaik-jheher authored Sep 20, 2024
    Configuration menu
    Copy the full SHA
    545ba31 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    2139546 View commit details
    Browse the repository at this point in the history