struct DecoderWithIgnore [src]

Fields

ignored_chars: StaticBitSet(256) = undefinedThe characters to ignore.

Members

Source

pub const DecoderWithIgnore = struct { /// The characters to ignore. ignored_chars: StaticBitSet(256) = undefined, /// Decodes a base64 string into a binary buffer. /// The output buffer must be at least `decodedLenUpperBound(encoded.len)` bytes long. pub fn decode( self: DecoderWithIgnore, bin: []u8, encoded: []const u8, comptime variant: Variant, ) error{ NoSpaceLeft, InvalidCharacter, InvalidPadding }![]const u8 { return decodeAny(bin, encoded, variant, self.ignored_chars); } /// Returns the decoded length of a base64 string, ignoring any characters in the ignore list. /// This operation does not run in constant time, but it aims to avoid leaking information about the underlying base64 string. pub fn decodedLenForSlice(decoder: DecoderWithIgnore, encoded: []const u8, variant: Variant) !usize { var b64_len = encoded.len; for (encoded) |c| { if (decoder.ignored_chars.isSet(c)) b64_len -= 1; } return base64.decodedLen(b64_len, variant); } /// Returns the maximum possible decoded size for a given input length after skipping ignored characters. pub fn decodedLenUpperBound(b64_len: usize) usize { return b64_len / 3 * 4; } }