HISTORY.066 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. SSLeay 0.6.5
  2. After quite some time (3 months), the new release. I have been very busy
  3. for the last few months and so this is mostly bug fixes and improvments.
  4. The main additions are
  5. - assember for x86 DES. For all those gcc based systems, this is a big
  6. improvement. From 117,000 DES operation a second on a pentium 100,
  7. I now get 191,000. I have also reworked the C version so it
  8. now gives 148,000 DESs per second.
  9. - As mentioned above, the inner DES macros now have some more variant that
  10. sometimes help, sometimes hinder performance. There are now 3 options
  11. DES_PTR (ptr vs array lookup), DES_UNROLL (full vs partial loop unrolling)
  12. and DES_RISC (a more register intensive version of the inner macro).
  13. The crypto/des/des_opts.c program, when compiled and run, will give
  14. an indication of the correct options to use.
  15. - The BIO stuff has been improved. Read doc/bio.doc. There are now
  16. modules for encryption and base64 encoding and a BIO_printf() function.
  17. - The CA program will accept simple one line X509v3 extensions in the
  18. ssleay.cnf file. Have a look at the example. Currently this just
  19. puts the text into the certificate as an OCTET_STRING so currently
  20. the more advanced X509v3 data types are not handled but this is enough
  21. for the netscape extensions.
  22. - There is the start of a nicer higher level interface to the X509
  23. strucutre.
  24. - Quite a lot of bug fixes.
  25. - CRYPTO_malloc_init() (or CRYPTO_set_mem_functions()) can be used
  26. to define the malloc(), free() and realloc() routines to use
  27. (look in crypto/crypto.h). This is mostly needed for Windows NT/95 when
  28. using DLLs and mixing CRT libraries.
  29. In general, read the 'VERSION' file for changes and be aware that some of
  30. the new stuff may not have been tested quite enough yet, so don't just plonk
  31. in SSLeay 0.6.5 when 0.6.4 used to work and expect nothing to break.
  32. SSLeay 0.6.4 30/08/96 eay
  33. I've just finished some test builds on Windows NT, Windows 3.1, Solaris 2.3,
  34. Solaris 2.5, Linux, IRIX, HPUX 10 and everthing seems to work :-).
  35. The main changes in this release
  36. - Thread safe. have a read of doc/threads.doc and play in the mt directory.
  37. For anyone using 0.6.3 with threads, I found 2 major errors so consider
  38. moving to 0.6.4. I have a test program that builds under NT and
  39. solaris.
  40. - The get session-id callback has changed. Have a read of doc/callback.doc.
  41. - The X509_cert_verify callback (the SSL_verify callback) now
  42. has another argument. Have a read of doc/callback.doc
  43. - 'ca -preserve', sign without re-ordering the DN. Not tested much.
  44. - VMS support.
  45. - Compile time memory leak detection can now be built into SSLeay.
  46. Read doc/memory.doc
  47. - CONF routines now understand '\', '\n', '\r' etc. What this means is that
  48. the SPKAC object mentioned in doc/ns-ca.doc can be on multiple lines.
  49. - 'ssleay ciphers' added, lists the default cipher list for SSLeay.
  50. - RC2 key setup is now compatable with Netscape.
  51. - Modifed server side of SSL implementation, big performance difference when
  52. using session-id reuse.
  53. 0.6.3
  54. Bug fixes and the addition of some nice stuff to the 'ca' program.
  55. Have a read of doc/ns-ca.doc for how hit has been modified so
  56. it can be driven from a CGI script. The CGI script is not provided,
  57. but that is just being left as an excersize for the reader :-).
  58. 0.6.2
  59. This is most bug fixes and functionality improvements.
  60. Additions are
  61. - More thread debugging patches, the thread stuff is still being
  62. tested, but for those keep to play with stuff, have a look in
  63. crypto/cryptlib.c. The application needs to define 1 (or optionaly
  64. a second) callback that is used to implement locking. Compiling
  65. with LOCK_DEBUG spits out lots of locking crud :-).
  66. This is what I'm currently working on.
  67. - SSL_CTX_set_default_passwd_cb() can be used to define the callback
  68. function used in the SSL*_file() functions used to load keys. I was
  69. always of the opinion that people should call
  70. PEM_read_RSAPrivateKey() and pass the callback they want to use, but
  71. it appears they just want to use the SSL_*_file() function() :-(.
  72. - 'enc' now has a -kfile so a key can be read from a file. This is
  73. mostly used so that the passwd does not appear when using 'ps',
  74. which appears imposible to stop under solaris.
  75. - X509v3 certificates now work correctly. I even have more examples
  76. in my tests :-). There is now a X509_EXTENSION type that is used in
  77. X509v3 certificates and CRLv2.
  78. - Fixed that signature type error :-(
  79. - Fixed quite a few potential memory leaks and problems when reusing
  80. X509, CRL and REQ structures.
  81. - EVP_set_pw_prompt() now sets the library wide default password
  82. prompt.
  83. - The 'pkcs7' command will now, given the -print_certs flag, output in
  84. pem format, all certificates and CRL contained within. This is more
  85. of a pre-emtive thing for the new verisign distribution method. I
  86. should also note, that this also gives and example in code, of how
  87. to do this :-), or for that matter, what is involved in going the
  88. other way (list of certs and crl -> pkcs7).
  89. - Added RSA's DESX to the DES library. It is also available via the
  90. EVP_desx_cbc() method and via 'enc desx'.
  91. SSLeay 0.6.1
  92. The main functional changes since 0.6.0 are as follows
  93. - Bad news, the Microsoft 060 DLL's are not compatable, but the good news is
  94. that from now on, I'll keep the .def numbers the same so they will be.
  95. - RSA private key operations are about 2 times faster that 0.6.0
  96. - The SSL_CTX now has more fields so default values can be put against
  97. it. When an SSL structure is created, these default values are used
  98. but can be overwritten. There are defaults for cipher, certificate,
  99. private key, verify mode and callback. This means SSL session
  100. creation can now be
  101. ssl=SSL_new()
  102. SSL_set_fd(ssl,sock);
  103. SSL_accept(ssl)
  104. ....
  105. All the other uglyness with having to keep a global copy of the
  106. private key and certificate/verify mode in the server is now gone.
  107. - ssl/ssltest.c - one process talking SSL to its self for testing.
  108. - Storage of Session-id's can be controled via a session_cache_mode
  109. flag. There is also now an automatic default flushing of
  110. old session-id's.
  111. - The X509_cert_verify() function now has another parameter, this
  112. should not effect most people but it now means that the reason for
  113. the failure to verify is now available via SSL_get_verify_result(ssl).
  114. You don't have to use a global variable.
  115. - SSL_get_app_data() and SSL_set_app_data() can be used to keep some
  116. application data against the SSL structure. It is upto the application
  117. to free the data. I don't use it, but it is available.
  118. - SSL_CTX_set_cert_verify_callback() can be used to specify a
  119. verify callback function that completly replaces my certificate
  120. verification code. Xcert should be able to use this :-).
  121. The callback is of the form int app_verify_callback(arg,ssl,cert).
  122. This needs to be documented more.
  123. - I have started playing with shared library builds, have a look in
  124. the shlib directory. It is very simple. If you need a numbered
  125. list of functions, have a look at misc/crypto.num and misc/ssl.num.
  126. - There is some stuff to do locking to make the library thread safe.
  127. I have only started this stuff and have not finished. If anyone is
  128. keen to do so, please send me the patches when finished.
  129. So I have finally made most of the additions to the SSL interface that
  130. I thought were needed.
  131. There will probably be a pause before I make any non-bug/documentation
  132. related changes to SSLeay since I'm feeling like a bit of a break.
  133. eric - 12 Jul 1996
  134. I saw recently a comment by some-one that we now seem to be entering
  135. the age of perpetual Beta software.
  136. Pioneered by packages like linux but refined to an art form by
  137. netscape.
  138. I too wish to join this trend with the anouncement of SSLeay 0.6.0 :-).
  139. There are quite a large number of sections that are 'works in
  140. progress' in this package. I will also list the major changes and
  141. what files you should read.
  142. BIO - this is the new IO structure being used everywhere in SSLeay. I
  143. started out developing this because of microsoft, I wanted a mechanism
  144. to callback to the application for all IO, so Windows 3.1 DLL
  145. perversion could be hidden from me and the 15 different ways to write
  146. to a file under NT would also not be dictated by me at library build
  147. time. What the 'package' is is an API for a data structure containing
  148. functions. IO interfaces can be written to conform to the
  149. specification. This in not intended to hide the underlying data type
  150. from the application, but to hide it from SSLeay :-).
  151. I have only really finished testing the FILE * and socket/fd modules.
  152. There are also 'filter' BIO's. Currently I have only implemented
  153. message digests, and it is in use in the dgst application. This
  154. functionality will allow base64/encrypto/buffering modules to be
  155. 'push' into a BIO without it affecting the semantics. I'm also
  156. working on an SSL BIO which will hide the SSL_accept()/SLL_connet()
  157. from an event loop which uses the interface.
  158. It is also possible to 'attach' callbacks to a BIO so they get called
  159. before and after each operation, alowing extensive debug output
  160. to be generated (try running dgst with -d).
  161. Unfortunaly in the conversion from 0.5.x to 0.6.0, quite a few
  162. functions that used to take FILE *, now take BIO *.
  163. The wrappers are easy to write
  164. function_fp(fp,x)
  165. FILE *fp;
  166. {
  167. BIO *b;
  168. int ret;
  169. if ((b=BIO_new(BIO_s_file())) == NULL) error.....
  170. BIO_set_fp(b,fp,BIO_NOCLOSE);
  171. ret=function_bio(b,x);
  172. BIO_free(b);
  173. return(ret);
  174. }
  175. Remember, there are no functions that take FILE * in SSLeay when
  176. compiled for Windows 3.1 DLL's.
  177. --
  178. I have added a general EVP_PKEY type that can hold a public/private
  179. key. This is now what is used by the EVP_ functions and is passed
  180. around internally. I still have not done the PKCS#8 stuff, but
  181. X509_PKEY is defined and waiting :-)
  182. --
  183. For a full function name listings, have a look at ms/crypt32.def and
  184. ms/ssl32.def. These are auto-generated but are complete.
  185. Things like ASN1_INTEGER_get() have been added and are in here if you
  186. look. I have renamed a few things, again, have a look through the
  187. function list and you will probably find what you are after. I intend
  188. to at least put a one line descrition for each one.....
  189. --
  190. Microsoft - thats what this release is about, read the MICROSOFT file.
  191. --
  192. Multi-threading support. I have started hunting through the code and
  193. flaging where things need to be done. In a state of work but high on
  194. the list.
  195. --
  196. For random numbers, edit e_os.h and set DEVRANDOM (it's near the top)
  197. be be you random data device, otherwise 'RFILE' in e_os.h
  198. will be used, in your home directory. It will be updated
  199. periodically. The environment variable RANDFILE will override this
  200. choice and read/write to that file instead. DEVRANDOM is used in
  201. conjunction to the RFILE/RANDFILE. If you wish to 'seed' the random
  202. number generator, pick on one of these files.
  203. --
  204. The list of things to read and do
  205. dgst -d
  206. s_client -state (this uses a callback placed in the SSL state loop and
  207. will be used else-where to help debug/monitor what
  208. is happening.)
  209. doc/why.doc
  210. doc/bio.doc <- hmmm, needs lots of work.
  211. doc/bss_file.doc <- one that is working :-)
  212. doc/session.doc <- it has changed
  213. doc/speed.doc
  214. also play with ssleay version -a. I have now added a SSLeay()
  215. function that returns a version number, eg 0600 for this release
  216. which is primarily to be used to check DLL version against the
  217. application.
  218. util/* Quite a few will not interest people, but some may, like
  219. mk1mf.pl, mkdef.pl,
  220. util/do_ms.sh
  221. try
  222. cc -Iinclude -Icrypto -c crypto/crypto.c
  223. cc -Iinclude -Issl -c ssl/ssl.c
  224. You have just built the SSLeay libraries as 2 object files :-)
  225. Have a general rummage around in the bin stall directory and look at
  226. what is in there, like CA.sh and c_rehash
  227. There are lots more things but it is 12:30am on a Friday night and I'm
  228. heading home :-).
  229. eric 22-Jun-1996
  230. This version has quite a few major bug fixes and improvements. It DOES NOT
  231. do SSLv3 yet.
  232. The main things changed
  233. - A Few days ago I added the s_mult application to ssleay which is
  234. a demo of an SSL server running in an event loop type thing.
  235. It supports non-blocking IO, I have finally gotten it right, SSL_accept()
  236. can operate in non-blocking IO mode, look at the code to see how :-).
  237. Have a read of doc/s_mult as well. This program leaks memory and
  238. file descriptors everywhere but I have not cleaned it up yet.
  239. This is a demo of how to do non-blocking IO.
  240. - The SSL session management has been 'worked over' and there is now
  241. quite an expansive set of functions to manipulate them. Have a read of
  242. doc/session.doc for some-things I quickly whipped up about how it now works.
  243. This assume you know the SSLv2 protocol :-)
  244. - I can now read/write the netscape certificate format, use the
  245. -inform/-outform 'net' options to the x509 command. I have not put support
  246. for this type in the other demo programs, but it would be easy to add.
  247. - asn1parse and 'enc' have been modified so that when reading base64
  248. encoded files (pem format), they do not require '-----BEGIN' header lines.
  249. The 'enc' program had a buffering bug fixed, it can be used as a general
  250. base64 -> binary -> base64 filter by doing 'enc -a -e' and 'enc -a -d'
  251. respecivly. Leaving out the '-a' flag in this case makes the 'enc' command
  252. into a form of 'cat'.
  253. - The 'x509' and 'req' programs have been fixed and modified a little so
  254. that they generate self-signed certificates correctly. The test
  255. script actually generates a 'CA' certificate and then 'signs' a
  256. 'user' certificate. Have a look at this shell script (test/sstest)
  257. to see how things work, it tests most possible combinations of what can
  258. be done.
  259. - The 'SSL_set_pref_cipher()' function has been 'fixed' and the prefered name
  260. of SSL_set_cipher_list() is now the correct API (stops confusion :-).
  261. If this function is used in the client, only the specified ciphers can
  262. be used, with preference given to the order the ciphers were listed.
  263. For the server, if this is used, only the specified ciphers will be used
  264. to accept connections. If this 'option' is not used, a default set of
  265. ciphers will be used. The SSL_CTX_set_cipher_list(SSL_CTX *ctx) sets this
  266. list for all ciphers started against the SSL_CTX. So the order is
  267. SSL cipher_list, if not present, SSL_CTX cipher list, if not
  268. present, then the library default.
  269. What this means is that normally ciphers like
  270. NULL-MD5 will never be used. The only way this cipher can be used
  271. for both ends to specify to use it.
  272. To enable or disable ciphers in the library at build time, modify the
  273. first field for the cipher in the ssl_ciphers array in ssl/ssl_lib.c.
  274. This file also contains the 'pref_cipher' list which is the default
  275. cipher preference order.
  276. - I'm not currently sure if the 'rsa -inform net' and the 'rsa -outform net'
  277. options work. They should, and they enable loading and writing the
  278. netscape rsa private key format. I will be re-working this section of
  279. SSLeay for the next version. What is currently in place is a quick and
  280. dirty hack.
  281. - I've re-written parts of the bignum library. This gives speedups
  282. for all platforms. I now provide assembler for use under Windows NT.
  283. I have not tested the Windows 3.1 assembler but it is quite simple code.
  284. This gives RSAprivate_key operation encryption times of 0.047s (512bit key)
  285. and 0.230s (1024bit key) on a pentium 100 which I consider reasonable.
  286. Basically the times available under linux/solaris x86 can be achieve under
  287. Windows NT. I still don't know how these times compare to RSA's BSAFE
  288. library but I have been emailing with people and with their help, I should
  289. be able to get my library's quite a bit faster still (more algorithm changes).
  290. The object file crypto/bn/asm/x86-32.obj should be used when linking
  291. under NT.
  292. - 'make makefile.one' in the top directory will generate a single makefile
  293. called 'makefile.one' This makefile contains no perl references and
  294. will build the SSLeay library into the 'tmp' and 'out' directories.
  295. util/mk1mf.pl >makefile.one is how this makefile is
  296. generated. The mk1mf.pl command take several option to generate the
  297. makefile for use with cc, gcc, Visual C++ and Borland C++. This is
  298. still under development. I have only build .lib's for NT and MSDOS
  299. I will be working on this more. I still need to play with the
  300. correct compiler setups for these compilers and add some more stuff but
  301. basically if you just want to compile the library
  302. on a 'non-unix' platform, this is a very very good file to start with :-).
  303. Have a look in the 'microsoft' directory for my current makefiles.
  304. I have not yet modified things to link with sockets under Windows NT.
  305. You guys should be able to do this since this is actually outside of the
  306. SSLeay scope :-). I will be doing it for myself soon.
  307. util/mk1mf.pl takes quite a few options including no-rc, rsaref and no-sock
  308. to build without RC2/RC4, to require RSAref for linking, and to
  309. build with no socket code.
  310. - Oh yes, the cipher that was reported to be compatible with RSA's RC2 cipher
  311. that was posted to sci.crypt has been added to the library and SSL.
  312. I take the view that if RC2 is going to be included in a standard,
  313. I'll include the cipher to make my package complete.
  314. There are NO_RC2, NO_RC4 and NO_IDEA macros to remove these ciphers
  315. at compile time. I have not tested this recently but it should all work
  316. and if you are in the USA and don't want RSA threatening to sue you,
  317. you could probably remove the RC4/RC2 code inside these sections.
  318. I may in the future include a perl script that does this code
  319. removal automatically for those in the USA :-).
  320. - I have removed all references to sed in the makefiles. So basically,
  321. the development environment requires perl and sh. The build environment
  322. does not (use the makefile.one makefile).
  323. The Configure script still requires perl, this will probably stay that way
  324. since I have perl for Windows NT :-).
  325. eric (03-May-1996)
  326. PS Have a look in the VERSION file for more details on the changes and
  327. bug fixes.
  328. I have fixed a few bugs, added alpha and x86 assembler and generally cleaned
  329. things up. This version will be quite stable, mostly because I'm on
  330. holidays until 10-March-1996. For any problems in the interum, send email
  331. to Tim Hudson <tjh@mincom.oz.au>.
  332. SSLeay 0.5.0
  333. 12-12-95
  334. This is going out before it should really be released.
  335. I leave for 11 weeks holidays on the 22-12-95 and so I either sit on
  336. this for 11 weeks or get things out. It is still going to change a
  337. lot in the next week so if you do grab this version, please test and
  338. give me feed back ASAP, inculuding questions on how to do things with
  339. the library. This will prompt me to write documentation so I don't
  340. have to answer the same question again :-).
  341. This 'pre' release version is for people who are interested in the
  342. library. The applications will have to be changed to use
  343. the new version of the SSL interface. I intend to finish more
  344. documentation before I leave but until then, look at the programs in
  345. the apps directory. As far as code goes, it is much much nicer than
  346. the old version.
  347. The current library works, has no memory leaks (as far as I can tell)
  348. and is far more bug free that 0.4.5d. There are no global variable of
  349. consequence (I believe) and I will produce some documentation that
  350. tell where to look for those people that do want to do multi-threaded
  351. stuff.
  352. There should be more documentation. Have a look in the
  353. doc directory. I'll be adding more before I leave, it is a start
  354. by mostly documents the crypto library. Tim Hudson will update
  355. the web page ASAP. The spelling and grammar are crap but
  356. it is better than nothing :-)
  357. Reasons to start playing with version 0.5.0
  358. - All the programs in the apps directory build into one ssleay binary.
  359. - There is a new version of the 'req' program that generates certificate
  360. requests, there is even documentation for this one :-)
  361. - There is a demo certification authorithy program. Currently it will
  362. look at the simple database and update it. It will generate CRL from
  363. the data base. You need to edit the database by hand to revoke a
  364. certificate, it is my aim to use perl5/Tk but I don't have time to do
  365. this right now. It will generate the certificates but the management
  366. scripts still need to be written. This is not a hard task.
  367. - Things have been cleaned up alot.
  368. - Have a look at the enc and dgst programs in the apps directory.
  369. - It supports v3 of x509 certiticates.
  370. Major things missing.
  371. - I have been working on (and thinging about) the distributed x509
  372. hierachy problem. I have not had time to put my solution in place.
  373. It will have to wait until I come back.
  374. - I have not put in CRL checking in the certificate verification but
  375. it would not be hard to do. I was waiting until I could generate my
  376. own CRL (which has only been in the last week) and I don't have time
  377. to put it in correctly.
  378. - Montgomery multiplication need to be implemented. I know the
  379. algorithm, just ran out of time.
  380. - PKCS#7. I can load and write the DER version. I need to re-work
  381. things to support BER (if that means nothing, read the ASN1 spec :-).
  382. - Testing of the higher level digital envelope routines. I have not
  383. played with the *_seal() and *_open() type functions. They are
  384. written but need testing. The *_sign() and *_verify() functions are
  385. rock solid.
  386. - PEM. Doing this and PKCS#7 have been dependant on the distributed
  387. x509 heirachy problem. I started implementing my ideas, got
  388. distracted writing a CA program and then ran out of time. I provide
  389. the functionality of RSAref at least.
  390. - Re work the asm. code for the x86. I've changed by low level bignum
  391. interface again, so I really need to tweak the x86 stuff. gcc is
  392. good enough for the other boxes.