1
1
require 'openssl'
2
2
require 'r509/cert/validator'
3
3
require 'riak/client/beefcake/messages'
4
+ require 'riak/errors/connection_error'
4
5
5
6
module Riak
6
7
class Client
@@ -90,17 +91,17 @@ def start_tls
90
91
def validate_session
91
92
if @auth [ :verify_hostname ] &&
92
93
!OpenSSL ::SSL ::verify_certificate_identity ( riak_cert . cert , @host )
93
- raise t ( "ssl.cert_host_mismatch" )
94
+ raise TlsError . new t ( "ssl.cert_host_mismatch" )
94
95
end
95
96
96
97
unless riak_cert . valid?
97
- raise t ( "ssl.cert_not_valid" )
98
+ raise TlsError . new t ( "ssl.cert_not_valid" )
98
99
end
99
100
100
101
validator = R509 ::Cert ::Validator . new riak_cert
101
102
102
103
unless validator . validate ( ocsp : !!@auth [ :ocsp ] , crl : !!@auth [ :crl ] )
103
- raise t ( "ssl.cert_revoked" )
104
+ raise TlsError . new t ( "ssl.cert_revoked" )
104
105
end
105
106
end
106
107
@@ -131,7 +132,7 @@ def write_message(code, message='')
131
132
132
133
def read_message
133
134
header = @sock . read 5
134
- raise SocketError , "Unexpected EOF during TLS init" if header . nil?
135
+ raise TlsError . new ( t ( 'ssl.eof_during_init' ) ) if header . nil?
135
136
len , code = header . unpack 'NC'
136
137
decode = BeefcakeMessageCodes [ code ]
137
138
return decode , '' if len == 1
@@ -148,7 +149,12 @@ def expect_message(expected_code)
148
149
candidate_code , message = read_message
149
150
return message if expected_code == candidate_code
150
151
151
- raise "Wanted #{ expected_code . inspect } , got #{ candidate_code . inspect } and #{ message . inspect } "
152
+ raise TlsError . new ( t ( 'ssl.unexpected_during_init' ,
153
+ expected : expected_code . inspect ,
154
+ actual : candidate_code . inspect ,
155
+ body : message . inspect
156
+ ) )
157
+
152
158
end
153
159
end
154
160
end
0 commit comments