diff options
Diffstat (limited to 'core/src/main/java/org/bouncycastle/util/io')
12 files changed, 0 insertions, 827 deletions
diff --git a/core/src/main/java/org/bouncycastle/util/io/BufferingOutputStream.java b/core/src/main/java/org/bouncycastle/util/io/BufferingOutputStream.java deleted file mode 100644 index 9d5fe142..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/BufferingOutputStream.java +++ /dev/null @@ -1,108 +0,0 @@ -package org.bouncycastle.util.io; - -import java.io.IOException; -import java.io.OutputStream; - -import org.bouncycastle.util.Arrays; - -/** - * An output stream that buffers data to be feed into an encapsulated output stream. - * <p> - * The stream zeroes out the internal buffer on each flush. - * </p> - */ -public class BufferingOutputStream - extends OutputStream -{ - private final OutputStream other; - private final byte[] buf; - - private int bufOff; - - /** - * Create a buffering stream with the default buffer size (4096). - * - * @param other output stream to be wrapped. - */ - public BufferingOutputStream(OutputStream other) - { - this.other = other; - this.buf = new byte[4096]; - } - - /** - * Create a buffering stream with a specified buffer size. - * - * @param other output stream to be wrapped. - * @param bufferSize size in bytes for internal buffer. - */ - public BufferingOutputStream(OutputStream other, int bufferSize) - { - this.other = other; - this.buf = new byte[bufferSize]; - } - - public void write(byte[] bytes, int offset, int len) - throws IOException - { - if (len < buf.length - bufOff) - { - System.arraycopy(bytes, offset, buf, bufOff, len); - bufOff += len; - } - else - { - int gap = buf.length - bufOff; - - System.arraycopy(bytes, offset, buf, bufOff, gap); - bufOff += gap; - - flush(); - - offset += gap; - len -= gap; - while (len >= buf.length) - { - other.write(bytes, offset, buf.length); - offset += buf.length; - len -= buf.length; - } - - if (len > 0) - { - System.arraycopy(bytes, offset, buf, bufOff, len); - bufOff += len; - } - } - } - - public void write(int b) - throws IOException - { - buf[bufOff++] = (byte)b; - if (bufOff == buf.length) - { - flush(); - } - } - - /** - * Flush the internal buffer to the encapsulated output stream. Zero the buffer contents when done. - * - * @throws IOException on error. - */ - public void flush() - throws IOException - { - other.write(buf, 0, bufOff); - bufOff = 0; - Arrays.fill(buf, (byte)0); - } - - public void close() - throws IOException - { - flush(); - other.close(); - } -} diff --git a/core/src/main/java/org/bouncycastle/util/io/StreamOverflowException.java b/core/src/main/java/org/bouncycastle/util/io/StreamOverflowException.java deleted file mode 100644 index ed5518d7..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/StreamOverflowException.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.bouncycastle.util.io; - -import java.io.IOException; - -/** - * Exception thrown when too much data is written to an InputStream - */ -public class StreamOverflowException - extends IOException -{ - public StreamOverflowException(String msg) - { - super(msg); - } -} diff --git a/core/src/main/java/org/bouncycastle/util/io/Streams.java b/core/src/main/java/org/bouncycastle/util/io/Streams.java deleted file mode 100644 index 0dea2369..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/Streams.java +++ /dev/null @@ -1,145 +0,0 @@ -package org.bouncycastle.util.io; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -/** - * Utility methods to assist with stream processing. - */ -public final class Streams -{ - private static int BUFFER_SIZE = 512; - - /** - * Read stream till EOF is encountered. - * - * @param inStr stream to be emptied. - * @throws IOException in case of underlying IOException. - */ - public static void drain(InputStream inStr) - throws IOException - { - byte[] bs = new byte[BUFFER_SIZE]; - while (inStr.read(bs, 0, bs.length) >= 0) - { - } - } - - /** - * Read stream fully, returning contents in a byte array. - * - * @param inStr stream to be read. - * @return a byte array representing the contents of inStr. - * @throws IOException in case of underlying IOException. - */ - public static byte[] readAll(InputStream inStr) - throws IOException - { - ByteArrayOutputStream buf = new ByteArrayOutputStream(); - pipeAll(inStr, buf); - return buf.toByteArray(); - } - - /** - * Read from inStr up to a maximum number of bytes, throwing an exception if more the maximum amount - * of requested data is available. - * - * @param inStr stream to be read. - * @param limit maximum number of bytes that can be read. - * @return a byte array representing the contents of inStr. - * @throws IOException in case of underlying IOException, or if limit is reached on inStr still has data in it. - */ - public static byte[] readAllLimited(InputStream inStr, int limit) - throws IOException - { - ByteArrayOutputStream buf = new ByteArrayOutputStream(); - pipeAllLimited(inStr, limit, buf); - return buf.toByteArray(); - } - - /** - * Fully read in buf's length in data, or up to EOF, whichever occurs first, - * - * @param inStr the stream to be read. - * @param buf the buffer to be read into. - * @return the number of bytes read into the buffer. - * @throws IOException in case of underlying IOException. - */ - public static int readFully(InputStream inStr, byte[] buf) - throws IOException - { - return readFully(inStr, buf, 0, buf.length); - } - - /** - * Fully read in len's bytes of data into buf, or up to EOF, whichever occurs first, - * - * @param inStr the stream to be read. - * @param buf the buffer to be read into. - * @param off offset into buf to start putting bytes into. - * @param len the number of bytes to be read. - * @return the number of bytes read into the buffer. - * @throws IOException in case of underlying IOException. - */ - public static int readFully(InputStream inStr, byte[] buf, int off, int len) - throws IOException - { - int totalRead = 0; - while (totalRead < len) - { - int numRead = inStr.read(buf, off + totalRead, len - totalRead); - if (numRead < 0) - { - break; - } - totalRead += numRead; - } - return totalRead; - } - - /** - * Write the full contents of inStr to the destination stream outStr. - * - * @param inStr source input stream. - * @param outStr destination output stream. - * @throws IOException in case of underlying IOException. - */ - public static void pipeAll(InputStream inStr, OutputStream outStr) - throws IOException - { - byte[] bs = new byte[BUFFER_SIZE]; - int numRead; - while ((numRead = inStr.read(bs, 0, bs.length)) >= 0) - { - outStr.write(bs, 0, numRead); - } - } - - /** - * Write up to limit bytes of data from inStr to the destination stream outStr. - * - * @param inStr source input stream. - * @param limit the maximum number of bytes allowed to be read. - * @param outStr destination output stream. - * @throws IOException in case of underlying IOException, or if limit is reached on inStr still has data in it. - */ - public static long pipeAllLimited(InputStream inStr, long limit, OutputStream outStr) - throws IOException - { - long total = 0; - byte[] bs = new byte[BUFFER_SIZE]; - int numRead; - while ((numRead = inStr.read(bs, 0, bs.length)) >= 0) - { - total += numRead; - if (total > limit) - { - throw new StreamOverflowException("Data Overflow"); - } - outStr.write(bs, 0, numRead); - } - return total; - } -} diff --git a/core/src/main/java/org/bouncycastle/util/io/TeeInputStream.java b/core/src/main/java/org/bouncycastle/util/io/TeeInputStream.java deleted file mode 100644 index 96da1694..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/TeeInputStream.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.bouncycastle.util.io; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -/** - * An input stream which copies anything read through it to another stream. - */ -public class TeeInputStream - extends InputStream -{ - private final InputStream input; - private final OutputStream output; - - /** - * Base constructor. - * - * @param input input stream to be wrapped. - * @param output output stream to copy any input read to. - */ - public TeeInputStream(InputStream input, OutputStream output) - { - this.input = input; - this.output = output; - } - - public int read(byte[] buf) - throws IOException - { - return read(buf, 0, buf.length); - } - - public int read(byte[] buf, int off, int len) - throws IOException - { - int i = input.read(buf, off, len); - - if (i > 0) - { - output.write(buf, off, i); - } - - return i; - } - - public int read() - throws IOException - { - int i = input.read(); - - if (i >= 0) - { - output.write(i); - } - - return i; - } - - public void close() - throws IOException - { - this.input.close(); - this.output.close(); - } - - public OutputStream getOutputStream() - { - return output; - } -} diff --git a/core/src/main/java/org/bouncycastle/util/io/TeeOutputStream.java b/core/src/main/java/org/bouncycastle/util/io/TeeOutputStream.java deleted file mode 100644 index 05b2b563..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/TeeOutputStream.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.bouncycastle.util.io; - -import java.io.IOException; -import java.io.OutputStream; - - -/** - * An output stream which copies anything written into it to another stream. - */ -public class TeeOutputStream - extends OutputStream -{ - private OutputStream output1; - private OutputStream output2; - - /** - * Base constructor. - * - * @param output1 the output stream that is wrapped. - * @param output2 a secondary stream that anything written to output1 is also written to. - */ - public TeeOutputStream(OutputStream output1, OutputStream output2) - { - this.output1 = output1; - this.output2 = output2; - } - - public void write(byte[] buf) - throws IOException - { - this.output1.write(buf); - this.output2.write(buf); - } - - public void write(byte[] buf, int off, int len) - throws IOException - { - this.output1.write(buf, off, len); - this.output2.write(buf, off, len); - } - - public void write(int b) - throws IOException - { - this.output1.write(b); - this.output2.write(b); - } - - public void flush() - throws IOException - { - this.output1.flush(); - this.output2.flush(); - } - - public void close() - throws IOException - { - this.output1.close(); - this.output2.close(); - } -}
\ No newline at end of file diff --git a/core/src/main/java/org/bouncycastle/util/io/pem/PemGenerationException.java b/core/src/main/java/org/bouncycastle/util/io/pem/PemGenerationException.java deleted file mode 100644 index 63f61f2d..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/pem/PemGenerationException.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.bouncycastle.util.io.pem; - -import java.io.IOException; - -/** - * Exception thrown on failure to generate a PEM object. - */ -public class PemGenerationException - extends IOException -{ - private Throwable cause; - - public PemGenerationException(String message, Throwable cause) - { - super(message); - this.cause = cause; - } - - public PemGenerationException(String message) - { - super(message); - } - - public Throwable getCause() - { - return cause; - } -} diff --git a/core/src/main/java/org/bouncycastle/util/io/pem/PemHeader.java b/core/src/main/java/org/bouncycastle/util/io/pem/PemHeader.java deleted file mode 100644 index bbc6108e..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/pem/PemHeader.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.bouncycastle.util.io.pem; - -/** - * Class representing a PEM header (name, value) pair. - */ -public class PemHeader -{ - private String name; - private String value; - - /** - * Base constructor. - * - * @param name name of the header property. - * @param value value of the header property. - */ - public PemHeader(String name, String value) - { - this.name = name; - this.value = value; - } - - public String getName() - { - return name; - } - - public String getValue() - { - return value; - } - - public int hashCode() - { - return getHashCode(this.name) + 31 * getHashCode(this.value); - } - - public boolean equals(Object o) - { - if (!(o instanceof PemHeader)) - { - return false; - } - - PemHeader other = (PemHeader)o; - - return other == this || (isEqual(this.name, other.name) && isEqual(this.value, other.value)); - } - - private int getHashCode(String s) - { - if (s == null) - { - return 1; - } - - return s.hashCode(); - } - - private boolean isEqual(String s1, String s2) - { - if (s1 == s2) - { - return true; - } - - if (s1 == null || s2 == null) - { - return false; - } - - return s1.equals(s2); - } - -} diff --git a/core/src/main/java/org/bouncycastle/util/io/pem/PemObject.java b/core/src/main/java/org/bouncycastle/util/io/pem/PemObject.java deleted file mode 100644 index 606330d8..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/pem/PemObject.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.bouncycastle.util.io.pem; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * A generic PEM object - type, header properties, and byte content. - */ -public class PemObject - implements PemObjectGenerator -{ - private static final List EMPTY_LIST = Collections.unmodifiableList(new ArrayList()); - - private String type; - private List headers; - private byte[] content; - - /** - * Generic constructor for object without headers. - * - * @param type pem object type. - * @param content the binary content of the object. - */ - public PemObject(String type, byte[] content) - { - this(type, EMPTY_LIST, content); - } - - /** - * Generic constructor for object with headers. - * - * @param type pem object type. - * @param headers a list of PemHeader objects. - * @param content the binary content of the object. - */ - public PemObject(String type, List headers, byte[] content) - { - this.type = type; - this.headers = Collections.unmodifiableList(headers); - this.content = content; - } - - public String getType() - { - return type; - } - - public List getHeaders() - { - return headers; - } - - public byte[] getContent() - { - return content; - } - - public PemObject generate() - throws PemGenerationException - { - return this; - } -} diff --git a/core/src/main/java/org/bouncycastle/util/io/pem/PemObjectGenerator.java b/core/src/main/java/org/bouncycastle/util/io/pem/PemObjectGenerator.java deleted file mode 100644 index 96646392..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/pem/PemObjectGenerator.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.bouncycastle.util.io.pem; - -/** - * Base interface for generators of PEM objects. - */ -public interface PemObjectGenerator -{ - /** - * Generate a PEM object. - * - * @return the generated object. - * @throws PemGenerationException on failure. - */ - PemObject generate() - throws PemGenerationException; -} diff --git a/core/src/main/java/org/bouncycastle/util/io/pem/PemObjectParser.java b/core/src/main/java/org/bouncycastle/util/io/pem/PemObjectParser.java deleted file mode 100644 index 933da6ab..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/pem/PemObjectParser.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.bouncycastle.util.io.pem; - -import java.io.IOException; - -/** - * Base interface for parsers to convert PEM objects into specific objects. - */ -public interface PemObjectParser -{ - /** - * Parse an object out of the PEM object passed in. - * - * @param obj the PEM object containing the details for the specific object. - * @return a specific object represented by the PEM object. - * @throws IOException on a parsing error. - */ - Object parseObject(PemObject obj) - throws IOException; -} diff --git a/core/src/main/java/org/bouncycastle/util/io/pem/PemReader.java b/core/src/main/java/org/bouncycastle/util/io/pem/PemReader.java deleted file mode 100644 index 3045b4d0..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/pem/PemReader.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.bouncycastle.util.io.pem; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.Reader; -import java.util.ArrayList; -import java.util.List; - -import org.bouncycastle.util.encoders.Base64; - -/** - * A generic PEM reader, based on the format outlined in RFC 1421 - */ -public class PemReader - extends BufferedReader -{ - private static final String BEGIN = "-----BEGIN "; - private static final String END = "-----END "; - - public PemReader(Reader reader) - { - super(reader); - } - - public PemObject readPemObject() - throws IOException - { - String line = readLine(); - - while (line != null && !line.startsWith(BEGIN)) - { - line = readLine(); - } - - if (line != null) - { - line = line.substring(BEGIN.length()); - int index = line.indexOf('-'); - String type = line.substring(0, index); - - if (index > 0) - { - return loadObject(type); - } - } - - return null; - } - - private PemObject loadObject(String type) - throws IOException - { - String line; - String endMarker = END + type; - StringBuffer buf = new StringBuffer(); - List headers = new ArrayList(); - - while ((line = readLine()) != null) - { - if (line.indexOf(":") >= 0) - { - int index = line.indexOf(':'); - String hdr = line.substring(0, index); - String value = line.substring(index + 1).trim(); - - headers.add(new PemHeader(hdr, value)); - - continue; - } - - if (line.indexOf(endMarker) != -1) - { - break; - } - - buf.append(line.trim()); - } - - if (line == null) - { - throw new IOException(endMarker + " not found"); - } - - return new PemObject(type, headers, Base64.decode(buf.toString())); - } - -} diff --git a/core/src/main/java/org/bouncycastle/util/io/pem/PemWriter.java b/core/src/main/java/org/bouncycastle/util/io/pem/PemWriter.java deleted file mode 100644 index ccefa36e..00000000 --- a/core/src/main/java/org/bouncycastle/util/io/pem/PemWriter.java +++ /dev/null @@ -1,137 +0,0 @@ -package org.bouncycastle.util.io.pem; - -import java.io.BufferedWriter; -import java.io.IOException; -import java.io.Writer; -import java.util.Iterator; - -import org.bouncycastle.util.encoders.Base64; - -/** - * A generic PEM writer, based on RFC 1421 - */ -public class PemWriter - extends BufferedWriter -{ - private static final int LINE_LENGTH = 64; - - private final int nlLength; - private char[] buf = new char[LINE_LENGTH]; - - /** - * Base constructor. - * - * @param out output stream to use. - */ - public PemWriter(Writer out) - { - super(out); - - String nl = System.getProperty("line.separator"); - if (nl != null) - { - nlLength = nl.length(); - } - else - { - nlLength = 2; - } - } - - /** - * Return the number of bytes or characters required to contain the - * passed in object if it is PEM encoded. - * - * @param obj pem object to be output - * @return an estimate of the number of bytes - */ - public int getOutputSize(PemObject obj) - { - // BEGIN and END boundaries. - int size = (2 * (obj.getType().length() + 10 + nlLength)) + 6 + 4; - - if (!obj.getHeaders().isEmpty()) - { - for (Iterator it = obj.getHeaders().iterator(); it.hasNext();) - { - PemHeader hdr = (PemHeader)it.next(); - - size += hdr.getName().length() + ": ".length() + hdr.getValue().length() + nlLength; - } - - size += nlLength; - } - - // base64 encoding - int dataLen = ((obj.getContent().length + 2) / 3) * 4; - - size += dataLen + (((dataLen + LINE_LENGTH - 1) / LINE_LENGTH) * nlLength); - - return size; - } - - public void writeObject(PemObjectGenerator objGen) - throws IOException - { - PemObject obj = objGen.generate(); - - writePreEncapsulationBoundary(obj.getType()); - - if (!obj.getHeaders().isEmpty()) - { - for (Iterator it = obj.getHeaders().iterator(); it.hasNext();) - { - PemHeader hdr = (PemHeader)it.next(); - - this.write(hdr.getName()); - this.write(": "); - this.write(hdr.getValue()); - this.newLine(); - } - - this.newLine(); - } - - writeEncoded(obj.getContent()); - writePostEncapsulationBoundary(obj.getType()); - } - - private void writeEncoded(byte[] bytes) - throws IOException - { - bytes = Base64.encode(bytes); - - for (int i = 0; i < bytes.length; i += buf.length) - { - int index = 0; - - while (index != buf.length) - { - if ((i + index) >= bytes.length) - { - break; - } - buf[index] = (char)bytes[i + index]; - index++; - } - this.write(buf, 0, index); - this.newLine(); - } - } - - private void writePreEncapsulationBoundary( - String type) - throws IOException - { - this.write("-----BEGIN " + type + "-----"); - this.newLine(); - } - - private void writePostEncapsulationBoundary( - String type) - throws IOException - { - this.write("-----END " + type + "-----"); - this.newLine(); - } -} |