Hunter0x7c7
2022-08-11 b8230139fb40edea387617b6accd8371e37eda58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package tls
 
import (
    "crypto/sha256"
    "encoding/base64"
    "encoding/pem"
)
 
func CalculatePEMCertChainSHA256Hash(certContent []byte) string {
    var certChain [][]byte
    for {
        block, remain := pem.Decode(certContent)
        if block == nil {
            break
        }
        certChain = append(certChain, block.Bytes)
        certContent = remain
    }
    certChainHash := GenerateCertChainHash(certChain)
    certChainHashB64 := base64.StdEncoding.EncodeToString(certChainHash)
    return certChainHashB64
}
 
func GenerateCertChainHash(rawCerts [][]byte) []byte {
    var hashValue []byte
    for _, certValue := range rawCerts {
        out := sha256.Sum256(certValue)
        if hashValue == nil {
            hashValue = out[:]
        } else {
            newHashValue := sha256.Sum256(append(hashValue, out[:]...))
            hashValue = newHashValue[:]
        }
    }
    return hashValue
}