Vincent Hanquez
aa8856c68a
remove connectVersion as it should be the maximum of allowedVersions
2014-01-12 07:15:16 +00:00
Vincent Hanquez
85f436afe6
add a system to filter cipher that we can't use because we don't have the right credentials loaded.
2013-12-28 15:25:13 +00:00
Vincent Hanquez
acf9708199
use the new credentials system to be able to handle RSA and DSS certificate at the same time.
2013-12-28 15:24:20 +00:00
Vincent Hanquez
9a05ac9553
limit the X509 import list of what we need
2013-12-28 15:20:07 +00:00
Vincent Hanquez
f72293d32f
properly do DSS/RSA in DHE methods.
2013-12-28 15:19:39 +00:00
Vincent Hanquez
a111d703a4
simplify the handshake key state.
...
we don't need to differentiate client/server, as a remote key will always be public and
the private key always local.
2013-12-28 15:17:42 +00:00
Vincent Hanquez
761ba1ac5c
add support for DSS signature.
2013-12-28 15:14:09 +00:00
Vincent Hanquez
02dd7b8aa7
add support for DHE (only with RSA signing so far)
2013-12-11 16:39:25 +08:00
Vincent Hanquez
a223673eed
make HandshakeM an instance of Applicative.
2013-12-11 16:36:35 +08:00
Vincent Hanquez
2a09d51ba5
cleanup imports
2013-12-11 16:36:16 +08:00
Vincent Hanquez
64d2ba9cd7
add better methods for making DigitallySigned data structure and veryfying them
2013-12-11 16:34:45 +08:00
Vincent Hanquez
1e62ddd53f
properly account for difference of methods in key exchange.
...
still only RSA supported.
2013-12-11 16:01:07 +08:00
Vincent Hanquez
50b56ff2cf
use the new digitallySigned structure for CertVerify.
2013-12-07 14:37:14 +08:00
Vincent Hanquez
f6b4ee34ac
abstract signature creation/verification
2013-12-07 14:25:58 +08:00
Vincent Hanquez
ad37d02523
cleanup CertificateVerify signature data generation
2013-12-07 13:10:17 +08:00
Vincent Hanquez
0a032bbc27
factor some code in client certificate verify message generation.
2013-12-07 12:44:45 +08:00
Vincent Hanquez
ef92b6c96f
Fix version usage related to downgrading
...
* properly chose the highest version supported on the server, instead of
chosing the first that match.
* use the client version in the RSA client exchange instead of the negotiated version
* delay hashing mechanism to serverHello message so that choosing MD5SHA1 or SHA256
is done after the server chose the version.
2013-12-03 15:17:27 +08:00
Vincent Hanquez
c1e67f6015
add some comment about the expected values.
2013-11-29 18:45:05 +08:00
Vincent Hanquez
30fe1a8fb6
make the error message a bit more precise related to which side it happen.
2013-11-29 18:44:44 +08:00
Vincent Hanquez
9883b8644f
move single exceptions into a one type to rule them all.
...
HandshakeFailed, ConnectionNotEstablished, and Terminated are now
a TLSException type. it should allow easier catching for users.
2013-11-27 15:31:45 +08:00
Vincent Hanquez
5ff812b3fa
provide a helper for catching exception without doing a catchall.
...
As a side effect, let AsyncException propagate
2013-11-27 15:08:22 +08:00
Vincent Hanquez
5836669878
remove unnecessary MonadIO parametrization
2013-08-01 07:52:42 +00:00
Vincent Hanquez
bd0ad2169e
move handshake state out of state
2013-08-01 07:47:40 +00:00
Vincent Hanquez
896832d93d
separate state from handshake state
2013-08-01 07:43:48 +00:00
Vincent Hanquez
d69c9190b5
push down the context to key operation
2013-08-01 07:35:42 +00:00
Vincent Hanquez
64f60bb715
repair getSessionData and move to handshake layer
2013-08-01 07:32:27 +00:00
Vincent Hanquez
0b6e6ef0e3
move startHandshake in the handshake layer
2013-08-01 07:24:18 +00:00
Vincent Hanquez
e78dccb635
use HandshakeState directly without grabbing the TLSState
2013-08-01 07:12:54 +00:00
Vincent Hanquez
49ff6e933c
remove Rx state from general state.
...
move RxState as a mutable mvar in the context directly.
2013-07-30 08:58:58 +01:00
Vincent Hanquez
6ff5e692d0
remove unnecessary imports
2013-07-30 08:58:26 +01:00
Vincent Hanquez
7eaf8c316e
move more context in processHandshake
2013-07-30 06:14:09 +01:00
Vincent Hanquez
8735cbba4f
move some functions out of line of handshakeClient
2013-07-29 07:19:13 +01:00
Vincent Hanquez
4b2f07c7fa
simplify the number of usingState call by grouping stuff.
...
also remove pointless and confusing processing helper
2013-07-28 15:22:17 +01:00
Vincent Hanquez
c2aed77413
add comment for onServerHello
2013-07-28 15:07:06 +01:00
Vincent Hanquez
4b48f2042a
correct module description
2013-07-28 09:20:45 +01:00
Vincent Hanquez
a7724353f4
move handshake stuff in Handshake layer.
2013-07-28 09:19:28 +01:00
Vincent Hanquez
c252ed8f49
cleanup record layer
2013-07-27 08:32:27 +01:00
Vincent Hanquez
e2d5170af7
Separate tx/rx state from a single RecordState
...
unroll a reader/state/error monad into a single simple monad,
and move back version and client context in state.
2013-07-25 21:53:32 +01:00
Vincent Hanquez
4a337378d8
remove commented import
2013-07-24 06:40:08 +00:00
Vincent Hanquez
f59804f459
move processServerHello in Handshake
2013-07-24 05:50:56 +00:00
Vincent Hanquez
f9ae636351
move getHandshakeDigest in HandshakeM
2013-07-23 07:39:52 +00:00
Vincent Hanquez
37ef6af6e8
use more Role type instead of Bool
2013-07-23 07:14:48 +00:00
Vincent Hanquez
acc670e30e
more cleanup / separation with handshake state.
2013-07-23 07:30:13 +00:00
Vincent Hanquez
1b530dc5f4
remove getMasterSecret accessor
2013-07-23 05:51:44 +00:00
Vincent Hanquez
0728bd86d8
move setMasterSecret and setKeyBlock to the handshake layer.
2013-07-23 05:36:42 +00:00
Vincent Hanquez
0e11f63033
move pending cipher and compression in the handshake state
...
adjust code to cope
2013-07-22 07:35:53 +00:00
Vincent Hanquez
7489fdbbec
explicitly pass role and version to setMasterSecret and derivative
2013-07-22 07:54:35 +01:00
Vincent Hanquez
199de057c3
separate more handshake state from other state.
...
reorganize pending state in record state.
2013-07-20 08:21:52 +01:00
Vincent Hanquez
7ecc341af6
move more stuff in the HandshakeM
2013-07-20 07:18:16 +01:00
Vincent Hanquez
849f87c8ea
move some handshake function to HandshakeM
2013-07-19 07:47:54 +01:00