| ... | ... | @@ -77,7 +77,10 @@ const Sha256Params = Sha2Params32{ |
| 77 | 77 | .out_len = 256, |
| 78 | 78 | }; |
| 79 | 79 | |
| 80 | /// SHA-224 |
| 80 | 81 | pub const Sha224 = Sha2_32(Sha224Params); |
| 82 | |
| 83 | /// SHA-256 |
| 81 | 84 | pub const Sha256 = Sha2_32(Sha256Params); |
| 82 | 85 | |
| 83 | 86 | fn Sha2_32(comptime params: Sha2Params32) type { |
| ... | ... | @@ -421,9 +424,42 @@ const Sha512Params = Sha2Params64{ |
| 421 | 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 | 452 | pub const Sha384 = Sha2_64(Sha384Params); |
| 453 | |
| 454 | /// SHA-512 |
| 425 | 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 | 463 | fn Sha2_64(comptime params: Sha2Params64) type { |
| 428 | 464 | return struct { |
| 429 | 465 | const Self = @This(); |