1
0
go_cryptparse/funcs_reflecturi.go
2025-01-25 16:11:19 -05:00

61 lines
1.2 KiB
Go

package cryptparse
import (
`reflect`
`strconv`
)
/*
reflectUriFlat is the reflection used for a TlsUri when converting to a TlsFlat.
*/
func reflectUriFlat(s *TlsUri, tagName string) (f *TlsFlat, err error) {
var ptrVal reflect.Value
var ptrType reflect.Type
var ptrKind reflect.Kind
var n uint64
var flat TlsFlat
var sVal reflect.Value = reflect.ValueOf(s)
var sType reflect.Type = sVal.Type()
var kind reflect.Kind = sType.Kind()
var params map[tlsUriParam][]string = make(map[tlsUriParam][]string)
if s == nil {
return
}
for k, v := range params {
if tlsUriParam(k) != "" {
params[k] = v
}
}
flat = TlsFlat{
Host: s.Hostname(),
Port: nil,
SniName: nil,
SkipVerify: false,
Certs: nil,
CaFiles: nil,
CipherSuites: nil,
Curves: nil,
MinTlsProtocol: nil,
MaxTlsProtocol: nil,
}
if s.Port() != "" {
f.Port = new(uint16)
if n, err = strconv.ParseUint(s.Port(), 10, 16); err != nil {
return
}
*f.Port = uint16(n)
}
// TODO: lookup map, map[string]tlsUriParam where key is name of constant as string, and value is that corresponding value.
// Use that value to lookup in params.
f = &flat
return
}