// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package sha256 implements the SHA224 and SHA256 hash algorithms as defined // in FIPS 180-4.
package sha256 import ( ) func init() { crypto.RegisterHash(crypto.SHA224, New224) crypto.RegisterHash(crypto.SHA256, New) } // The size of a SHA256 checksum in bytes. const Size = 32 // The size of a SHA224 checksum in bytes. const Size224 = 28 // The blocksize of SHA256 and SHA224 in bytes. const BlockSize = 64 // New returns a new [hash.Hash] computing the SHA256 checksum. The Hash // also implements [encoding.BinaryMarshaler], [encoding.BinaryAppender] and // [encoding.BinaryUnmarshaler] to marshal and unmarshal the internal // state of the hash. func () hash.Hash { if boring.Enabled { return boring.NewSHA256() } return sha256.New() } // New224 returns a new [hash.Hash] computing the SHA224 checksum. The Hash // also implements [encoding.BinaryMarshaler], [encoding.BinaryAppender] and // [encoding.BinaryUnmarshaler] to marshal and unmarshal the internal // state of the hash. func () hash.Hash { if boring.Enabled { return boring.NewSHA224() } return sha256.New224() } // Sum256 returns the SHA256 checksum of the data. func ( []byte) [Size]byte { if boring.Enabled { return boring.SHA256() } := New() .Write() var [Size]byte .Sum([:0]) return } // Sum224 returns the SHA224 checksum of the data. func ( []byte) [Size224]byte { if boring.Enabled { return boring.SHA224() } := New224() .Write() var [Size224]byte .Sum([:0]) return }