ChangeLog 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846
  1. 2010-05-10 Sebastien Pouliot <[email protected]>
  2. * CipherSuite.cs:
  3. * DebugHelper.cs:
  4. * RecordProtocol.cs:
  5. * SslClientStream.cs:
  6. Let them compile for Moonlight (where the files are
  7. compiled inside System.dll)
  8. 2010-04-23 Gonzalo Paniagua Javier <[email protected]>
  9. * Context.cs:
  10. * SslStreamBase.cs:
  11. * RecordProtocol.cs: differentiate a received 'CloseNotify' alert from
  12. one that we sent. Disposing the stream will try to send the
  13. 'CloseNotify' alert, if it hasn't already, and ignore any errors. This
  14. is needed for FTPS to work.
  15. 2010-03-11 Gonzalo Paniagua Javier <[email protected]>
  16. * SslStreamBase.cs:
  17. * SslClientStream.cs:
  18. * SslServerStream.cs: modify the 2.0 callback to return more info.
  19. 2010-03-01 Gonzalo Paniagua Javier <[email protected]>
  20. * HttpsClientStream.cs: use Address instead
  21. of RequestUri to get the right host name when the request is
  22. redirected.
  23. * SslStreamBase.cs:
  24. * SslClientStream.cs:
  25. * SslServerStream.cs:
  26. added a new callback for certificate validation that gets all the
  27. certificates received from the server/client. The callee should
  28. build the chain and validate it.
  29. 2009-10-20 Gonzalo Paniagua Javier <[email protected]>
  30. * ServerContext.cs:
  31. * SslServerStream.cs: add new parameter that forces sending the
  32. CertificateRequest record. Make sure we raise the client certificate
  33. validation event when it is requested or required.
  34. 2009-07-02 Gonzalo Paniagua Javier <[email protected]>
  35. * HttpsClientStream.cs: if there's only an ICertificatePolicy and no
  36. ServerCertificateValicationCallback, don't fail.
  37. 2009-07-02 Gonzalo Paniagua Javier <[email protected]>
  38. * HttpsClientStream.cs: invoke the ServerCertificateValidationCallback
  39. in the 2.0 profile. If there's a CertificatePolicy, it is run before
  40. the 2.0 callback.
  41. 2007-09-12 Sebastien Pouliot <[email protected]>
  42. * Context.cs: Clear key info memory (not just nullify). Fix bug #82819
  43. 2007-08-16 Sebastien Pouliot <[email protected]>
  44. * RecordProtocol.cs, SslStreamBase.cs: Ensure nothing (even the same
  45. thread) can confuse the record decoding code. Fix bug #82145 (LDAP)
  46. which uses several thread over a single SslClientStream instance.
  47. 2007-05-23 Gonzalo Paniagua Javier <[email protected]>
  48. * Context.cs: fix the calculation of the unix time.
  49. 2007-05-09 Sebastien Pouliot <[email protected]>
  50. * HttpsClientStream.cs: Add support for client certificates from
  51. HttpWebRequest if it uses X509Certificate2 instance (which requires
  52. using 2.0 profile) and if the private key is available.
  53. * SslStreamBase.cs: Fix warning in 2.0 because Stream now implements
  54. Dispose. Rework Close (in 2.0) to avoid infinite recursion.
  55. 2006-12-08 Sebastien Pouliot <[email protected]>
  56. * ClientSessionCache.cs: Fix cache to be really used. Original patch
  57. by Roy Versteeg. Fix bug #80175.
  58. 2006-12-08 Sebastien Pouliot <[email protected]>
  59. * ClientSessionCache.cs: Check for a new environment variable to
  60. control the cache validity period (MONO_TLS_SESSION_CACHE_TIMEOUT).
  61. Fix bug #80174.
  62. 2006-09-11 Sebastien Pouliot <[email protected]>
  63. * CipherSuite.cs: Avoid creating a CryptoStream and a MemoryStream in
  64. EncryptRecord (removing the need to do a keysetup each time). Add
  65. helper methods to write inside byte buffers. Decrypt the data in
  66. place (without allocating new memory) as the result will always be
  67. smaller than the original. Avoid TlsStream in CreatePremasterSecret
  68. method. All HMAC access are done with the Negotiating parameters.
  69. * ClientRecordProtocol.cs: Set HandshakeState to None if we receive
  70. a HelloRequest during an existing session. Remove overidden method
  71. ProcessChangeCipherSpec. Skip memory allocation if possible.
  72. * Context.cs: Add new SecurityParameters for current, negotiating,
  73. read and write (actually only two different instance exists). Change
  74. readSequenceNumber and writeSequenceNumber to ulong to match specs.
  75. Remove all properties that are moved/replaced with SecurityParameters.
  76. Added methods to Start and End a switch of the security parameters.
  77. * RecordProtocol.cs: Add code to ProcessChangeCipherSpec (not abstract
  78. anymore). Remove ReadShort and it's use. Deal with null alerts in
  79. SendAlert method (internal error). Change code to deal with
  80. SendChangeCipherSpec inside an existing (encrypted) session. Update
  81. Cipher to use the correct one (mostly Read.Cipher or Negotiating.Cipher
  82. for ProcessCipherSpecV2Buffer method).
  83. * SecurityParameters.cs: New. Deal with all parameters that changes
  84. between negotiations.
  85. * ServerRecordProtocol.cs: Remove method ProcessChangeCipherSpec.
  86. * SslCipherSuite.cs: Don't use TlsStream when computing MAC. Set the
  87. MAC keys to the Negotiating security parameters.
  88. * SslClientStream.cs: Change calls from Cipher to Negotiating.Cipher.
  89. * SslServerStream.cs: Change calls from Cipher to Negotiating.Cipher.
  90. Remove debugging dead code (DateTime).
  91. * SslStreamBase.cs: Change calls from Cipher to Current.Cipher. Reuse
  92. existing memory buffer.
  93. * TlsCipherSuite.cs: Don't use TlsStream when computing MAC. Set the
  94. MAC keys to the Negotiating security parameters.
  95. * TlsClientSettings.cs: Comment code cause compiler warnings.
  96. * TlsStream.cs: Avoid/reduce memory allocations when reading or
  97. writing small integer values to the stream.
  98. 2006-09-07 Sebastien Pouliot <[email protected]>
  99. * HttpsClientStream.cs: Honor ServicePointManager.SecurityProtocol to
  100. select between SSL3, TLS1 or, by default, auto. Great for testing :)
  101. 2006-06-08 Sebastien Pouliot <[email protected]>
  102. * ClientRecordProtocol.cs: Avoid a NRE when the server request a
  103. re-negotiation of the security parameters. Possible fix for #78597.
  104. 2006-04-21 Sebastien Pouliot <[email protected]>
  105. * SslCipherSuite.cs: Enable abbreviated handshakes for SSL3 too.
  106. 2006-04-12 Sebastien Pouliot <[email protected]>
  107. * ClientSessionCache.cs: Deal with empty (null) master secret, that
  108. can find their ways into the cache, and treat them as invalid. Fix
  109. bug #78085.
  110. 2006-04-10 Sebastien Pouliot <[email protected]>
  111. * ClientSessionCache.cs: The session id can be zero-length (like our
  112. own server class).
  113. * SslServerStream.cs: Adapt code to fixes made in cipher suite and
  114. message processing changes in client code.
  115. 2006-03-16 Sebastien Pouliot <[email protected]>
  116. * CipherSuiteFactory.cs: Fix bad key exchange values for non-export
  117. cihpers. Most certificates have "too much" usages by default so this
  118. was hidden from view.
  119. * SslStreamBase.cs: Safety net. Throw an exception if we're waiting
  120. for more than five (5) minutes for an async read or write to complete.
  121. 2006-03-16 Sebastien Pouliot <[email protected]>
  122. * ClientSessionCache.cs: New. Handle a client-side session cache to
  123. enable the use of abbreviated handshake whenever possible. This will
  124. reduce the number of negotiation (a very CPU intensive process) done
  125. with the same host.
  126. * Context.cs: Add a property for AbbreviatedHandshake.
  127. * RecordProtocol.cs: Don't send Finished record from ChangeCipherSpec
  128. as this won't work if the message flow change.
  129. * SslClientStream.cs: Line endings.
  130. * SslServerStream.cs: Throw an exception if ReceiveRecord return null
  131. or an empty buffer (i.e. communication ended with client). Fix #76254.
  132. * SslStreamBase.cs: Re-add synchronous implementations for Read and
  133. Write.
  134. * TlsCipherSuite.cs: Update the client-side session cache with the
  135. mastersecret.
  136. * TlsStream.cs: Avoid possible buffer underun reading bytes (found by
  137. Gonzalo).
  138. 2006-03-08 Sebastien Pouliot <[email protected]>
  139. * SslStreamBase.cs: Re-implemented the synchronous versions of Read
  140. and Write methods so they don't use the async code.
  141. 2006-03-07 Gonzalo Paniagua Javier <[email protected]>
  142. * SslStreamBase.cs: avoid creating the ManualResetEvent whenever
  143. possible. Don't lock on an instance of an object that the user can get.
  144. 2006-03-06 Gonzalo Paniagua Javier <[email protected]>
  145. * RecordProtocol.cs: avoid creating the ManualResetEvent whenever
  146. possible. Don't lock on an instance of an object that the user can get.
  147. 2006-03-02 Sebastien Pouliot <[email protected]>
  148. * RecordProtocol.cs: Fix possible endless loop (#77663). Remove hack
  149. for an old, fixed, MCS bug (#67711).
  150. 2005-10-06 Sebastien Pouliot <[email protected]>
  151. * ClientRecordProtocol.cs: Update HandshakeMessages after each
  152. message. Fix bug #76258.
  153. * RecordProtocol.cs: Remove writing into the HandshakeMessages stream
  154. at this stage. We may need the data before that. Fix bug #76258.
  155. * ServerRecordProtocol.cs: Update HandshakeMessages after each
  156. message. Fix bug #76258.
  157. * SslServerStream.cs: Changed check for the presence of client
  158. certificates during handshake.
  159. 2005-09-02 Sebastien Pouliot <[email protected]>
  160. * SslStreamBase.cs, ServerRecordProtocol.cs, SslClientStream.cs,
  161. ClientRecordProtocol.cs, RecordProtocol.cs, SslServerStream.cs:
  162. Re-written async support for Ssl[Client|Server]Stream from JD Conley
  163. <[email protected]> with minor changes. Fix bug #75687 (and a
  164. lot of other known problems).
  165. 2005-07-01 Sebastien Pouliot <[email protected]>
  166. * ServerContext.cs: Build the list of trusted certificates from all
  167. the trusted root for the current user and the local machine.
  168. * SslServerStream.cs: Add support for client certificate (and the
  169. callback for optional mutual authentication with SSL3).
  170. 2005-06-22 Sebastien Pouliot <[email protected]>
  171. * SslClientStream.cs: Removed failsafe timeout of 5 minutes as some
  172. protocols can go idle for longer than this.
  173. 2005-06-14 Sebastien Pouliot <[email protected]>
  174. * SslClientStream.cs: Add support for _optional_ mutual authentication.
  175. SSL3 and TLS1 deals differently with this. SSL3 tested with OpenSSL,
  176. TSL1 tested with OpenSSL and LDAPS/AD.
  177. 2005-06-06 Sebastien Pouliot <[email protected]>
  178. * Alert.cs: Add NoCertificate (41) which _should_ be used in SSL3
  179. if we don't want to send a certificate when requested by a server
  180. (e.g. in the case the mutual authentication is optional).
  181. * CipherSuite.cs: Fixed recursive property. Changed type to short so
  182. it can hold 256 bits (valid value). Fixed ctor so it doesn't assign
  183. the it's own value.
  184. 2005-05-13 Sebastien Pouliot <[email protected]>
  185. * SslClientStream.cs: Forgot to set the event in the previous fix.
  186. 2005-05-10 Gonzalo Paniagua Javier <[email protected]>
  187. * SslClientStream.cs: check for the dispose in NetworkReadCallback.
  188. Patch by Sebastien "Cryptoman" Pouliot.
  189. 2005-04-14 Gonzalo Paniagua Javier <[email protected]>
  190. * SslClientStream.cs: gotta call EndInvoke, not EndRead.
  191. 2005-04-14 Gonzalo Paniagua Javier <[email protected]>
  192. * SslClientStream.cs: MemoryStream does not implement proper Begin*
  193. methods, so we need this to prevent infinite recursion if we have a
  194. callback that calls BeginRead.
  195. 2005-04-13 Sebastien Pouliot <[email protected]>
  196. * RecordProtocol.cs: Some API changes so a record can be decoded from
  197. any supplied stream (not just the inner network stream).
  198. * SslClientStream.cs: BeginRead is now truly async if the Negotiate is
  199. called from BeginWrite (where it should be in most case).
  200. * SslServerStream.cs: Adapted to API changes in RecordProtocol.cs.
  201. 2005-04-12 Sebastien Pouliot <[email protected]>
  202. * SslHandshakeHash.cs: Changed "SslHash" to "MD5SHA1". Fix #71696.
  203. 2005-04-10 Sebastien Pouliot <[email protected]>
  204. * HttpsClientStream.cs: Added a TrustFailure property so a
  205. WebException can now report TrustFailure correctly. Fix bug 74286.
  206. 2005-04-07 Sebastien Pouliot <[email protected]>
  207. * SslCipherSuite.cs: Fix calculation (sequence number) for the server
  208. side stream. Patch by Brian Ritchie.
  209. 2005-02-04 Sebastien Pouliot <[email protected]>
  210. * Reverting last changes in SslClientStream and RecordProtocol. This
  211. break when sending large files back and forth (echo test).
  212. 2005-02-02 Sebastien Pouliot <[email protected]>
  213. * SslClientStream.cs: Throw exception when we receive a null record.
  214. * RecordProtocol.cs: Added code to avoid blocking and endless loops
  215. if the data is incomplete or missing - even in the case the server
  216. side doesn't close the connection (see new cutcli tool).
  217. 2004-12-15 Sebastien Pouliot <[email protected]>
  218. * CipherSuite.cs: Removed unused MD5 and SHA1 instances created in
  219. PRF method (fix compilation warnings).
  220. 2004-12-13 Sebastien Pouliot <[email protected]>
  221. * SslClientStream.cs: New internal property, ServerCertificates, to
  222. "easily" retreive the server's certificate chain using reflection.
  223. 2004-11-23 Sebastien Pouliot <[email protected]>
  224. * RecordProtocol.cs: Fixed ClientHelloV2 support.
  225. 2004-11-10 Sebastien Pouliot <[email protected]>
  226. * CipherSuiteFactory.cs: Activated RSA_WITH_AES_256_CBC_SHA as it is
  227. supported by some browsers.
  228. * ContentType.cs: Removed ClientHelloV2 from the enum as it is not a
  229. "true" content type (it just looks so where we're processing it).
  230. * Context.cs: Added support to switch protocol (e.g. SSL2->SSL3 or
  231. SSL2->TLS1). Contributed by Carlos Guzman Alvarez.
  232. * RecordProtocol.cs: Added support for ClientHelloV2 message
  233. (contributed by Carlos Guzman Alvarez). This is a Handshake message
  234. so it must be MACed. Also fixed the challenge length because some
  235. browsers implementation don't interpret "This value must be 32." as
  236. having 32 bytes.
  237. 2004-10-05 Sebastien Pouliot <[email protected]>
  238. * SslClientStream.cs: Changed InputBuffer to internal (was protected).
  239. 2004-10-04 Gonzalo Paniagua Javier <[email protected]>
  240. * HttpsClientStream.cs: the .ctor receives a pre-read buffer now.
  241. * SslClientStream.cs: added InputBuffer property.
  242. 2004-09-23 Sebastien Pouliot <[email protected]>
  243. * RecordProtocol.cs: Fix alert data that could leak into appplication
  244. data (e.g. when closing the SSL session).
  245. 2004-07-14 Carlos Guzman Alvarez <[email protected]>
  246. * Removed duplicate license header file from
  247. all source files.
  248. 2004-07-14 Sebastien Pouliot <[email protected]>
  249. * SslClientStream.cs: Changed lock to "new object()" and not
  250. String.Empty (as the read/write locks points becomes the same).
  251. * SslServerStream.cs: Changed lock to "new object()" and not
  252. String.Empty (as the read/write locks points becomes the same).
  253. 2004-07-14 Gonzalo Paniagua Javier <[email protected]>
  254. * HttpsClientStream.cs: get an HttpWebRequest so that we can use the
  255. ServicePoint it has. No need to get the host now.
  256. 2004-05-09 Carlos Guzman Alvarez <[email protected]>
  257. * Mono.Security.Protocol.Tls/Alert.cs:
  258. * Mono.Security.Protocol.Tls/CipherSuite.cs:
  259. * Mono.Security.Protocol.Tls/CipherSuiteCollection.cs:
  260. * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
  261. * Mono.Security.Protocol.Tls/Context.cs:
  262. * Mono.Security.Protocol.Tls/RecordProtocol.cs:
  263. * Mono.Security.Protocol.Tls/SecurityCompressionType.cs:
  264. * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:
  265. * Mono.Security.Protocol.Tls/SslServerStream.cs:
  266. * Mono.Security.Protocol.Tls/TlsClientSettings.cs:
  267. - Changes for fix FxCop Rules.
  268. - Reworked CipherSuiteCollection class.
  269. 2004-04-21 Carlos Guzman Alvarez <[email protected]>
  270. * Mono.Security.Protocol.Tls/DebugHelper.cs:
  271. - New class.
  272. * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
  273. * Mono.Security.Protocol.Tls/RecordProtocol.cs:
  274. * Mono.Security.Protocol.Tls/Context.cs:
  275. * Mono.Security.Protocol.Tls/Context.cs:
  276. * Mono.Security.Protocol.Tls/SslCipherSuite.cs:
  277. * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
  278. * Mono.Security.Protocol.Tls/SslClientStream.cs:
  279. - Added debug capabilities.
  280. * Mono.Security.Protocol.Tls/ServerContext.cs:
  281. - Added initialization of requested CertificateTypes and CA's
  282. 2004-04-16 Carlos Guzman Alvarez <[email protected]>
  283. * Mono.Security.Protocol.Tls/TlsException.cs:
  284. - Make it public until npgsql people can fix their sources.
  285. 2004-03-19 Carlos Guzman Alvarez <[email protected]>
  286. * Mono.Security.Protocol.Tls/TlsServerSettings.cs:
  287. - Added new CertificateRSA property.
  288. - Added new UpdateCertfificateRSA method.
  289. * Mono.Security.Protocol.Tls/CipherSuite.cs:
  290. - Removed CertificateRSA() method.
  291. 2004-03-19 Sebastien Pouliot <[email protected]>
  292. * CipherSuite.cs: Fixed PRF generation when secret is an odd number of
  293. bytes (section 5 in RFC2246).
  294. * CipherSuiteFactory.cs: Added algorithms RSA_EXPORT_WITH_RC4_40_MD5,
  295. RSA_EXPORT_WITH_RC2_CBC_40_MD5, RSA_EXPORT_WITH_DES40_CBC_SHA,
  296. RSA_EXPORT_WITH_RC4_56_MD5, RSA_EXPORT_WITH_RC2_CBC_56_MD5,
  297. RSA_EXPORT_WITH_DES_CBC_56_SHA and RSA_EXPORT_WITH_RC4_56_SHA to both
  298. SSL3 and TLS1 protocols.
  299. * SslCipherSuite.cs: Fixed key generation for exportable ciphers.
  300. * TlsCipherSuite.cs: Fixed key generation for exportable ciphers.
  301. 2004-03-16 Carlos Guzman Alvarez <[email protected]>
  302. * Mono.Security.Protocol.Tls/SslCipherSuite.cs:
  303. - Added changes for allow it to work as server or client.
  304. 2004-03-15 Carlos Guzman Alvarez <[email protected]>
  305. * Mono.Security.Protocol.Tls/TlsStream.cs:
  306. * Mono.Security.Protocol.Tls/CipherSuite.cs:
  307. * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
  308. * Mono.Security.Protocol.Tls/SslHandshakeHash.cs:
  309. * Mono.Security.Protocol.Tls/RecordProtocol.cs:
  310. - Use Buffer.BlockCopy instead of System.Array.Copy
  311. 2004-03-10 Carlos Guzman Alvarez <[email protected]>
  312. * Mono.Security.Protocol.Tls/Ciphersuite.cs:
  313. - Added generation of the Server encryption algorithms.
  314. - Modified encryption/decription methods for work
  315. as client or server as needed.
  316. * Mono.Security.Protocol.Tls/RecordProtocol.cs:
  317. * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
  318. * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:
  319. - Added new ProcessChangeCipherSpec method.
  320. * Mono.Security.Protocol.Tls/Context.cs:
  321. - Added new PrintBuffer method ( for debug ).
  322. * Mono.Security.Protocol.Tls/SslClientStream.cs:
  323. * Mono.Security.Protocol.Tls/SslServerStream.cs:
  324. - Callback cleanup.
  325. 2004-03-06 Carlos Guzman Alvarez <[email protected]>
  326. * Mono.Security.Protocol.Tls/SslServerStream.cs:
  327. - Initial implementation of the doHandshake method.
  328. - Added initial events implementation.
  329. * Mono.Security.Protocol.Tls/Ciphersuite.cs:
  330. * Mono.Security.Protocol.Tls/TlsCiphersuite.cs:
  331. * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
  332. * Mono.Security.Protocol.Tls/ServerRecordProtocol.cs:
  333. * Mono.Security.Protocol.Tls/SslClientStream.cs:
  334. * Mono.Security.Protocol.Tls/TlsServerSettings.cs:
  335. * Mono.Security.Protocol.Tls/TlsClientSettings.cs:
  336. * Mono.Security.Protocol.Tls/ClientContext.cs:
  337. - Changes for make use of the renamed classes and enums.
  338. * Mono.Security.Protocol.Tls/TlsContentType.cs:
  339. - Renamed to ContentType.cs ( Enum and file )
  340. * Mono.Security.Protocol.Tls/TlsCiphersuiteCollection.cs:
  341. - Renamed to CiphersuiteCollection.cs ( Class and file )
  342. * Mono.Security.Protocol.Tls/TlsCiphersuiteFactory.cs:
  343. - Renamed to CiphersuiteCollection.cs ( Class and file )
  344. * Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs:
  345. - Renamed to SslHandshakeHash.cs ( Class and file )
  346. * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
  347. - Renamed to SslCipherSuite.cs ( Class and file )
  348. 2004-02-26 Carlos Guzman Alvarez <[email protected]>
  349. * Mono.Security.Protocol.Tls/HandshakeState.cs:
  350. - New file.
  351. * Mono.Security.Protocol.Tls/SslClientStream.cs:
  352. * Mono.Security.Protocol.Tls/SslServerStream.cs:
  353. * Mono.Security.Protocol.Tls/Context.cs:
  354. * Mono.Security.Protocol.Tls/ClientContext.cs:
  355. * Mono.Security.Protocol.Tls/ClientRecordProtocol.cs:
  356. - Added changes for better handling of ClientHelloRequest messages.
  357. 2004-02-25 Sebastien Pouliot <[email protected]>
  358. * HttpsClientStream.cs: New. Internal glue class between System.dll
  359. WebConnection and SslClientStream to reduce reflection.
  360. * SslClientStream.cs: RaiseServerCertificateValidation is now virtual
  361. to allow HttpsClientStream to override it.
  362. 2004-02-24 Carlos Guzman Alvarez <[email protected]>
  363. * Mono.Security.Protocol.Tls/RecordProtocol.cs:
  364. * Mono.Security.Protocol.Tls/SslClientStream.cs:
  365. * Mono.Security.Protocol.Tls/SslServerStream.cs:
  366. - Reimplementation of TLS/SSL Alert Protocol.
  367. 2004-02-20 Carlos Guzmán Álvarez <[email protected]>
  368. * Mono.Security.Protocol.Tls.Handshake.Client/SslClientCertificate.cs:
  369. - Improved exception handling.
  370. 2004-02-18 Carlos Guzmán Álvarez <[email protected]>
  371. * Mono.Security.Protocol.Tls/CipherAlgorithmType.cs:
  372. * Mono.Security.Protocol.Tls/HashAlgorithmType.cs:
  373. * Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs:
  374. - Added Serializable attribute.
  375. * Mono.Security.Protocol.Tls/CipherSuite.cs:
  376. * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
  377. * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
  378. * Mono.Security.Protocol.Tls/TlsContext.cs:
  379. - Added some optimizations proposed by Sebastien Pouliot.
  380. * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
  381. - Changes on Common Name detection and certificate error handling ( Thanks to Sebastien Pouliot for his feedback ).
  382. 2004-02-18 Sebastien Pouliot <[email protected]>
  383. * SslClientStream.cs: Fixed (inverted) condition for ServerCertificate.
  384. * SecurityProtocolType.cs: Added [Serializable] to enum to match MS
  385. implementation.
  386. 2004-02-17 Carlos Guzmán Álvarez <[email protected]>
  387. * Mono.Security.Protocol.Tls/SslClientStream.cs:
  388. - Added changes to security properties for check that the handshake is finished.
  389. * Mono.Security.Protocol.Tls/SslClientStream.cs:
  390. - Added changes for bring async methods to work ( Thanks to Sebastien Pouliot )
  391. - Reworked the record fragmentation.
  392. - Fix for send the close notify alert in the Close method
  393. only if the Handshake is fully negotiated.
  394. 2004-02-16 Carlos Guzmán Álvarez <[email protected]>
  395. * Mono.Security.Protocol.Tls/TlsCipherSuiteFactory.cs:
  396. - Changed ciphersuites order of preference ( Thanks to Sebastien Pouliot for his feedback ).
  397. 2004-02-15 Carlos Guzmán Álvarez <[email protected]>
  398. * Mono.Security.Protocol.Tls/SslClientStream.cs:
  399. - Added specific control od available data for Network Streams
  400. on Read ( Thanks to Francisco Figueiredo Jr. for his feedback ).
  401. - Removed test code.
  402. 2004-02-14 Carlos Guzmán Álvarez <[email protected]>
  403. * Mono.Security.Protocol.Tls/SslClientStream.cs:
  404. - Removed test code.
  405. 2003-11-17 Carlos Guzmán Álvarez <[email protected]>
  406. * Mono.Security.Protocol.Tls/SslClientStream.cs:
  407. Removed ReadByte method, use innerStream.ReadByte() method instead.
  408. 2003-11-13 Carlos Guzmán Álvarez <[email protected]>
  409. * Added implementation of an SslClientStream class similar to the MS .NET Framework 1.2 documentation.
  410. The next files are no more needed:
  411. - TlsSession.cs
  412. - TlsNetworkStream.cs
  413. - TlsSocket.cs
  414. - TlsSessionState.cs
  415. The next files are renamed:
  416. - TlsSessionSettings.cs -> TlsClientSettings.cs
  417. - TlsSessionContext.cs -> TlsContext.cs
  418. The next files are new:
  419. - SslClientStream.cs ( the name is non definitive yet )
  420. The next files where changed to reflect the new canges:
  421. - TlsHandshakeMessage.cs
  422. - TlsClientCertificate.cs
  423. - TlsClientCertificateVerify.cs
  424. - TlsClientFinished.cs
  425. - TlsClientHello.cs
  426. - TlsClientKeyExchange.cs
  427. - TlsServerCertificate.cs
  428. - TlsServerCertificateRequest.cs
  429. - TlsServerFinished.cs
  430. - TlsServerHello.cs
  431. - TlsServerHelloDone.cs
  432. - TlsServerKeyExchange.cs
  433. - TlsAlert.cs
  434. - TlsCloseNotifyAlert.cs
  435. 2003-11-12 Carlos Guzmán Álvarez <[email protected]>
  436. * Mono.Security.Protocol.Tls.Alerts/TlsAlert.cs:
  437. - Changes for give full error message only in debug mode ( Thanks to Sebastién Pouliot. )
  438. * Mono.Security.Protocol.Tls/TlsProtocol.cs:
  439. - Renamed to SecurityProtocolType.cs ( for match .NET 1.2 )
  440. * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
  441. - Renamed to MD5SHA1.cs ( Thanks to Sebastién Pouliot. )
  442. * Mono.Security.Cryptography/TlsCompressionMethod.cs:
  443. - Renamed to SecurityCompressionType.
  444. * Mono.Security.Protocol.Tls/CipherAlgorithmType.cs:
  445. * Mono.Security.Protocol.Tls/HashAlgorithmType.cs:
  446. * Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs:
  447. - New enumerations that matches .NET 1.2 definitions with some minor differences.
  448. * Mono.Security.Protocol.Tls/CipherSuite.cs:
  449. * Mono.Security.Protocol.Tls/TlsCipherSuite.cs:
  450. * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
  451. * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
  452. - Added changes for make use of new enumerations.
  453. * Mono.Security.Protocol.Tls/TlsClientStream.cs:
  454. - Added new informative properties that matches .NET 1.2 SslClientStream
  455. ( Not all the properties are implemented yet ).
  456. 2003-11-10 Carlos Guzmán Álvarez <[email protected]>
  457. * Mono.Security.Protocol.Tls.Alerts/TlsAlert.cs:
  458. - Fixed invalid alert message.
  459. * Mono.Security.Protocol.Tls/CipherSuite.cs:
  460. * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
  461. * Mono.Security.Cryptography/HMAC.cs:
  462. * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
  463. * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
  464. - Changed ( Thanks to Sebastién Pouliot for his feedback )
  465. SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
  466. MD5CryptoServiceProvider sha = new MD5CryptoServiceProvider();
  467. to
  468. HashAlgorithm sha = SHA1.Create();
  469. HashAlgorithm md5 = MD5.Create();
  470. 2003-11-04 Carlos Guzmán Álvarez <[email protected]>
  471. * Mono.Security.Protocol.Tls/CipherSuite.cs:
  472. - Added custom padding for record encryption.
  473. 2003-11-03 Carlos Guzmán Álvarez <[email protected]>
  474. * Mono.Security.Protocol.Tls.Handshake/TlsHandshakeMessages.cs:
  475. - Removed file.
  476. * Mono.Security.Protocol.Tls/TlsSslHandshakeHash.cs:
  477. - New class for handshake hashes calculation on SSL3 protocol.
  478. * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
  479. - Fixed mac keys clearing for SSL3 protocol.
  480. * Mono.Security.Protocol.Tls/TlsSslCipherSuite.cs:
  481. * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs:
  482. - Added changes for make use of new TlsSslHandshakeHash class.
  483. * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:
  484. - Added initial implementation for SSL3 protocol.
  485. * Mono.Security.Cryptography/MD5SHA1CryptoServiceProvider.cs:
  486. - New class for md5-sha hash calculation.
  487. * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs:
  488. * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs:
  489. * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
  490. * Mono.Security.Protocol.Tls.Handshake.Client/TlsHandshakeMessage.cs:
  491. - Make use of new MD5SHA1CryptoServiceProvider class.
  492. * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
  493. - Added initial implementation (not finished).
  494. * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
  495. - Minor change to message processing.
  496. - Changed verify method name to verifySignature.
  497. * Mono.Security.Protocol.Tls/TlsSessionContext.cs:
  498. - Changed handshakeHashes member to be an TlsStream.
  499. 2003-10-28 Carlos Guzmán Álvarez <[email protected]>
  500. * Mono.Security.Protocol.Tls/CipherSuite.cs:
  501. * Mono.Security.Protocol.Tls/TlsSessionSettings.cs:
  502. * Mono.Security.Protocol.Tls/TlsServerSettings.cs:
  503. * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs:
  504. * Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs:
  505. * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs:
  506. * Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs:
  507. - Added changes for make use of X509 classes from mono.
  508. 2003-10-23 Carlos Guzmán Álvarez <[email protected]>
  509. * Added partial implementation of SSL3 protocol ( not finished yet ).
  510. * TlsAbstractCipherSuite.cs: Renamed to CipherSuite.cs.
  511. * Removed AssemblyInfo.cs file.
  512. 2003-10-21 Carlos Guzmán Álvarez <[email protected]>
  513. TlsCipherSuiteFactory.cs: Changed names of private methods.
  514. TlsSslCipherSuite.cs: Replaced implementations of key generation methods with a throw new NotSupportedException().
  515. 2003-10-20 Carlos Guzmán Álvarez <[email protected]>
  516. TlsCupherSuite.cs: Fixed padding length calculation on record encryption.
  517. TlsSessionContext.cs: Added new CompressionMethod property.
  518. Added new MAX_FRAGMENT_SIZE constant.
  519. TlsSession.cs: Removed MaxFragmentSize property.
  520. TlsSocket.cs: Replaced use of TlsSesison.MaxFragmentSize by TlsSessionContext.MAX_FAGMENT_SIZE
  521. TlsSessionSettings.cs: Added new CompressionMethod property.
  522. * Abstracted CipherSuite classes for allow work with other protocol versions.
  523. * Added new files :
  524. TlsAbstractCipherSuite.cs
  525. TlsSslCipherSuite.cs
  526. TlsCipherSuiteFactory.cs
  527. TlsCompressionMethod.cs
  528. * Added new cipher suites definitions based on RFC3268 - (http://www.ietf.org/rfc/rfc3268.txt)
  529. * Added two new supported ciphersuites for TLS protocol:
  530. TLS_RSA_WITH_AES_256_CBC_SHA
  531. TLS_RSA_WITH_AES_128_CBC_SHA
  532. * Moved key generation stuff to specific cipher suite classes.
  533. 2003-10-20 Pedro Martínez Juliá <[email protected]>
  534. * AssemblyInfo.cs: commented out KeyFile reference.
  535. * TlsSession.cs: changed Math.Pow for System.Math.Pow because of MCS
  536. bug with namespace resolving.