home *** CD-ROM | disk | FTP | other *** search
- package sun.security.util;
-
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.util.Date;
-
- public class DerOutputStream extends ByteArrayOutputStream {
- public DerOutputStream(int var1) {
- super(var1);
- }
-
- public DerOutputStream() {
- }
-
- public void write(byte var1, byte[] var2) throws IOException {
- ((ByteArrayOutputStream)this).write(var1);
- this.putLength(var2.length);
- ((ByteArrayOutputStream)this).write(var2, 0, var2.length);
- }
-
- public void write(byte var1, DerOutputStream var2) throws IOException {
- ((ByteArrayOutputStream)this).write(var1);
- this.putLength(var2.count);
- ((ByteArrayOutputStream)this).write(var2.buf, 0, var2.count);
- }
-
- public void putDerValue(DerValue var1) throws IOException {
- var1.emit(this);
- }
-
- public void putInteger(BigInt var1) throws IOException {
- byte[] var2 = var1.toByteArray();
- ((ByteArrayOutputStream)this).write(2);
- if ((var2[0] & 128) != 0) {
- this.putLength(var2.length + 1);
- ((ByteArrayOutputStream)this).write(0);
- } else {
- this.putLength(var2.length);
- }
-
- ((ByteArrayOutputStream)this).write(var2, 0, var2.length);
- }
-
- public void putBitString(byte[] var1) throws IOException {
- ((ByteArrayOutputStream)this).write(3);
- this.putLength(var1.length + 1);
- ((ByteArrayOutputStream)this).write(0);
- ((OutputStream)this).write(var1);
- }
-
- public void putOctetString(byte[] var1) throws IOException {
- this.write((byte)4, (byte[])var1);
- }
-
- public void putNull() throws IOException {
- ((ByteArrayOutputStream)this).write(5);
- this.putLength(0);
- }
-
- public void putOID(ObjectIdentifier var1) throws IOException {
- var1.emit(this);
- }
-
- public void putSequence(DerValue[] var1) throws IOException {
- DerOutputStream var2 = new DerOutputStream();
-
- for(int var3 = 0; var3 < var1.length; ++var3) {
- var1[var3].emit(var2);
- }
-
- this.write((byte)48, (DerOutputStream)var2);
- }
-
- public void putSet(DerValue[] var1) throws IOException {
- DerOutputStream var2 = new DerOutputStream();
-
- for(int var3 = 0; var3 < var1.length; ++var3) {
- var1[var3].emit(var2);
- }
-
- this.write((byte)49, (DerOutputStream)var2);
- }
-
- public void putPrintableString(String var1) throws IOException {
- ((ByteArrayOutputStream)this).write(19);
- this.putLength(var1.length());
-
- for(int var2 = 0; var2 < var1.length(); ++var2) {
- ((ByteArrayOutputStream)this).write((byte)var1.charAt(var2));
- }
-
- }
-
- public void putIA5String(String var1) throws IOException {
- ((ByteArrayOutputStream)this).write(22);
- this.putLength(var1.length());
-
- for(int var2 = 0; var2 < var1.length(); ++var2) {
- ((ByteArrayOutputStream)this).write((byte)var1.charAt(var2));
- }
-
- }
-
- public void putUTCTime(Date var1) throws IOException {
- byte[] var2 = new byte[11];
- int var3 = var1.getYear();
- if (var3 < 80) {
- throw new IOException("putUTCTime(), year < 1980");
- } else {
- if (var3 > 100) {
- var3 -= 100;
- }
-
- if (var3 >= 100) {
- throw new IOException("putUTCTime(), year >= 2080");
- } else {
- var2[0] = (byte)Character.forDigit(var3 / 10, 10);
- var2[1] = (byte)Character.forDigit(var3 % 10, 10);
- var3 = var1.getMonth() + 1;
- var2[2] = (byte)Character.forDigit(var3 / 10, 10);
- var2[3] = (byte)Character.forDigit(var3 % 10, 10);
- var3 = var1.getDate();
- var2[4] = (byte)Character.forDigit(var3 / 10, 10);
- var2[5] = (byte)Character.forDigit(var3 % 10, 10);
- var3 = var1.getHours();
- var2[6] = (byte)Character.forDigit(var3 / 10, 10);
- var2[7] = (byte)Character.forDigit(var3 % 10, 10);
- var3 = var1.getMinutes();
- var2[8] = (byte)Character.forDigit(var3 / 10, 10);
- var2[9] = (byte)Character.forDigit(var3 % 10, 10);
- var2[10] = 90;
- ((ByteArrayOutputStream)this).write(23);
- this.putLength(var2.length);
- ((OutputStream)this).write(var2);
- }
- }
- }
-
- void putLength(int var1) throws IOException {
- if (var1 < 128) {
- ((ByteArrayOutputStream)this).write((byte)var1);
- } else if (var1 < 256) {
- ((ByteArrayOutputStream)this).write(-127);
- ((ByteArrayOutputStream)this).write((byte)var1);
- } else if (var1 < 65536) {
- ((ByteArrayOutputStream)this).write(-126);
- ((ByteArrayOutputStream)this).write((byte)(var1 >> 8));
- ((ByteArrayOutputStream)this).write((byte)var1);
- } else if (var1 < 65536) {
- ((ByteArrayOutputStream)this).write(-125);
- ((ByteArrayOutputStream)this).write((byte)(var1 >> 16));
- ((ByteArrayOutputStream)this).write((byte)(var1 >> 8));
- ((ByteArrayOutputStream)this).write((byte)var1);
- } else {
- ((ByteArrayOutputStream)this).write(-124);
- ((ByteArrayOutputStream)this).write((byte)(var1 >> 24));
- ((ByteArrayOutputStream)this).write((byte)(var1 >> 16));
- ((ByteArrayOutputStream)this).write((byte)(var1 >> 8));
- ((ByteArrayOutputStream)this).write((byte)var1);
- }
- }
- }
-