javax.crypto fixes

Marco Trudel mtrudel@gmx.ch
Sat Sep 30 15:34:00 GMT 2006


I fixed some stuff in javax.crypto:

1. decryption with padding was broken/wrong handled
2. CipherOutputStream was completly broken/unusuable
3. PKCS7 did an unnecessary test

Cipher, CipherOutputStream and CipherInputStream now work as expected.


1. decryption with padding needs to keep back the last block for final 
unpadding when doFinal() is called. This wasn't done. doFinal() lead to 
an exception.
Actually, padded decrypting only worked correct when all data was passed 
by doFinal(byte[]) or when there where update() calls that filled the 
data to a multiple of the blocklengh and doFinal was called with the 
rest of the data.
This fixes CiperInputStream as well, because it relies on the correct 
doFinal() handling of the cipher class.

2. CipherOutputstream had a lot of code that did nothing except leading 
to a NullPointerException when calling write(...) (outBuffer was never 
initialized). It looks to me like the code should have worked around the 
bugs in CipherAdapter. But that should have been done in CipherInputStream?!

3. PKCS7 unpadding tested a value that was just read with itself. Fixed 
it because I was already reading it... Nothing big...


Any comments? Hints?

I have no committing rights and the copyright assignment papers are not 
yet arrived with mail. This might be a problem...

Ah, and finally: this is actually classpath code, can someone check that 
in there too, as soon as it's ok for gcj?


Marco
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: crypto-patches.txt
URL: <http://gcc.gnu.org/pipermail/java-patches/attachments/20060930/6b9a907f/attachment.txt>


More information about the Java-patches mailing list