예제 #1
0
  public PKCS10CertificationRequest(
      String var1, X509Name var2, PublicKey var3, ASN1Set var4, PrivateKey var5, String var6)
      throws NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException,
          SignatureException {
    String var7 = Strings.toUpperCase(var1);
    DERObjectIdentifier var8 = (DERObjectIdentifier) algorithms.get(var7);
    if (var8 == null) {
      throw new IllegalArgumentException("Unknown signature type requested");
    } else if (var2 == null) {
      throw new IllegalArgumentException("subject must not be null");
    } else if (var3 == null) {
      throw new IllegalArgumentException("public key must not be null");
    } else {
      if (noParams.contains(var8)) {
        AlgorithmIdentifier var9 = new AlgorithmIdentifier(var8);
        this.sigAlgId = var9;
      } else if (params.containsKey(var7)) {
        DEREncodable var17 = (DEREncodable) params.get(var7);
        AlgorithmIdentifier var18 = new AlgorithmIdentifier(var8, var17);
        this.sigAlgId = var18;
      } else {
        AlgorithmIdentifier var19 = new AlgorithmIdentifier(var8, (DEREncodable) null);
        this.sigAlgId = var19;
      }

      try {
        ASN1Sequence var10 = (ASN1Sequence) ASN1Object.fromByteArray(var3.getEncoded());
        SubjectPublicKeyInfo var11 = new SubjectPublicKeyInfo(var10);
        CertificationRequestInfo var12 = new CertificationRequestInfo(var2, var11, var4);
        this.reqInfo = var12;
      } catch (IOException var24) {
        throw new IllegalArgumentException("can\'t encode public key");
      }

      Signature var13;
      if (var6 == null) {
        var13 = Signature.getInstance(var1);
      } else {
        var13 = Signature.getInstance(var1, var6);
      }

      var13.initSign(var5);

      try {
        byte[] var14 = this.reqInfo.getEncoded("DER");
        var13.update(var14);
      } catch (Exception var23) {
        String var22 = "exception encoding TBS cert request - " + var23;
        throw new IllegalArgumentException(var22);
      }

      byte[] var15 = var13.sign();
      DERBitString var16 = new DERBitString(var15);
      this.sigBits = var16;
    }
  }
예제 #2
0
  public void writeObject(Object var1, String var2, char[] var3, SecureRandom var4)
      throws IOException {
    if (var1 instanceof KeyPair) {
      PrivateKey var5 = ((KeyPair) var1).getPrivate();
      this.writeObject(var5);
    } else {
      String var8 = null;
      byte[] var9 = null;
      if (var1 instanceof RSAPrivateCrtKey) {
        var8 = "RSA PRIVATE KEY";
        RSAPrivateCrtKey var10 = (RSAPrivateCrtKey) var1;
        BigInteger var11 = var10.getModulus();
        BigInteger var12 = var10.getPublicExponent();
        BigInteger var13 = var10.getPrivateExponent();
        BigInteger var14 = var10.getPrimeP();
        BigInteger var15 = var10.getPrimeQ();
        BigInteger var16 = var10.getPrimeExponentP();
        BigInteger var17 = var10.getPrimeExponentQ();
        BigInteger var18 = var10.getCrtCoefficient();
        var9 =
            (new RSAPrivateKeyStructure(var11, var12, var13, var14, var15, var16, var17, var18))
                .getEncoded();
      } else if (var1 instanceof DSAPrivateKey) {
        var8 = "DSA PRIVATE KEY";
        DSAPrivateKey var22 = (DSAPrivateKey) var1;
        DSAParams var23 = var22.getParams();
        ASN1EncodableVector var24 = new ASN1EncodableVector();
        DERInteger var25 = new DERInteger(0);
        var24.add(var25);
        BigInteger var28 = var23.getP();
        DERInteger var29 = new DERInteger(var28);
        var24.add(var29);
        BigInteger var32 = var23.getQ();
        DERInteger var33 = new DERInteger(var32);
        var24.add(var33);
        BigInteger var36 = var23.getG();
        DERInteger var37 = new DERInteger(var36);
        var24.add(var37);
        BigInteger var40 = var22.getX();
        BigInteger var41 = var23.getG();
        BigInteger var42 = var23.getP();
        BigInteger var46 = var41.modPow(var40, var42);
        DERInteger var47 = new DERInteger(var46);
        var24.add(var47);
        DERInteger var52 = new DERInteger(var40);
        var24.add(var52);
        DERSequence var57 = new DERSequence(var24);
        var9 = var57.getEncoded();
      } else if (var1 instanceof PrivateKey) {
        String var60 = ((PrivateKey) var1).getAlgorithm();
        if ("ECDSA".equals(var60)) {
          var8 = "EC PRIVATE KEY";
          var9 =
              PrivateKeyInfo.getInstance(ASN1Object.fromByteArray(((PrivateKey) var1).getEncoded()))
                  .getPrivateKey()
                  .getEncoded();
        }
      }

      if (var8 != null && var9 != null) {
        String var61 = Strings.toUpperCase(var2);
        if (var61.equals("DESEDE")) {
          var61 = "DES-EDE3-CBC";
        }

        byte var62;
        if (var61.startsWith("AES-")) {
          var62 = 16;
        } else {
          var62 = 8;
        }

        byte[] var63 = new byte[var62];
        var4.nextBytes(var63);
        String var66 = this.provider;
        byte[] var68 = PEMUtilities.crypt((boolean) 1, var66, var9, var3, var61, var63);
        this.writeHeader(var8);
        String var72 = "Proc-Type: 4,ENCRYPTED";
        this.write(var72);
        this.newLine();
        String var73 = "DEK-Info: " + var61 + ",";
        this.write(var73);
        this.writeHexEncoded(var63);
        this.newLine();
        this.newLine();
        this.writeEncoded(var68);
        this.writeFooter(var8);
      } else {
        StringBuilder var19 = (new StringBuilder()).append("Object type not supported: ");
        String var20 = var1.getClass().getName();
        String var21 = var19.append(var20).toString();
        throw new IllegalArgumentException(var21);
      }
    }
  }
