[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Classpathx-crypto] todo
From: |
Raif S. Naffah |
Subject: |
[Classpathx-crypto] todo |
Date: |
Wed, 21 Nov 2001 21:35:59 +1100 |
hi there everybody,
after so many weeks, we're finally here :-) thanks to Nic Ferrier for his
hospitality, and for doing everything needed to make it happen.
i've already checked in the initial copy of the project. it compiles --of
course ;-) -- and have added a new tree structure (source/test) that
includes junit tests. few notes before i go further:
* the name src/ has been changed to source/ to align with the customs of
the umbrella project; ie. classpathx. i've changed the references in the
build.xml file to use a symbolic name ${src.dir} so it's easier if in the
future the source directory naming changes.
* the names under test/ mirror that under gnu/crypto/ . in other words,
package gnu.crypto.foo will have its test classes in test/foo. from
experience this proves to be easy when (a) compiling, jarring the main
deliverables, and (b) separating the 'main' code from its 'test' counterpart.
some people argue that this separation disallows testing package private
methods. true; but (a) junit is not made for that, and (b) if an internal
function is wrong then it will impact the result of a visible/public
one. write enough test cases to ensure the fullfilment of the contract for
the visible one and the weaknesses/bugs of the internal ones will
appear --at least that's what i do.
if somebody has other opinions/experience, pls share them.
things left to do/solve before a first public release:
1. fix the links in the Javadoc for the reference documentation of the
implemented algorithms. i was referencing a .zip file but when i checked
in the project i only checked in the .pdf and .txt files that are included
in those archives. i also moved the JavaStyle and AntStyle documents to
the docs/ folder.
2. fix in the build.xml, in the docs section, the reference to the project
home page --i still have to find that out from Nic before this can be done.
3. write an index.html page that will act as the root of all the project's
documentation. this should mirror the README at the project's root.
4. debugging: the code still contains in-line debugging statements that can
be turned on/off. it uses conditional compilation, so it's only useful for
"programmers" and it requires re-compilation before the debugging output
can occur. i dont like it as part of a released code. yes it's useful and
necessary while you're getting the implementation to do what it's supposed
to do, but for release it's ugly and confusing. i would like to remove it
unless somebody can convince me otherwise.
5. code correctness: each algorithm is published with its test vectors. an
implementation is deemed correct if it generates equivalent test vectors to
those published by the designer of the algorithm. the junit tests attempt
to test the implementations against a very small subset of those test
vectors. is that enough? i should note that the tools under
gnu.crypto.tools do generate the test vectors (at least for the
gnu.crypto.cipher package) in NESSIE and (almost) NIST forms. yet the
verification of the result is not straightforward:
* either the gnu.crypto.tool tools generate a more or less exact match of
the published test vectors and then a diff tool is run over these two files
to detect eventual differences, or
* we write a new tool that would read a published test vector file and try
to generated the same from the implementation and compare the results
--something that would automate the process of verifying an implementation
basically.
6. deliverables: what should our deliverables consist of? separate archives
for source, binaries, documentation? combine the lot? should we include the
designers' reference documentation? their test vectors? have a look at the
sizes of these files before giving an answer please.
7. versioning: what type of versioning should we use?
things to do later:
this is still an open issue, and i would leave that for everybody to
suggest what they can do relative to the time they can spend working on
this project.
cheers;
rsn
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Classpathx-crypto] todo,
Raif S. Naffah <=