| ... | @@ -77,7 +77,10 @@ const Sha256Params = Sha2Params32{ | ... | @@ -77,7 +77,10 @@ const Sha256Params = Sha2Params32{ |
| 77 | .out_len = 256, | 77 | .out_len = 256, |
| 78 | }; | 78 | }; |
| 79 | | 79 | |
| | 80 | /// SHA-224 |
| 80 | pub const Sha224 = Sha2_32(Sha224Params); | 81 | pub const Sha224 = Sha2_32(Sha224Params); |
| | 82 | |
| | 83 | /// SHA-256 |
| 81 | pub const Sha256 = Sha2_32(Sha256Params); | 84 | pub const Sha256 = Sha2_32(Sha256Params); |
| 82 | | 85 | |
| 83 | fn Sha2_32(comptime params: Sha2Params32) type { | 86 | fn Sha2_32(comptime params: Sha2Params32) type { |
| ... | @@ -421,9 +424,42 @@ const Sha512Params = Sha2Params64{ | ... | @@ -421,9 +424,42 @@ const Sha512Params = Sha2Params64{ |
| 421 | .out_len = 512, | 424 | .out_len = 512, |
| 422 | }; | 425 | }; |
| 423 | | 426 | |
| | 427 | const Sha512256Params = Sha2Params64{ |
| | 428 | .iv0 = 0x22312194FC2BF72C, |
| | 429 | .iv1 = 0x9F555FA3C84C64C2, |
| | 430 | .iv2 = 0x2393B86B6F53B151, |
| | 431 | .iv3 = 0x963877195940EABD, |
| | 432 | .iv4 = 0x96283EE2A88EFFE3, |
| | 433 | .iv5 = 0xBE5E1E2553863992, |
| | 434 | .iv6 = 0x2B0199FC2C85B8AA, |
| | 435 | .iv7 = 0x0EB72DDC81C52CA2, |
| | 436 | .out_len = 256, |
| | 437 | }; |
| | 438 | |
| | 439 | const Sha512T256Params = Sha2Params64{ |
| | 440 | .iv0 = 0x6A09E667F3BCC908, |
| | 441 | .iv1 = 0xBB67AE8584CAA73B, |
| | 442 | .iv2 = 0x3C6EF372FE94F82B, |
| | 443 | .iv3 = 0xA54FF53A5F1D36F1, |
| | 444 | .iv4 = 0x510E527FADE682D1, |
| | 445 | .iv5 = 0x9B05688C2B3E6C1F, |
| | 446 | .iv6 = 0x1F83D9ABFB41BD6B, |
| | 447 | .iv7 = 0x5BE0CD19137E2179, |
| | 448 | .out_len = 256, |
| | 449 | }; |
| | 450 | |
| | 451 | /// SHA-384 |
| 424 | pub const Sha384 = Sha2_64(Sha384Params); | 452 | pub const Sha384 = Sha2_64(Sha384Params); |
| | 453 | |
| | 454 | /// SHA-512 |
| 425 | pub const Sha512 = Sha2_64(Sha512Params); | 455 | pub const Sha512 = Sha2_64(Sha512Params); |
| 426 | | 456 | |
| | 457 | /// SHA-512/256 |
| | 458 | pub const Sha512256 = Sha2_64(Sha512256Params); |
| | 459 | |
| | 460 | /// Truncated SHA-512 |
| | 461 | pub const Sha512T256 = Sha2_64(Sha512T256Params); |
| | 462 | |
| 427 | fn Sha2_64(comptime params: Sha2Params64) type { | 463 | fn Sha2_64(comptime params: Sha2Params64) type { |
| 428 | return struct { | 464 | return struct { |
| 429 | const Self = @This(); | 465 | const Self = @This(); |