Commit graph

72 commits

Author SHA1 Message Date
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