diff options
Diffstat (limited to 'gnu/javax/crypto/RSACipherImpl.java')
-rw-r--r-- | gnu/javax/crypto/RSACipherImpl.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gnu/javax/crypto/RSACipherImpl.java b/gnu/javax/crypto/RSACipherImpl.java index 05f77213e..c6235c928 100644 --- a/gnu/javax/crypto/RSACipherImpl.java +++ b/gnu/javax/crypto/RSACipherImpl.java @@ -204,8 +204,6 @@ public class RSACipherImpl extends CipherSpi engineUpdate (in, offset, length); if (opmode == Cipher.DECRYPT_MODE) { - if (pos < dataBuffer.length) - throw new IllegalBlockSizeException ("expecting exactly " + dataBuffer.length + " bytes"); BigInteger enc = new BigInteger (1, dataBuffer); byte[] dec = rsaDecrypt (enc); logger.log (Component.CRYPTO, "RSA: decryption produced\n{0}", @@ -292,6 +290,13 @@ public class RSACipherImpl extends CipherSpi dec = dec.multiply (r.modInverse (n)).mod (n); } - return dec.toByteArray (); + byte[] decb = dec.toByteArray(); + if (decb[0] != 0x00) + { + byte[] b = new byte[decb.length + 1]; + System.arraycopy(decb, 0, b, 1, decb.length); + decb = b; + } + return decb; } } |