Skip to content

Commit a7122b7

Browse files
authored
std.crypto: add constant-time codecs (#23420)
std.crypto: add constant-time codecs Add constant-time hex/base64 codecs designed to process cryptographic secrets, adapted from libsodium's implementations. Introduce a `crypto.codecs` namespace for crypto-related encoders and decoders. Move ASN.1 codecs to this namespace. This will also naturally accommodate the proposed PEM codecs.
1 parent 9352f37 commit a7122b7

File tree

13 files changed

+471
-2
lines changed

13 files changed

+471
-2
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ langref.html.in text eol=lf
55
lib/std/compress/testdata/** binary
66
lib/std/compress/deflate/testdata/** binary
77
lib/std/compress/flate/testdata/** binary
8+
lib/std/crypto/codecs/asn1/der/testdata/** binary
89

910
lib/include/** linguist-vendored
1011
lib/libc/** linguist-vendored

lib/std/crypto.zig

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,15 @@ pub const ff = @import("crypto/ff.zig");
214214
/// This is a thread-local, cryptographically secure pseudo random number generator.
215215
pub const random = @import("crypto/tlcsprng.zig").interface;
216216

217+
/// Encoding and decoding
218+
pub const codecs = @import("crypto/codecs.zig");
219+
217220
const std = @import("std.zig");
218221

219222
pub const errors = @import("crypto/errors.zig");
220223

221224
pub const tls = @import("crypto/tls.zig");
222225
pub const Certificate = @import("crypto/Certificate.zig");
223-
pub const asn1 = @import("crypto/asn1.zig");
224226

225227
/// Side-channels mitigations.
226228
pub const SideChannelsMitigations = enum {
@@ -335,7 +337,7 @@ test {
335337
_ = errors;
336338
_ = tls;
337339
_ = Certificate;
338-
_ = asn1;
340+
_ = codecs;
339341
}
340342

341343
test "CSPRNG" {

lib/std/crypto/codecs.zig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
pub const asn1 = @import("codecs/asn1.zig");
2+
pub const Base64 = @import("codecs/base64_hex_ct.zig").Base64;
3+
pub const Hex = @import("codecs/base64_hex_ct.zig").Hex;
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)