aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/trilead/ssh2/crypto/cipher/CipherInputStream.java
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2014-10-01 23:04:51 +0100
committerKenny Root <kenny@the-b.org>2014-10-01 12:48:19 +0100
commit49b779dcaf03e3598d2709b321e20ea029b25163 (patch)
tree05af547b1f1433d7dd6f7373d0b25a455e053a03 /src/com/trilead/ssh2/crypto/cipher/CipherInputStream.java
parentd64786d9197090c74072b648e487e3d34817bb57 (diff)
downloadconnectbot-49b779dcaf03e3598d2709b321e20ea029b25163.tar.gz
connectbot-49b779dcaf03e3598d2709b321e20ea029b25163.tar.bz2
connectbot-49b779dcaf03e3598d2709b321e20ea029b25163.zip
Convert to gradle build system
Diffstat (limited to 'src/com/trilead/ssh2/crypto/cipher/CipherInputStream.java')
-rw-r--r--src/com/trilead/ssh2/crypto/cipher/CipherInputStream.java144
1 files changed, 0 insertions, 144 deletions
diff --git a/src/com/trilead/ssh2/crypto/cipher/CipherInputStream.java b/src/com/trilead/ssh2/crypto/cipher/CipherInputStream.java
deleted file mode 100644
index c9055ab..0000000
--- a/src/com/trilead/ssh2/crypto/cipher/CipherInputStream.java
+++ /dev/null
@@ -1,144 +0,0 @@
-
-package com.trilead.ssh2.crypto.cipher;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * CipherInputStream.
- *
- * @author Christian Plattner, plattner@trilead.com
- * @version $Id: CipherInputStream.java,v 1.1 2007/10/15 12:49:55 cplattne Exp $
- */
-public class CipherInputStream
-{
- BlockCipher currentCipher;
- InputStream bi;
- byte[] buffer;
- byte[] enc;
- int blockSize;
- int pos;
-
- /*
- * We cannot use java.io.BufferedInputStream, since that is not available in
- * J2ME. Everything could be improved alot here.
- */
-
- final int BUFF_SIZE = 2048;
- byte[] input_buffer = new byte[BUFF_SIZE];
- int input_buffer_pos = 0;
- int input_buffer_size = 0;
-
- public CipherInputStream(BlockCipher tc, InputStream bi)
- {
- this.bi = bi;
- changeCipher(tc);
- }
-
- private int fill_buffer() throws IOException
- {
- input_buffer_pos = 0;
- input_buffer_size = bi.read(input_buffer, 0, BUFF_SIZE);
- return input_buffer_size;
- }
-
- private int internal_read(byte[] b, int off, int len) throws IOException
- {
- if (input_buffer_size < 0)
- return -1;
-
- if (input_buffer_pos >= input_buffer_size)
- {
- if (fill_buffer() <= 0)
- return -1;
- }
-
- int avail = input_buffer_size - input_buffer_pos;
- int thiscopy = (len > avail) ? avail : len;
-
- System.arraycopy(input_buffer, input_buffer_pos, b, off, thiscopy);
- input_buffer_pos += thiscopy;
-
- return thiscopy;
- }
-
- public void changeCipher(BlockCipher bc)
- {
- this.currentCipher = bc;
- blockSize = bc.getBlockSize();
- buffer = new byte[blockSize];
- enc = new byte[blockSize];
- pos = blockSize;
- }
-
- private void getBlock() throws IOException
- {
- int n = 0;
- while (n < blockSize)
- {
- int len = internal_read(enc, n, blockSize - n);
- if (len < 0)
- throw new IOException("Cannot read full block, EOF reached.");
- n += len;
- }
-
- try
- {
- currentCipher.transformBlock(enc, 0, buffer, 0);
- }
- catch (Exception e)
- {
- throw new IOException("Error while decrypting block.");
- }
- pos = 0;
- }
-
- public int read(byte[] dst) throws IOException
- {
- return read(dst, 0, dst.length);
- }
-
- public int read(byte[] dst, int off, int len) throws IOException
- {
- int count = 0;
-
- while (len > 0)
- {
- if (pos >= blockSize)
- getBlock();
-
- int avail = blockSize - pos;
- int copy = Math.min(avail, len);
- System.arraycopy(buffer, pos, dst, off, copy);
- pos += copy;
- off += copy;
- len -= copy;
- count += copy;
- }
- return count;
- }
-
- public int read() throws IOException
- {
- if (pos >= blockSize)
- {
- getBlock();
- }
- return buffer[pos++] & 0xff;
- }
-
- public int readPlain(byte[] b, int off, int len) throws IOException
- {
- if (pos != blockSize)
- throw new IOException("Cannot read plain since crypto buffer is not aligned.");
- int n = 0;
- while (n < len)
- {
- int cnt = internal_read(b, off + n, len - n);
- if (cnt < 0)
- throw new IOException("Cannot fill buffer, EOF reached.");
- n += cnt;
- }
- return n;
- }
-}