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 / pkcs / SignerInfo.class (.txt) < prev   
Encoding:
Java Class File  |  1997-07-08  |  4.9 KB  |  139 lines

  1. package sun.security.pkcs;
  2.  
  3. import java.io.IOException;
  4. import java.security.IdentityScope;
  5. import java.security.InvalidKeyException;
  6. import java.security.NoSuchAlgorithmException;
  7. import java.security.PublicKey;
  8. import java.security.Signature;
  9. import java.security.SignatureException;
  10. import sun.security.util.BigInt;
  11. import sun.security.util.DerInputStream;
  12. import sun.security.util.DerOutputStream;
  13. import sun.security.util.DerValue;
  14. import sun.security.x509.AlgorithmId;
  15. import sun.security.x509.X500Name;
  16. import sun.security.x509.X509Cert;
  17.  
  18. public class SignerInfo {
  19.    BigInt version;
  20.    X500Name issuerName;
  21.    BigInt certificateSerialNumber;
  22.    AlgorithmId digestAlgorithmId;
  23.    AlgorithmId digestEncryptionAlgorithmId;
  24.    byte[] encryptedDigest;
  25.  
  26.    public SignerInfo(X500Name var1, BigInt var2, AlgorithmId var3, AlgorithmId var4, byte[] var5) {
  27.       this.version = new BigInt(1);
  28.       this.issuerName = var1;
  29.       this.certificateSerialNumber = var2;
  30.       this.digestAlgorithmId = var3;
  31.       this.digestEncryptionAlgorithmId = var4;
  32.       this.encryptedDigest = var5;
  33.    }
  34.  
  35.    public SignerInfo(DerInputStream var1) throws IOException, ParsingException {
  36.       this.version = var1.getInteger();
  37.       DerValue[] var2 = var1.getSequence(2);
  38.       byte[] var3 = var2[0].toByteArray();
  39.       this.issuerName = new X500Name(new DerValue((byte)48, var3));
  40.       this.certificateSerialNumber = var2[1].getInteger();
  41.       DerValue var4 = var1.getDerValue();
  42.       this.digestAlgorithmId = AlgorithmId.parse(var4);
  43.       var1.getSet(0);
  44.       var4 = var1.getDerValue();
  45.       this.digestEncryptionAlgorithmId = AlgorithmId.parse(var4);
  46.       this.encryptedDigest = var1.getOctetString();
  47.       var1.getSet(0);
  48.       if (var1.available() != 0) {
  49.          throw new ParsingException("extra data at the end");
  50.       }
  51.    }
  52.  
  53.    public void encode(DerOutputStream var1) throws IOException {
  54.       DerOutputStream var2 = new DerOutputStream();
  55.       var2.putInteger(this.version);
  56.       DerOutputStream var3 = new DerOutputStream();
  57.       this.issuerName.emit(var3);
  58.       var3.putInteger(this.certificateSerialNumber);
  59.       var2.write((byte)48, var3);
  60.       this.digestAlgorithmId.encode(var2);
  61.       DerOutputStream var4 = new DerOutputStream();
  62.       var2.write((byte)49, var4);
  63.       this.digestEncryptionAlgorithmId.encode(var2);
  64.       var2.putOctetString(this.encryptedDigest);
  65.       var2.write((byte)49, var4);
  66.       var1.write((byte)48, var2);
  67.    }
  68.  
  69.    public X509Cert getCertificate(PKCS7 var1) {
  70.       return var1.getCertificate(this.certificateSerialNumber, this.issuerName);
  71.    }
  72.  
  73.    SignerInfo verify(PKCS7 var1, byte[] var2) throws NoSuchAlgorithmException, SignatureException {
  74.       IdentityScope.getSystemScope();
  75.  
  76.       try {
  77.          if (var2 == null) {
  78.             ContentInfo var3 = var1.getContentInfo();
  79.             var2 = var3.getContentBytes();
  80.          }
  81.  
  82.          String var9 = this.getDigestEncryptionAlgorithmId().getName();
  83.          Signature var4 = Signature.getInstance(var9);
  84.          X509Cert var5 = this.getCertificate(var1);
  85.          if (var5 == null) {
  86.             throw new SignatureException("No cert for " + this.issuerName);
  87.          } else {
  88.             PublicKey var6 = var5.getPublicKey();
  89.             var4.initVerify(var6);
  90.             var4.update(var2);
  91.             return var4.verify(this.encryptedDigest) ? this : null;
  92.          }
  93.       } catch (IOException var7) {
  94.          throw new SignatureException("IO error verifying signature:\n" + ((Throwable)var7).getMessage());
  95.       } catch (InvalidKeyException var8) {
  96.          throw new SignatureException("InvalidKey: " + ((Throwable)var8).getMessage());
  97.       }
  98.    }
  99.  
  100.    SignerInfo verify(PKCS7 var1) throws NoSuchAlgorithmException, SignatureException {
  101.       return this.verify(var1, (byte[])null);
  102.    }
  103.  
  104.    public BigInt getVersion() {
  105.       return this.version;
  106.    }
  107.  
  108.    public X500Name getIssuerName() {
  109.       return this.issuerName;
  110.    }
  111.  
  112.    public BigInt getCertificateSerialNumber() {
  113.       return this.certificateSerialNumber;
  114.    }
  115.  
  116.    public AlgorithmId getDigestAlgorithmId() {
  117.       return this.digestAlgorithmId;
  118.    }
  119.  
  120.    public AlgorithmId getDigestEncryptionAlgorithmId() {
  121.       return this.digestEncryptionAlgorithmId;
  122.    }
  123.  
  124.    public byte[] getEncryptedDigest() {
  125.       return this.encryptedDigest;
  126.    }
  127.  
  128.    public String toString() {
  129.       String var1 = "";
  130.       var1 = var1 + "Signer Info for (issuer): " + this.issuerName + "\n";
  131.       var1 = var1 + "\tversion: " + this.version + "\n";
  132.       var1 = var1 + "\tcertificateSerialNumber: " + this.certificateSerialNumber + "\n";
  133.       var1 = var1 + "\tdigestAlgorithmId: " + this.digestAlgorithmId + "\n";
  134.       var1 = var1 + "\tdigestEncryptionAlgorithmId: " + this.digestEncryptionAlgorithmId + "\n";
  135.       var1 = var1 + "\tencryptedDigest: " + this.encryptedDigest + "\n";
  136.       return var1;
  137.    }
  138. }
  139.