Information

0
Story Points

Technologies

Decompiled Java File
package iaik.pkcs.pkcs7;

import iaik.asn1.ASN1Object;
import iaik.asn1.DerCoder;
import iaik.asn1.DerInputStream;
import iaik.asn1.INTEGER;
import iaik.asn1.ObjectID;
import iaik.asn1.SEQUENCE;
import iaik.asn1.structures.AlgorithmID;
import iaik.pkcs.PKCSException;
import iaik.pkcs.PKCSParsingException;
import iaik.pkcs.pkcs7.ContentStream;
import iaik.pkcs.pkcs7.EncryptedContentInfoStream;
import iaik.security.cipher.PBEKey;
import iaik.security.cipher.PBEKeyBMP;
import iaik.security.pbe.PBEGenParameterSpec;
import iaik.utils.InternalErrorException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.AlgorithmParameterGenerator;
import java.security.AlgorithmParameters;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.InvalidParameterSpecException;
import javax.crypto.spec.PBEParameterSpec;

public class EncryptedDataStream implements ContentStream {
   // $FF: synthetic field
   static Class b;
   private EncryptedContentInfoStream a;
   protected int block_size;
   protected int version;

   static Class a(String var0) {
      try {
         return Class.forName(var0);
      } catch (ClassNotFoundException var2) {
         throw new NoClassDefFoundError(var2.getMessage());
      }
   }

   public void writeTo(OutputStream var1, int var2) throws IOException {
      try {
         DerCoder.encodeTo(this.toASN1Object(var2), var1);
      } catch (PKCSException var4) {
         throw new IOException(var4.toString());
      }
   }

   public void writeTo(OutputStream var1) throws IOException {
      try {
         DerCoder.encodeTo(this.toASN1Object(), var1);
      } catch (PKCSException var3) {
         throw new IOException(var3.toString());
      }
   }

   public String toString(boolean var1) {
      StringBuffer var2 = new StringBuffer();
      var2.append("Version: " + this.version + "\n");
      var2.append("EncryptedContentInfo:\n");
      var2.append(this.a.toString());
      return var2.toString();
   }

   public String toString() {
      return this.toString(false);
   }

   protected ASN1Object toASN1Object(int var1) throws PKCSException {
      if(var1 <= 0) {
         var1 = this.block_size;
      }

      if(var1 > 0) {
         this.a.setBlockSize(var1);
      }

      SEQUENCE var2 = new SEQUENCE(true);
      var2.addComponent(new INTEGER(this.version));
      var2.addComponent(this.a.toASN1Object());
      return var2;
   }

   public ASN1Object toASN1Object() throws PKCSException {
      return this.toASN1Object(-1);
   }

   Key a(char[] var1, AlgorithmID var2) {
      return (Key)(var2.equals(AlgorithmID.pbeWithMD5AndDES_CBC)?new PBEKey(var1):new PBEKeyBMP(var1));
   }

   public void setupCipher(char[] var1) throws InvalidKeyException, InvalidParameterSpecException, InvalidAlgorithmParameterException, NoSuchAlgorithmException {
      AlgorithmID var2 = this.a.getContentEncryptionAlgorithm();
      AlgorithmParameters var3 = var2.getAlgorithmParameters("PBE");
      AlgorithmParameterSpec var4 = var3.getParameterSpec(b != null?b:(b = a("javax.crypto.spec.PBEParameterSpec")));
      Key var5 = this.a(var1, this.a.getContentEncryptionAlgorithm());
      this.a.setupCipher(var5, var4);
   }

   public void setupCipher(AlgorithmID var1, char[] var2, int var3) throws InvalidKeyException, NoSuchAlgorithmException {
      try {
         AlgorithmParameterSpec var4 = this.a(var1, var3);
         Key var5 = this.a(var2, var1);
         this.a.setupCipher(var1, var5, var4);
      } catch (InvalidAlgorithmParameterException var6) {
         throw new InternalErrorException(var6);
      } catch (InvalidParameterSpecException var7) {
         throw new InternalErrorException(var7);
      }
   }

   public void setupCipher(AlgorithmID var1, char[] var2) throws InvalidKeyException, NoSuchAlgorithmException {
      this.setupCipher(var1, var2, 1);
   }

   AlgorithmParameterSpec a(AlgorithmID var1, int var2) throws InvalidParameterSpecException, InvalidAlgorithmParameterException, NoSuchAlgorithmException {
      PBEGenParameterSpec var3 = new PBEGenParameterSpec(8, var2);
      AlgorithmParameterGenerator var4 = AlgorithmParameterGenerator.getInstance("PBE");
      var4.init(var3);
      AlgorithmParameters var5 = var4.generateParameters();
      PBEParameterSpec var6 = (PBEParameterSpec)var5.getParameterSpec(b != null?b:(b = a("javax.crypto.spec.PBEParameterSpec")));
      var1.setAlgorithmParameters(var5);
      return var6;
   }

   public void setBlockSize(int var1) {
      this.block_size = var1;
   }

   public int getVersion() {
      return this.version;
   }

   public InputStream getInputStream() {
      return this.a.getInputStream();
   }

   public Object getEncryptedContentInfo() {
      return this.a;
   }

   public ObjectID getContentType() {
      return ObjectID.pkcs7_encryptedData;
   }

   public int getBlockSize() {
      return this.block_size;
   }

   public void decode(InputStream var1) throws PKCSParsingException, IOException {
      if(!(var1 instanceof DerInputStream)) {
         var1 = new DerInputStream((InputStream)var1);
      }

      DerInputStream var2 = ((DerInputStream)var1).readSequence();
      this.version = var2.readInteger().intValue();
      this.a = new EncryptedContentInfoStream(var2);
   }

   public EncryptedDataStream(InputStream var1, int var2) {
      this();
      this.a = new EncryptedContentInfoStream(ObjectID.pkcs7_data, var1);
      this.block_size = var2;
   }

   public EncryptedDataStream(InputStream var1) throws PKCSParsingException, IOException {
      this();
      this.decode(var1);
   }

   public EncryptedDataStream(EncryptedContentInfoStream var1) {
      this();
      this.a = var1;
   }

   protected EncryptedDataStream() {
      this.version = 0;
      this.block_size = -1;
   }
}
Page generated: Oct 19, 2017 2:34:25 PM