home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / security / util / DerOutputStream.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  3.1 KB  |  164 lines

  1. package sun.security.util;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.IOException;
  5. import java.io.OutputStream;
  6. import java.util.Date;
  7.  
  8. public class DerOutputStream extends ByteArrayOutputStream {
  9.    public DerOutputStream(int var1) {
  10.       super(var1);
  11.    }
  12.  
  13.    public DerOutputStream() {
  14.    }
  15.  
  16.    public void write(byte var1, byte[] var2) throws IOException {
  17.       ((ByteArrayOutputStream)this).write(var1);
  18.       this.putLength(var2.length);
  19.       ((ByteArrayOutputStream)this).write(var2, 0, var2.length);
  20.    }
  21.  
  22.    public void write(byte var1, DerOutputStream var2) throws IOException {
  23.       ((ByteArrayOutputStream)this).write(var1);
  24.       this.putLength(var2.count);
  25.       ((ByteArrayOutputStream)this).write(var2.buf, 0, var2.count);
  26.    }
  27.  
  28.    public void putDerValue(DerValue var1) throws IOException {
  29.       var1.emit(this);
  30.    }
  31.  
  32.    public void putInteger(BigInt var1) throws IOException {
  33.       byte[] var2 = var1.toByteArray();
  34.       ((ByteArrayOutputStream)this).write(2);
  35.       if ((var2[0] & 128) != 0) {
  36.          this.putLength(var2.length + 1);
  37.          ((ByteArrayOutputStream)this).write(0);
  38.       } else {
  39.          this.putLength(var2.length);
  40.       }
  41.  
  42.       ((ByteArrayOutputStream)this).write(var2, 0, var2.length);
  43.    }
  44.  
  45.    public void putBitString(byte[] var1) throws IOException {
  46.       ((ByteArrayOutputStream)this).write(3);
  47.       this.putLength(var1.length + 1);
  48.       ((ByteArrayOutputStream)this).write(0);
  49.       ((OutputStream)this).write(var1);
  50.    }
  51.  
  52.    public void putOctetString(byte[] var1) throws IOException {
  53.       this.write((byte)4, (byte[])var1);
  54.    }
  55.  
  56.    public void putNull() throws IOException {
  57.       ((ByteArrayOutputStream)this).write(5);
  58.       this.putLength(0);
  59.    }
  60.  
  61.    public void putOID(ObjectIdentifier var1) throws IOException {
  62.       var1.emit(this);
  63.    }
  64.  
  65.    public void putSequence(DerValue[] var1) throws IOException {
  66.       DerOutputStream var2 = new DerOutputStream();
  67.  
  68.       for(int var3 = 0; var3 < var1.length; ++var3) {
  69.          var1[var3].emit(var2);
  70.       }
  71.  
  72.       this.write((byte)48, (DerOutputStream)var2);
  73.    }
  74.  
  75.    public void putSet(DerValue[] var1) throws IOException {
  76.       DerOutputStream var2 = new DerOutputStream();
  77.  
  78.       for(int var3 = 0; var3 < var1.length; ++var3) {
  79.          var1[var3].emit(var2);
  80.       }
  81.  
  82.       this.write((byte)49, (DerOutputStream)var2);
  83.    }
  84.  
  85.    public void putPrintableString(String var1) throws IOException {
  86.       ((ByteArrayOutputStream)this).write(19);
  87.       this.putLength(var1.length());
  88.  
  89.       for(int var2 = 0; var2 < var1.length(); ++var2) {
  90.          ((ByteArrayOutputStream)this).write((byte)var1.charAt(var2));
  91.       }
  92.  
  93.    }
  94.  
  95.    public void putIA5String(String var1) throws IOException {
  96.       ((ByteArrayOutputStream)this).write(22);
  97.       this.putLength(var1.length());
  98.  
  99.       for(int var2 = 0; var2 < var1.length(); ++var2) {
  100.          ((ByteArrayOutputStream)this).write((byte)var1.charAt(var2));
  101.       }
  102.  
  103.    }
  104.  
  105.    public void putUTCTime(Date var1) throws IOException {
  106.       byte[] var2 = new byte[11];
  107.       int var3 = var1.getYear();
  108.       if (var3 < 80) {
  109.          throw new IOException("putUTCTime(), year < 1980");
  110.       } else {
  111.          if (var3 > 100) {
  112.             var3 -= 100;
  113.          }
  114.  
  115.          if (var3 >= 100) {
  116.             throw new IOException("putUTCTime(), year >= 2080");
  117.          } else {
  118.             var2[0] = (byte)Character.forDigit(var3 / 10, 10);
  119.             var2[1] = (byte)Character.forDigit(var3 % 10, 10);
  120.             var3 = var1.getMonth() + 1;
  121.             var2[2] = (byte)Character.forDigit(var3 / 10, 10);
  122.             var2[3] = (byte)Character.forDigit(var3 % 10, 10);
  123.             var3 = var1.getDate();
  124.             var2[4] = (byte)Character.forDigit(var3 / 10, 10);
  125.             var2[5] = (byte)Character.forDigit(var3 % 10, 10);
  126.             var3 = var1.getHours();
  127.             var2[6] = (byte)Character.forDigit(var3 / 10, 10);
  128.             var2[7] = (byte)Character.forDigit(var3 % 10, 10);
  129.             var3 = var1.getMinutes();
  130.             var2[8] = (byte)Character.forDigit(var3 / 10, 10);
  131.             var2[9] = (byte)Character.forDigit(var3 % 10, 10);
  132.             var2[10] = 90;
  133.             ((ByteArrayOutputStream)this).write(23);
  134.             this.putLength(var2.length);
  135.             ((OutputStream)this).write(var2);
  136.          }
  137.       }
  138.    }
  139.  
  140.    void putLength(int var1) throws IOException {
  141.       if (var1 < 128) {
  142.          ((ByteArrayOutputStream)this).write((byte)var1);
  143.       } else if (var1 < 256) {
  144.          ((ByteArrayOutputStream)this).write(-127);
  145.          ((ByteArrayOutputStream)this).write((byte)var1);
  146.       } else if (var1 < 65536) {
  147.          ((ByteArrayOutputStream)this).write(-126);
  148.          ((ByteArrayOutputStream)this).write((byte)(var1 >> 8));
  149.          ((ByteArrayOutputStream)this).write((byte)var1);
  150.       } else if (var1 < 65536) {
  151.          ((ByteArrayOutputStream)this).write(-125);
  152.          ((ByteArrayOutputStream)this).write((byte)(var1 >> 16));
  153.          ((ByteArrayOutputStream)this).write((byte)(var1 >> 8));
  154.          ((ByteArrayOutputStream)this).write((byte)var1);
  155.       } else {
  156.          ((ByteArrayOutputStream)this).write(-124);
  157.          ((ByteArrayOutputStream)this).write((byte)(var1 >> 24));
  158.          ((ByteArrayOutputStream)this).write((byte)(var1 >> 16));
  159.          ((ByteArrayOutputStream)this).write((byte)(var1 >> 8));
  160.          ((ByteArrayOutputStream)this).write((byte)var1);
  161.       }
  162.    }
  163. }
  164.