예제 #3
0
  public void writeObject(Object var1) throws IOException {
    String var2;
    byte[] var3;
    byte[] var4;
    if (var1 instanceof X509Certificate) {
      var2 = "CERTIFICATE";

      try {
        var3 = ((X509Certificate) var1).getEncoded();
      } catch (CertificateEncodingException var32) {
        StringBuilder var6 = (new StringBuilder()).append("Cannot encode object: ");
        String var7 = var32.toString();
        String var8 = var6.append(var7).toString();
        throw new IOException(var8);
      }

      var4 = var3;
    } else if (var1 instanceof X509CRL) {
      var2 = "X509 CRL";

      try {
        var3 = ((X509CRL) var1).getEncoded();
      } catch (CRLException var31) {
        StringBuilder var10 = (new StringBuilder()).append("Cannot encode object: ");
        String var11 = var31.toString();
        String var12 = var10.append(var11).toString();
        throw new IOException(var12);
      }

      var4 = var3;
    } else {
      if (var1 instanceof KeyPair) {
        PrivateKey var13 = ((KeyPair) var1).getPrivate();
        this.writeObject(var13);
        return;
      }

      if (var1 instanceof PrivateKey) {
        ASN1Sequence var14 = (ASN1Sequence) ASN1Object.fromByteArray(((Key) var1).getEncoded());
        PrivateKeyInfo var15 = new PrivateKeyInfo(var14);
        if (var1 instanceof RSAPrivateKey) {
          var2 = "RSA PRIVATE KEY";
          var4 = var15.getPrivateKey().getEncoded();
        } else if (var1 instanceof DSAPrivateKey) {
          var2 = "DSA PRIVATE KEY";
          DSAParameter var16 = DSAParameter.getInstance(var15.getAlgorithmId().getParameters());
          ASN1EncodableVector var17 = new ASN1EncodableVector();
          DERInteger var18 = new DERInteger(0);
          var17.add(var18);
          BigInteger var19 = var16.getP();
          DERInteger var20 = new DERInteger(var19);
          var17.add(var20);
          BigInteger var21 = var16.getQ();
          DERInteger var22 = new DERInteger(var21);
          var17.add(var22);
          BigInteger var23 = var16.getG();
          DERInteger var24 = new DERInteger(var23);
          var17.add(var24);
          BigInteger var25 = ((DSAPrivateKey) var1).getX();
          BigInteger var26 = var16.getG();
          BigInteger var27 = var16.getP();
          BigInteger var28 = var26.modPow(var25, var27);
          DERInteger var29 = new DERInteger(var28);
          var17.add(var29);
          DERInteger var30 = new DERInteger(var25);
          var17.add(var30);
          var4 = (new DERSequence(var17)).getEncoded();
        } else {
          if (!((PrivateKey) var1).getAlgorithm().equals("ECDSA")) {
            throw new IOException("Cannot identify private key");
          }

          var2 = "EC PRIVATE KEY";
          var4 = var15.getPrivateKey().getEncoded();
        }
      } else if (var1 instanceof PublicKey) {
        var2 = "PUBLIC KEY";
        var4 = ((PublicKey) var1).getEncoded();
      } else if (var1 instanceof X509AttributeCertificate) {
        var2 = "ATTRIBUTE CERTIFICATE";
        var4 = ((X509V2AttributeCertificate) var1).getEncoded();
      } else if (var1 instanceof PKCS10CertificationRequest) {
        var2 = "CERTIFICATE REQUEST";
        var4 = ((PKCS10CertificationRequest) var1).getEncoded();
      } else {
        if (!(var1 instanceof ContentInfo)) {
          throw new IOException("unknown object passed - can\'t encode.");
        }

        var2 = "PKCS7";
        var4 = ((ContentInfo) var1).getEncoded();
      }
    }

    this.writeHeader(var2);
    this.writeEncoded(var4);
    this.writeFooter(var2);
  }