api/pkg/audit/tls_details.go

57 lines
1.2 KiB
Go
Raw Normal View History

2020-12-30 16:03:01 +00:00
package audit
import (
"crypto/tls"
)
2020-12-30 16:03:01 +00:00
var (
tlsToEntity = map[uint16]TLSVersion{
tls.VersionSSL30: TLSVersion_SSLv30,
tls.VersionTLS10: TLSVersion_TLS10,
tls.VersionTLS11: TLSVersion_TLS11,
tls.VersionTLS12: TLSVersion_TLS12,
tls.VersionTLS13: TLSVersion_TLS13,
}
entityToTls = map[TLSVersion]uint16{
TLSVersion_SSLv30: tls.VersionSSL30,
TLSVersion_TLS10: tls.VersionTLS10,
TLSVersion_TLS11: tls.VersionTLS11,
TLSVersion_TLS12: tls.VersionTLS12,
TLSVersion_TLS13: tls.VersionTLS13,
}
cipherSuiteIDLookup = func(name string) uint16 {
for _, cs := range tls.CipherSuites() {
if cs.Name == name {
return cs.ID
}
}
return 0
}
2020-12-30 16:03:01 +00:00
)
type TLSDetails struct {
Version uint16
CipherSuite uint16
ServerName string
}
func NewTLSDetailsFromProto(entity *TLSDetailsEntity) *TLSDetails {
if entity == nil {
return nil
}
2020-12-30 16:03:01 +00:00
return &TLSDetails{
Version: entityToTls[entity.GetVersion()],
CipherSuite: cipherSuiteIDLookup(entity.GetCipherSuite()),
ServerName: entity.GetServerName(),
2020-12-30 16:03:01 +00:00
}
}
2020-12-30 16:03:01 +00:00
func (d TLSDetails) ProtoMessage() *TLSDetailsEntity {
2020-12-30 16:03:01 +00:00
return &TLSDetailsEntity{
Version: tlsToEntity[d.Version],
2020-12-30 16:03:01 +00:00
CipherSuite: tls.CipherSuiteName(d.CipherSuite),
ServerName: d.ServerName,
}
}