| ... | @@ -80,6 +80,11 @@ pub const Sha1 = struct { | ... | @@ -80,6 +80,11 @@ pub const Sha1 = struct { |
| 80 | d.total_len += b.len; | 80 | d.total_len += b.len; |
| 81 | } | 81 | } |
| 82 | | 82 | |
| | 83 | pub fn peek(d: Self) [digest_length]u8 { |
| | 84 | var copy = d; |
| | 85 | return copy.finalResult(); |
| | 86 | } |
| | 87 | |
| 83 | pub fn final(d: *Self, out: *[digest_length]u8) void { | 88 | pub fn final(d: *Self, out: *[digest_length]u8) void { |
| 84 | // The buffer here will never be completely full. | 89 | // The buffer here will never be completely full. |
| 85 | @memset(d.buf[d.buf_len..], 0); | 90 | @memset(d.buf[d.buf_len..], 0); |
| ... | @@ -110,6 +115,12 @@ pub const Sha1 = struct { | ... | @@ -110,6 +115,12 @@ pub const Sha1 = struct { |
| 110 | } | 115 | } |
| 111 | } | 116 | } |
| 112 | | 117 | |
| | 118 | pub fn finalResult(d: *Self) [digest_length]u8 { |
| | 119 | var result: [digest_length]u8 = undefined; |
| | 120 | d.final(&result); |
| | 121 | return result; |
| | 122 | } |
| | 123 | |
| 113 | fn round(d: *Self, b: *const [64]u8) void { | 124 | fn round(d: *Self, b: *const [64]u8) void { |
| 114 | var s: [16]u32 = undefined; | 125 | var s: [16]u32 = undefined; |
| 115 | | 126 | |