diff options
| author | jsing <> | 2015-10-13 13:58:33 +0000 |
|---|---|---|
| committer | jsing <> | 2015-10-13 13:58:33 +0000 |
| commit | 4eaafd7b3e1eb2bc06fa36e8f69ba019d013b344 (patch) | |
| tree | ec234009d935148c3e2ccbbd60d5a54c2a29aef0 /src/regress/lib/libtls/gotls/tls.go | |
| parent | a1763a3fd369834f4c0a9597591f4cd0c8b0a0c8 (diff) | |
| download | openbsd-4eaafd7b3e1eb2bc06fa36e8f69ba019d013b344.tar.gz openbsd-4eaafd7b3e1eb2bc06fa36e8f69ba019d013b344.tar.bz2 openbsd-4eaafd7b3e1eb2bc06fa36e8f69ba019d013b344.zip | |
Add test coverage for peer certificate info and connection info.
Diffstat (limited to 'src/regress/lib/libtls/gotls/tls.go')
| -rw-r--r-- | src/regress/lib/libtls/gotls/tls.go | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/regress/lib/libtls/gotls/tls.go b/src/regress/lib/libtls/gotls/tls.go index 6dc51b8922..74c34b4064 100644 --- a/src/regress/lib/libtls/gotls/tls.go +++ b/src/regress/lib/libtls/gotls/tls.go | |||
| @@ -15,6 +15,7 @@ import "C" | |||
| 15 | import ( | 15 | import ( |
| 16 | "errors" | 16 | "errors" |
| 17 | "fmt" | 17 | "fmt" |
| 18 | "time" | ||
| 18 | "unsafe" | 19 | "unsafe" |
| 19 | ) | 20 | ) |
| 20 | 21 | ||
| @@ -115,6 +116,84 @@ func (t *TLS) Error() string { | |||
| 115 | return "" | 116 | return "" |
| 116 | } | 117 | } |
| 117 | 118 | ||
| 119 | // PeerCertProvided returns whether the peer provided a certificate. | ||
| 120 | func (t *TLS) PeerCertProvided() bool { | ||
| 121 | return C.tls_peer_cert_provided(t.ctx) == 1 | ||
| 122 | } | ||
| 123 | |||
| 124 | // PeerCertContainsName checks whether the peer certificate contains | ||
| 125 | // the specified name. | ||
| 126 | func (t *TLS) PeerCertContainsName(name string) bool { | ||
| 127 | n := C.CString(name) | ||
| 128 | defer C.free(unsafe.Pointer(n)) | ||
| 129 | return C.tls_peer_cert_contains_name(t.ctx, n) == 1 | ||
| 130 | } | ||
| 131 | |||
| 132 | // PeerCertIssuer returns the issuer of the peer certificate. | ||
| 133 | func (t *TLS) PeerCertIssuer() (string, error) { | ||
| 134 | issuer := C.tls_peer_cert_issuer(t.ctx) | ||
| 135 | if issuer == nil { | ||
| 136 | return "", errors.New("no issuer returned") | ||
| 137 | } | ||
| 138 | return C.GoString(issuer), nil | ||
| 139 | } | ||
| 140 | |||
| 141 | // PeerCertSubject returns the subject of the peer certificate. | ||
| 142 | func (t *TLS) PeerCertSubject() (string, error) { | ||
| 143 | subject := C.tls_peer_cert_subject(t.ctx) | ||
| 144 | if subject == nil { | ||
| 145 | return "", errors.New("no subject returned") | ||
| 146 | } | ||
| 147 | return C.GoString(subject), nil | ||
| 148 | } | ||
| 149 | |||
| 150 | // PeerCertHash returns a hash of the peer certificate. | ||
| 151 | func (t *TLS) PeerCertHash() (string, error) { | ||
| 152 | hash := C.tls_peer_cert_hash(t.ctx) | ||
| 153 | if hash == nil { | ||
| 154 | return "", errors.New("no hash returned") | ||
| 155 | } | ||
| 156 | return C.GoString(hash), nil | ||
| 157 | } | ||
| 158 | |||
| 159 | // PeerCertNotBefore returns the notBefore time from the peer | ||
| 160 | // certificate. | ||
| 161 | func (t *TLS) PeerCertNotBefore() (time.Time, error) { | ||
| 162 | notBefore := C.tls_peer_cert_notbefore(t.ctx) | ||
| 163 | if notBefore == -1 { | ||
| 164 | return time.Time{}, errors.New("no notBefore time returned") | ||
| 165 | } | ||
| 166 | return time.Unix(int64(notBefore), 0), nil | ||
| 167 | } | ||
| 168 | |||
| 169 | // PeerCertNotAfter returns the notAfter time from the peer | ||
| 170 | // certificate. | ||
| 171 | func (t *TLS) PeerCertNotAfter() (time.Time, error) { | ||
| 172 | notAfter := C.tls_peer_cert_notafter(t.ctx) | ||
| 173 | if notAfter == -1 { | ||
| 174 | return time.Time{}, errors.New("no notAfter time") | ||
| 175 | } | ||
| 176 | return time.Unix(int64(notAfter), 0), nil | ||
| 177 | } | ||
| 178 | |||
| 179 | // ConnVersion returns the protocol version of the connection. | ||
| 180 | func (t *TLS) ConnVersion() (string, error) { | ||
| 181 | ver := C.tls_conn_version(t.ctx) | ||
| 182 | if ver == nil { | ||
| 183 | return "", errors.New("no connection version") | ||
| 184 | } | ||
| 185 | return C.GoString(ver), nil | ||
| 186 | } | ||
| 187 | |||
| 188 | // ConnCipher returns the cipher suite used for the connection. | ||
| 189 | func (t *TLS) ConnCipher() (string, error) { | ||
| 190 | cipher := C.tls_conn_cipher(t.ctx) | ||
| 191 | if cipher == nil { | ||
| 192 | return "", errors.New("no connection cipher") | ||
| 193 | } | ||
| 194 | return C.GoString(cipher), nil | ||
| 195 | } | ||
| 196 | |||
| 118 | // Connect attempts to establish an TLS connection to the specified host on | 197 | // Connect attempts to establish an TLS connection to the specified host on |
| 119 | // the given port. The host may optionally contain a colon separated port | 198 | // the given port. The host may optionally contain a colon separated port |
| 120 | // value if the port string is specified as an empty string. | 199 | // value if the port string is specified as an empty string. |
