2020-12-30 16:03:01 +00:00
|
|
|
package audit
|
|
|
|
|
|
|
|
import (
|
|
|
|
"crypto/tls"
|
2021-01-02 16:24:06 +00:00
|
|
|
)
|
2020-12-30 16:03:01 +00:00
|
|
|
|
2021-01-02 16:24:06 +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
|
|
|
|
}
|
|
|
|
|
2021-01-02 16:24:06 +00:00
|
|
|
func NewTLSDetailsFromProto(entity *TLSDetailsEntity) *TLSDetails {
|
|
|
|
if entity == nil {
|
|
|
|
return nil
|
|
|
|
}
|
2020-12-30 16:03:01 +00:00
|
|
|
|
2021-01-02 16:24:06 +00:00
|
|
|
return &TLSDetails{
|
|
|
|
Version: entityToTls[entity.GetVersion()],
|
|
|
|
CipherSuite: cipherSuiteIDLookup(entity.GetCipherSuite()),
|
|
|
|
ServerName: entity.GetServerName(),
|
2020-12-30 16:03:01 +00:00
|
|
|
}
|
2021-01-02 16:24:06 +00:00
|
|
|
}
|
2020-12-30 16:03:01 +00:00
|
|
|
|
2021-01-02 16:24:06 +00:00
|
|
|
func (d TLSDetails) ProtoMessage() *TLSDetailsEntity {
|
2020-12-30 16:03:01 +00:00
|
|
|
return &TLSDetailsEntity{
|
2021-01-02 16:24:06 +00:00
|
|
|
Version: tlsToEntity[d.Version],
|
2020-12-30 16:03:01 +00:00
|
|
|
CipherSuite: tls.CipherSuiteName(d.CipherSuite),
|
|
|
|
ServerName: d.ServerName,
|
|
|
|
}
|
|
|
|
}
|