However, I need to echo the issue about difficulty in understanding how to use the code. I'm not sure I've ever used a library that was so obtuse. (I'm not sure how 4.2 was since that was before my time. Other people posting seem to think it was a lot easier.) I had to do some in-depth Web searching to find enough sample code to figure out how to do the few things I needed. I believe it would be possible to abstract the different types of encryption algorithms while still making things easy to understand. It took me more time to figure out how to get it working than it would have to have written my own streaming, etc. The fact that input and output streams are built in only hurt me. Also, I think it would be possible to structure the classes so that you can easily get at a particular algorithm if you want, without jumping through all the hoops.
I realize there may be some defensive replies to this. But this seems to be a point of view shared by MANY users, even die-hard fans who have used the library for a long time but are having trouble with the latest release. If this was a commercial product, there would be driving market pressure to make it much easier to use.
Anyway, that's just my 2 cents. In the end, I managed to get out of it what I needed, and everything's working fine now.
At 04:21 PM 11/5/2003 -0500, Wei Dai wrote:
On warnings: It's not worth my time to remove all warnings on all the compilers that are supported. In some cases (like with GCC) it is simply not possible to remove all warnings without making changes that are detrimental to the code. I aim for having no warnings on the main compilers that I develop on, which are current Microsoft Visual C++ 6.0 and .NET.
As far as difficulty understanding the code, I have to trade off ease of understanding the code with other priorities like minimizing code size, supporting new algorithms, ease of use, ease of implementation and maintenance. Without using generics, it would be impossible for me to support the range of algorithms that are available. If you are having trouble understanding the code and you think you'll never need more than one or two of the most popular algorithms, other libraries may very well be more suitable for you.
