package tls12
import (
)
func [ fips140.Hash]( func() , []byte, string, []byte, int) []byte {
:= make([]byte, len()+len())
copy(, )
copy([len():], )
:= make([]byte, )
pHash(, , , )
return
}
func [ fips140.Hash]( func() , , , []byte) {
:= hmac.New(, )
.Write()
:= .Sum(nil)
for len() > 0 {
.Reset()
.Write()
.Write()
:= .Sum(nil)
:= copy(, )
= [:]
.Reset()
.Write()
= .Sum(nil)
}
}
const masterSecretLength = 48
const extendedMasterSecretLabel = "extended master secret"
func [ fips140.Hash]( func() , , []byte) []byte {
:= ()
switch any().(type) {
case *sha256.Digest:
if .Size() != 32 {
fips140.RecordNonApproved()
}
case *sha512.Digest:
if .Size() != 46 && .Size() != 64 {
fips140.RecordNonApproved()
}
default:
fips140.RecordNonApproved()
}
return PRF(, , extendedMasterSecretLabel, , masterSecretLength)
}