summaryrefslogtreecommitdiff
path: root/src/regress/lib/libtls
diff options
context:
space:
mode:
authorjsing <>2017-03-07 12:52:14 +0000
committerjsing <>2017-03-07 12:52:14 +0000
commit65981caf151f1a193fa20339f56174976bfbb6ad (patch)
treefb46e88eedcca9dc7bf09b0d66fe3633ac8f4011 /src/regress/lib/libtls
parent15eae26cf80fdf64bffd0944aa6c5cd5e33f4785 (diff)
downloadopenbsd-65981caf151f1a193fa20339f56174976bfbb6ad.tar.gz
openbsd-65981caf151f1a193fa20339f56174976bfbb6ad.tar.bz2
openbsd-65981caf151f1a193fa20339f56174976bfbb6ad.zip
Add handling for errors on the TLS config and properly check/handle
failures when setting the CA file.
Diffstat (limited to 'src/regress/lib/libtls')
-rw-r--r--src/regress/lib/libtls/gotls/tls.go15
-rw-r--r--src/regress/lib/libtls/gotls/tls_test.go14
2 files changed, 23 insertions, 6 deletions
diff --git a/src/regress/lib/libtls/gotls/tls.go b/src/regress/lib/libtls/gotls/tls.go
index 4ce92eaef8..c6aab7789f 100644
--- a/src/regress/lib/libtls/gotls/tls.go
+++ b/src/regress/lib/libtls/gotls/tls.go
@@ -53,11 +53,22 @@ func NewConfig() (*TLSConfig, error) {
53 }, nil 53 }, nil
54} 54}
55 55
56// Error returns the error message from the TLS configuration.
57func (c *TLSConfig) Error() error {
58 if msg := C.tls_config_error(c.tlsCfg); msg != nil {
59 return errors.New(C.GoString(msg))
60 }
61 return errors.New("unknown error")
62}
63
56// SetCAFile sets the CA file to be used for connections. 64// SetCAFile sets the CA file to be used for connections.
57func (c *TLSConfig) SetCAFile(filename string) { 65func (c *TLSConfig) SetCAFile(filename string) error {
58 caFile := C.CString(filename) 66 caFile := C.CString(filename)
59 defer C.free(unsafe.Pointer(caFile)) 67 defer C.free(unsafe.Pointer(caFile))
60 C.tls_config_set_ca_file(c.tlsCfg, caFile) 68 if C.tls_config_set_ca_file(c.tlsCfg, caFile) != 0 {
69 return c.Error()
70 }
71 return nil
61} 72}
62 73
63// InsecureNoVerifyCert disables certificate verification for the connection. 74// InsecureNoVerifyCert disables certificate verification for the connection.
diff --git a/src/regress/lib/libtls/gotls/tls_test.go b/src/regress/lib/libtls/gotls/tls_test.go
index 3a430924a7..f48be5ddda 100644
--- a/src/regress/lib/libtls/gotls/tls_test.go
+++ b/src/regress/lib/libtls/gotls/tls_test.go
@@ -21,7 +21,7 @@ const (
21 21
22var ( 22var (
23 certNotBefore = time.Unix(0, 0) 23 certNotBefore = time.Unix(0, 0)
24 certNotAfter = certNotBefore.Add(1000000 * time.Hour) 24 certNotAfter = certNotBefore.Add(1000000 * time.Hour)
25) 25)
26 26
27// createCAFile writes a PEM encoded version of the certificate out to a 27// createCAFile writes a PEM encoded version of the certificate out to a
@@ -81,7 +81,9 @@ func TestTLSBasic(t *testing.T) {
81 t.Fatal(err) 81 t.Fatal(err)
82 } 82 }
83 defer cfg.Free() 83 defer cfg.Free()
84 cfg.SetCAFile(caFile) 84 if err := cfg.SetCAFile(caFile); err != nil {
85 t.Fatal(err)
86 }
85 87
86 tls, err := NewClient(cfg) 88 tls, err := NewClient(cfg)
87 if err != nil { 89 if err != nil {
@@ -135,7 +137,9 @@ func TestTLSSingleByteReadWrite(t *testing.T) {
135 t.Fatal(err) 137 t.Fatal(err)
136 } 138 }
137 defer cfg.Free() 139 defer cfg.Free()
138 cfg.SetCAFile(caFile) 140 if err := cfg.SetCAFile(caFile); err != nil {
141 t.Fatal(err)
142 }
139 143
140 tls, err := NewClient(cfg) 144 tls, err := NewClient(cfg)
141 if err != nil { 145 if err != nil {
@@ -202,7 +206,9 @@ func TestTLSInfo(t *testing.T) {
202 t.Fatal(err) 206 t.Fatal(err)
203 } 207 }
204 defer cfg.Free() 208 defer cfg.Free()
205 cfg.SetCAFile(caFile) 209 if err := cfg.SetCAFile(caFile); err != nil {
210 t.Fatal(err)
211 }
206 212
207 tls, err := NewClient(cfg) 213 tls, err := NewClient(cfg)
208 if err != nil { 214 if err != nil {