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
Vincent Hanquez
fc693ee99f
add accessor from context and state to HandshakeM
2013-07-19 07:47:33 +01:00
Vincent Hanquez
065cc4b43d
remove Error monad in handshake state.
2013-07-19 07:46:09 +01:00
Vincent Hanquez
c5d10c527c
re-align fields in handshake state stuff
2013-07-18 07:34:05 +01:00
Vincent Hanquez
8f83319fae
separate handshake state from state.
2013-07-18 07:19:05 +01:00
Vincent Hanquez
8f99c325fb
separate tx/rx compression and pending compression.
...
Fix issue with compression being turn on for tx and rx at the same time,
and also at too early at the hello message instead of change cipher.
2013-07-18 07:18:38 +01:00
Vincent Hanquez
4e86ffee28
split record state from state.
2013-07-13 08:03:25 +01:00