1// Copyright 2014 The Go Authors. All rights reserved.
 2// Use of this source code is governed by a BSD-style
 3// license that can be found in the LICENSE file.
 4
 5// Package sha3 implements the SHA-3 hash algorithms and the SHAKE extendable
 6// output functions defined in FIPS 202.
 7//
 8// Most of this package is a wrapper around the crypto/sha3 package in the
 9// standard library. The only exception is the legacy Keccak hash functions.
10package sha3
11
12import (
13	"crypto/sha3"
14	"hash"
15)
16
17// New224 creates a new SHA3-224 hash.
18// Its generic security strength is 224 bits against preimage attacks,
19// and 112 bits against collision attacks.
20//
21// It is a wrapper for the [sha3.New224] function in the standard library.
22//
23//go:fix inline
24func New224() hash.Hash {
25	return sha3.New224()
26}
27
28// New256 creates a new SHA3-256 hash.
29// Its generic security strength is 256 bits against preimage attacks,
30// and 128 bits against collision attacks.
31//
32// It is a wrapper for the [sha3.New256] function in the standard library.
33//
34//go:fix inline
35func New256() hash.Hash {
36	return sha3.New256()
37}
38
39// New384 creates a new SHA3-384 hash.
40// Its generic security strength is 384 bits against preimage attacks,
41// and 192 bits against collision attacks.
42//
43// It is a wrapper for the [sha3.New384] function in the standard library.
44//
45//go:fix inline
46func New384() hash.Hash {
47	return sha3.New384()
48}
49
50// New512 creates a new SHA3-512 hash.
51// Its generic security strength is 512 bits against preimage attacks,
52// and 256 bits against collision attacks.
53//
54// It is a wrapper for the [sha3.New512] function in the standard library.
55//
56//go:fix inline
57func New512() hash.Hash {
58	return sha3.New512()
59}
60
61// Sum224 returns the SHA3-224 digest of the data.
62//
63// It is a wrapper for the [sha3.Sum224] function in the standard library.
64//
65//go:fix inline
66func Sum224(data []byte) [28]byte {
67	return sha3.Sum224(data)
68}
69
70// Sum256 returns the SHA3-256 digest of the data.
71//
72// It is a wrapper for the [sha3.Sum256] function in the standard library.
73//
74//go:fix inline
75func Sum256(data []byte) [32]byte {
76	return sha3.Sum256(data)
77}
78
79// Sum384 returns the SHA3-384 digest of the data.
80//
81// It is a wrapper for the [sha3.Sum384] function in the standard library.
82//
83//go:fix inline
84func Sum384(data []byte) [48]byte {
85	return sha3.Sum384(data)
86}
87
88// Sum512 returns the SHA3-512 digest of the data.
89//
90// It is a wrapper for the [sha3.Sum512] function in the standard library.
91//
92//go:fix inline
93func Sum512(data []byte) [64]byte {
94	return sha3.Sum512(data)
95}