go_study/fabric-main/gossip/comm/crypto.go

47 lines
874 B
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package comm
import (
"context"
"github.com/hyperledger/fabric/common/util"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/peer"
)
func certHashFromRawCert(rawCert []byte) []byte {
if len(rawCert) == 0 {
return nil
}
return util.ComputeSHA256(rawCert)
}
// ExtractCertificateHash extracts the hash of the certificate from the stream
func extractCertificateHashFromContext(ctx context.Context) []byte {
pr, extracted := peer.FromContext(ctx)
if !extracted {
return nil
}
authInfo := pr.AuthInfo
if authInfo == nil {
return nil
}
tlsInfo, isTLSConn := authInfo.(credentials.TLSInfo)
if !isTLSConn {
return nil
}
certs := tlsInfo.State.PeerCertificates
if len(certs) == 0 {
return nil
}
raw := certs[0].Raw
return certHashFromRawCert(raw)
}