|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package tlshandshake
-
- import (
- "encoding/hex"
- "fmt"
- "github.com/grantae/certinfo"
- th5 "github.com/henrydcase/th5"
- )
-
- var tf = map[bool]string{
- true: "TRUE",
- false: "FALSE",
- }
-
- func toHex(b []byte) string {
- str := make([]byte, hex.EncodedLen(len(b)))
- hex.Encode(str, b[:])
- return string(str)
- }
-
- func printTlsState(con *th5.Conn) {
- state := con.ConnectionState()
- fmt.Println("| TLS-Session:")
- fmt.Println("-----------------------------------------------------------------")
- fmt.Printf("\tProtocol\t\t: %s\n", TlsVersionToName[state.Version])
- fmt.Printf("\tCipher\t\t\t: %s\n", CipherSuiteIdToName[state.CipherSuite])
- fmt.Printf("\tNegotiated Group\t: %s\n", NamedGroupsToName[uint16(state.Group)])
- fmt.Printf("\tConnection ID\t\t: %s\n", toHex(state.ConnectionID))
- fmt.Printf("\tSCTs\t\t\t: %s\n", state.SignedCertificateTimestamps)
- fmt.Printf("\tConnection resumed\t: %s\n", tf[state.DidResume])
- //fmt.Printf("\tNext protocol\t\t: %s\n", state.NegotiatedProtocol)
- fmt.Printf("\tEMS used\t\t: %s\n", tf[con.UsedEMS()])
- fmt.Printf("\tStapled OCSP response\t: %s\n", toHex(state.OCSPResponse))
-
- fmt.Println("\n| Connection:")
- fmt.Println("-----------------------------------------------------------------")
- fmt.Printf("\tLocal address\t\t: %s\n", con.LocalAddr())
- fmt.Printf("\tRemote address\t\t: %s\n", con.RemoteAddr())
-
- fmt.Println("\n| Server Certificates:")
- fmt.Println("-----------------------------------------------------------------")
- for i, cert := range state.PeerCertificates {
- fmt.Printf("Depth : %d\n", i)
- fmt.Printf("Issuer : %s\n", cert.Issuer)
- res, err := certinfo.CertificateText(cert)
- if err != nil {
- panic("Error parsing received server certificate")
- }
- fmt.Println(res)
-
- }
-
- }
|