aboutsummaryrefslogtreecommitdiff
path: root/lib/std/crypto/asn1/der/Encoder.zig
diff options
context:
space:
mode:
authorclickingbuttons <clickingbuttons@pm.me>2024-05-16 13:11:58 -0400
committerclickingbuttons <clickingbuttons@pm.me>2024-05-16 13:11:58 -0400
commit3cc17b93a9f1b8a7009a58235f77e09de2cd2536 (patch)
tree8bf0dfae080a697bdcfe30c8b1ba2dd3504e6f89 /lib/std/crypto/asn1/der/Encoder.zig
parent330d353d6e09ac1d48dedd1bfc127f81021b4b1f (diff)
downloadzig-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.zig16
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();