DoxigAlpha

decodeDer

Function parameters

Parameters

#
decoder:*der.Decoder

Type definitions in this namespace

Types

#
Element
A decoded view.
ExpectedTag
For decoding.
Any
Use sparingly.

Functions in this namespace

Functions

#

Source

Implementation

#
pub fn decodeDer(decoder: *der.Decoder) !BitString {
    const ele = try decoder.element(asn1_tag.toExpected());
    const bytes = decoder.view(ele);

    if (bytes.len < 1) return error.InvalidBitString;
    const padding = bytes[0];
    if (padding >= 8) return error.InvalidBitString;
    const right_padding: u3 = @intCast(padding);

    // DER requires that unused bits be zero.
    if (@ctz(bytes[bytes.len - 1]) < right_padding) return error.InvalidBitString;

    return BitString{ .bytes = bytes[1..], .right_padding = right_padding };
}