Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › crypto/ › bcrypt.zig › crypt_format
crypt_format
bcrypt.crypt_format
const crypt_format = struct
File
Code
const crypt_format = struct {
pub const prefix = "$2" ;
const bcrypt_alphabet = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" .*;
const Codec = struct { Encoder : base64 .Base64Encoder , Decoder : base64 .Base64Decoder }{
.Encoder = base64 .Base64Encoder .init (bcrypt_alphabet , null ),
.Decoder = base64 .Base64Decoder .init (bcrypt_alphabet , null ),
};
fn strHashInternal (
password : []const u8 ,
salt : *const [salt_length ]u8 ,
params : Params ,
) [hash_length ]u8 {
var dk = bcrypt (password , salt , params );
var salt_str : [salt_str_length ]u8 = undefined ;
_ = Codec .Encoder .encode (&salt_str , salt );
var ct_str : [ct_str_length ]u8 = undefined ;
_ = Codec .Encoder .encode (&ct_str , dk [0 ..]);
var s_buf : [hash_length ]u8 = undefined ;
const s = fmt .bufPrint (
s_buf [0 ..],
"{s}b${d}{d}${s}{s}" ,
.{ prefix , params .rounds_log / 10 , params .rounds_log % 10 , salt_str , ct_str },
) catch unreachable ;
debug .assert (s .len == s_buf .len );
return s_buf ;
}
}