diff options
| author | clickingbuttons <clickingbuttons@pm.me> | 2024-05-16 13:11:58 -0400 |
|---|---|---|
| committer | clickingbuttons <clickingbuttons@pm.me> | 2024-05-16 13:11:58 -0400 |
| commit | 3cc17b93a9f1b8a7009a58235f77e09de2cd2536 (patch) | |
| tree | 8bf0dfae080a697bdcfe30c8b1ba2dd3504e6f89 /lib/std/crypto/asn1/der/Encoder.zig | |
| parent | 330d353d6e09ac1d48dedd1bfc127f81021b4b1f (diff) | |
| download | zig-3cc17b93a9f1b8a7009a58235f77e09de2cd2536.tar.gz zig-3cc17b93a9f1b8a7009a58235f77e09de2cd2536.zip | |
std.crypto.asn1: add short comments and der tests
Diffstat (limited to 'lib/std/crypto/asn1/der/Encoder.zig')
| -rw-r--r-- | lib/std/crypto/asn1/der/Encoder.zig | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/std/crypto/asn1/der/Encoder.zig b/lib/std/crypto/asn1/der/Encoder.zig index 709fbe75c6..939a1a5aa7 100644 --- a/lib/std/crypto/asn1/der/Encoder.zig +++ b/lib/std/crypto/asn1/der/Encoder.zig @@ -15,6 +15,7 @@ pub fn deinit(self: *Encoder) void { self.buffer.deinit(); } +/// Encode any value. pub fn any(self: *Encoder, val: anytype) !void { const T = @TypeOf(val); try self.anyTag(Tag.fromZig(T), val); @@ -74,17 +75,12 @@ fn anyTag(self: *Encoder, tag_: Tag, val: anytype) !void { try self.tag(merged_tag); } +/// Encode a tag. pub fn tag(self: *Encoder, tag_: Tag) !void { const t = self.mergedTag(tag_); try t.encode(self.writer()); } -pub fn tagBytes(self: *Encoder, tag_: Tag, bytes: []const u8) !void { - try self.buffer.prependSlice(bytes); - try self.length(bytes.len); - try self.tag(tag_); -} - fn mergedTag(self: *Encoder, tag_: Tag) Tag { var res = tag_; if (self.field_tag) |ft| { @@ -96,6 +92,7 @@ fn mergedTag(self: *Encoder, tag_: Tag) Tag { return res; } +/// Encode a length. pub fn length(self: *Encoder, len: usize) !void { const writer_ = self.writer(); if (len < 128) { @@ -112,6 +109,13 @@ pub fn length(self: *Encoder, len: usize) !void { return error.InvalidLength; } +/// Encode a tag and length-prefixed bytes. +pub fn tagBytes(self: *Encoder, tag_: Tag, bytes: []const u8) !void { + try self.buffer.prependSlice(bytes); + try self.length(bytes.len); + try self.tag(tag_); +} + /// Warning: This writer writes backwards. `fn print` will NOT work as expected. pub fn writer(self: *Encoder) ArrayListReverse.Writer { return self.buffer.writer(); |
