Example usage for java.security Key getAlgorithm

List of usage examples for java.security Key getAlgorithm

Introduction

In this page you can find the example usage for java.security Key getAlgorithm.

Prototype

public String getAlgorithm();

Source Link

Document

Returns the standard algorithm name for this key.

Usage

From source file:org.apache.hadoop.hbase.io.hfile.HFileReaderImpl.java

protected HFileContext createHFileContext(FSDataInputStreamWrapper fsdis, long fileSize, HFileSystem hfs,
        Path path, FixedFileTrailer trailer) throws IOException {
    HFileContextBuilder builder = new HFileContextBuilder().withIncludesMvcc(shouldIncludeMemstoreTS())
            .withHBaseCheckSum(true).withHFileName(this.getName()).withCompression(this.compressAlgo);

    // Check for any key material available
    byte[] keyBytes = trailer.getEncryptionKey();
    if (keyBytes != null) {
        Encryption.Context cryptoContext = Encryption.newContext(conf);
        Key key;
        String masterKeyName = conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY,
                User.getCurrent().getShortName());
        try {//ww w  .j  ava 2s  .  c o m
            // First try the master key
            key = EncryptionUtil.unwrapKey(conf, masterKeyName, keyBytes);
        } catch (KeyException e) {
            // If the current master key fails to unwrap, try the alternate, if
            // one is configured
            if (LOG.isDebugEnabled()) {
                LOG.debug("Unable to unwrap key with current master key '" + masterKeyName + "'");
            }
            String alternateKeyName = conf.get(HConstants.CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY);
            if (alternateKeyName != null) {
                try {
                    key = EncryptionUtil.unwrapKey(conf, alternateKeyName, keyBytes);
                } catch (KeyException ex) {
                    throw new IOException(ex);
                }
            } else {
                throw new IOException(e);
            }
        }
        // Use the algorithm the key wants
        Cipher cipher = Encryption.getCipher(conf, key.getAlgorithm());
        if (cipher == null) {
            throw new IOException("Cipher '" + key.getAlgorithm() + "' is not available");
        }
        cryptoContext.setCipher(cipher);
        cryptoContext.setKey(key);
        builder.withEncryptionContext(cryptoContext);
    }

    HFileContext context = builder.build();

    if (LOG.isTraceEnabled()) {
        LOG.trace("Reader" + (path != null ? " for " + path : "") + " initialized with cacheConf: " + cacheConf
                + " comparator: " + comparator.getClass().getSimpleName() + " fileContext: " + context);
    }

    return context;
}

From source file:org.apache.hadoop.hbase.io.hfile.HFileReaderV3.java

@Override
protected HFileContext createHFileContext(FSDataInputStreamWrapper fsdis, long fileSize, HFileSystem hfs,
        Path path, FixedFileTrailer trailer) throws IOException {
    trailer.expectMajorVersion(3);//  w  w  w. j a va2  s. com
    HFileContextBuilder builder = new HFileContextBuilder().withIncludesMvcc(this.includesMemstoreTS)
            .withHBaseCheckSum(true).withCompression(this.compressAlgo);

    // Check for any key material available
    byte[] keyBytes = trailer.getEncryptionKey();
    if (keyBytes != null) {
        Encryption.Context cryptoContext = Encryption.newContext(conf);
        Key key;
        String masterKeyName = conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY,
                User.getCurrent().getShortName());
        try {
            // First try the master key
            key = EncryptionUtil.unwrapKey(conf, masterKeyName, keyBytes);
        } catch (KeyException e) {
            // If the current master key fails to unwrap, try the alternate, if
            // one is configured
            if (LOG.isDebugEnabled()) {
                LOG.debug("Unable to unwrap key with current master key '" + masterKeyName + "'");
            }
            String alternateKeyName = conf.get(HConstants.CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY);
            if (alternateKeyName != null) {
                try {
                    key = EncryptionUtil.unwrapKey(conf, alternateKeyName, keyBytes);
                } catch (KeyException ex) {
                    throw new IOException(ex);
                }
            } else {
                throw new IOException(e);
            }
        }
        // Use the algorithm the key wants
        Cipher cipher = Encryption.getCipher(conf, key.getAlgorithm());
        if (cipher == null) {
            throw new IOException("Cipher '" + key.getAlgorithm() + "' is not available");
        }
        cryptoContext.setCipher(cipher);
        cryptoContext.setKey(key);
        builder.withEncryptionContext(cryptoContext);
    }

    HFileContext context = builder.build();

    if (LOG.isTraceEnabled()) {
        LOG.trace("Reader" + (path != null ? " for " + path : "") + " initialized with cacheConf: " + cacheConf
                + " comparator: " + comparator.getClass().getSimpleName() + " fileContext: " + context);
    }

    return context;
}

From source file:org.apache.hadoop.hbase.mob.MobUtils.java

/**
 * Creates the encyption context.//from w  ww.java2s .c  om
 * @param conf The current configuration.
 * @param family The current column descriptor.
 * @return The encryption context.
 * @throws IOException
 */
public static Encryption.Context createEncryptionContext(Configuration conf, HColumnDescriptor family)
        throws IOException {
    // TODO the code is repeated, and needs to be unified.
    Encryption.Context cryptoContext = Encryption.Context.NONE;
    String cipherName = family.getEncryptionType();
    if (cipherName != null) {
        Cipher cipher;
        Key key;
        byte[] keyBytes = family.getEncryptionKey();
        if (keyBytes != null) {
            // Family provides specific key material
            String masterKeyName = conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY,
                    User.getCurrent().getShortName());
            try {
                // First try the master key
                key = EncryptionUtil.unwrapKey(conf, masterKeyName, keyBytes);
            } catch (KeyException e) {
                // If the current master key fails to unwrap, try the alternate, if
                // one is configured
                if (LOG.isDebugEnabled()) {
                    LOG.debug("Unable to unwrap key with current master key '" + masterKeyName + "'");
                }
                String alternateKeyName = conf.get(HConstants.CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY);
                if (alternateKeyName != null) {
                    try {
                        key = EncryptionUtil.unwrapKey(conf, alternateKeyName, keyBytes);
                    } catch (KeyException ex) {
                        throw new IOException(ex);
                    }
                } else {
                    throw new IOException(e);
                }
            }
            // Use the algorithm the key wants
            cipher = Encryption.getCipher(conf, key.getAlgorithm());
            if (cipher == null) {
                throw new RuntimeException("Cipher '" + key.getAlgorithm() + "' is not available");
            }
            // Fail if misconfigured
            // We use the encryption type specified in the column schema as a sanity check on
            // what the wrapped key is telling us
            if (!cipher.getName().equalsIgnoreCase(cipherName)) {
                throw new RuntimeException(
                        "Encryption for family '" + family.getNameAsString() + "' configured with type '"
                                + cipherName + "' but key specifies algorithm '" + cipher.getName() + "'");
            }
        } else {
            // Family does not provide key material, create a random key
            cipher = Encryption.getCipher(conf, cipherName);
            if (cipher == null) {
                throw new RuntimeException("Cipher '" + cipherName + "' is not available");
            }
            key = cipher.getRandomKey();
        }
        cryptoContext = Encryption.newContext(conf);
        cryptoContext.setCipher(cipher);
        cryptoContext.setKey(key);
    }
    return cryptoContext;
}

From source file:org.apache.hadoop.hbase.regionserver.HStore.java

/**
 * Constructor/*  w  w w .  j  a v  a 2s. c  o  m*/
 * @param region
 * @param family HColumnDescriptor for this column
 * @param confParam configuration object
 * failed.  Can be null.
 * @throws IOException
 */
protected HStore(final HRegion region, final HColumnDescriptor family, final Configuration confParam)
        throws IOException {

    HRegionInfo info = region.getRegionInfo();
    this.fs = region.getRegionFileSystem();

    // Assemble the store's home directory and Ensure it exists.
    fs.createStoreDir(family.getNameAsString());
    this.region = region;
    this.family = family;
    // 'conf' renamed to 'confParam' b/c we use this.conf in the constructor
    // CompoundConfiguration will look for keys in reverse order of addition, so we'd
    // add global config first, then table and cf overrides, then cf metadata.
    this.conf = new CompoundConfiguration().add(confParam)
            .addStringMap(region.getTableDesc().getConfiguration()).addStringMap(family.getConfiguration())
            .addWritableMap(family.getValues());
    this.blocksize = family.getBlocksize();

    this.dataBlockEncoder = new HFileDataBlockEncoderImpl(family.getDataBlockEncoding());

    this.comparator = info.getComparator();
    // used by ScanQueryMatcher
    long timeToPurgeDeletes = Math.max(conf.getLong("hbase.hstore.time.to.purge.deletes", 0), 0);
    LOG.trace("Time to purge deletes set to " + timeToPurgeDeletes + "ms in store " + this);
    // Get TTL
    long ttl = determineTTLFromFamily(family);
    // Why not just pass a HColumnDescriptor in here altogether?  Even if have
    // to clone it?
    scanInfo = new ScanInfo(family, ttl, timeToPurgeDeletes, this.comparator);
    String className = conf.get(MEMSTORE_CLASS_NAME, DefaultMemStore.class.getName());
    this.memstore = ReflectionUtils.instantiateWithCustomCtor(className,
            new Class[] { Configuration.class, KeyValue.KVComparator.class },
            new Object[] { conf, this.comparator });
    this.offPeakHours = OffPeakHours.getInstance(conf);

    // Setting up cache configuration for this family
    this.cacheConf = new CacheConfig(conf, family);

    this.verifyBulkLoads = conf.getBoolean("hbase.hstore.bulkload.verify", false);

    this.blockingFileCount = conf.getInt(BLOCKING_STOREFILES_KEY, DEFAULT_BLOCKING_STOREFILE_COUNT);
    this.compactionCheckMultiplier = conf.getInt(COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY,
            DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER);
    if (this.compactionCheckMultiplier <= 0) {
        LOG.error("Compaction check period multiplier must be positive, setting default: "
                + DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER);
        this.compactionCheckMultiplier = DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER;
    }

    if (HStore.closeCheckInterval == 0) {
        HStore.closeCheckInterval = conf.getInt("hbase.hstore.close.check.interval",
                10 * 1000 * 1000 /* 10 MB */);
    }

    this.storeEngine = StoreEngine.create(this, this.conf, this.comparator);
    this.storeEngine.getStoreFileManager().loadFiles(loadStoreFiles());

    // Initialize checksum type from name. The names are CRC32, CRC32C, etc.
    this.checksumType = getChecksumType(conf);
    // initilize bytes per checksum
    this.bytesPerChecksum = getBytesPerChecksum(conf);
    flushRetriesNumber = conf.getInt("hbase.hstore.flush.retries.number", DEFAULT_FLUSH_RETRIES_NUMBER);
    pauseTime = conf.getInt(HConstants.HBASE_SERVER_PAUSE, HConstants.DEFAULT_HBASE_SERVER_PAUSE);
    if (flushRetriesNumber <= 0) {
        throw new IllegalArgumentException(
                "hbase.hstore.flush.retries.number must be > 0, not " + flushRetriesNumber);
    }

    // Crypto context for new store files
    String cipherName = family.getEncryptionType();
    if (cipherName != null) {
        Cipher cipher;
        Key key;
        byte[] keyBytes = family.getEncryptionKey();
        if (keyBytes != null) {
            // Family provides specific key material
            String masterKeyName = conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY,
                    User.getCurrent().getShortName());
            try {
                // First try the master key
                key = EncryptionUtil.unwrapKey(conf, masterKeyName, keyBytes);
            } catch (KeyException e) {
                // If the current master key fails to unwrap, try the alternate, if
                // one is configured
                if (LOG.isDebugEnabled()) {
                    LOG.debug("Unable to unwrap key with current master key '" + masterKeyName + "'");
                }
                String alternateKeyName = conf.get(HConstants.CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY);
                if (alternateKeyName != null) {
                    try {
                        key = EncryptionUtil.unwrapKey(conf, alternateKeyName, keyBytes);
                    } catch (KeyException ex) {
                        throw new IOException(ex);
                    }
                } else {
                    throw new IOException(e);
                }
            }
            // Use the algorithm the key wants
            cipher = Encryption.getCipher(conf, key.getAlgorithm());
            if (cipher == null) {
                throw new RuntimeException("Cipher '" + cipher + "' is not available");
            }
            // Fail if misconfigured
            // We use the encryption type specified in the column schema as a sanity check on
            // what the wrapped key is telling us
            if (!cipher.getName().equalsIgnoreCase(cipherName)) {
                throw new RuntimeException(
                        "Encryption for family '" + family.getNameAsString() + "' configured with type '"
                                + cipherName + "' but key specifies algorithm '" + cipher.getName() + "'");
            }
        } else {
            // Family does not provide key material, create a random key
            cipher = Encryption.getCipher(conf, cipherName);
            if (cipher == null) {
                throw new RuntimeException("Cipher '" + cipher + "' is not available");
            }
            key = cipher.getRandomKey();
        }
        cryptoContext = Encryption.newContext(conf);
        cryptoContext.setCipher(cipher);
        cryptoContext.setKey(key);
    }
}

From source file:org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogReader.java

@Override
protected boolean readHeader(WALHeader.Builder builder, FSDataInputStream stream) throws IOException {
    boolean result = super.readHeader(builder, stream);
    // We need to unconditionally handle the case where the WAL has a key in
    // the header, meaning it is encrypted, even if ENABLE_WAL_ENCRYPTION is
    // no longer set in the site configuration.
    if (result && builder.hasEncryptionKey()) {
        // Serialized header data has been merged into the builder from the
        // stream.

        // Retrieve a usable key

        byte[] keyBytes = builder.getEncryptionKey().toByteArray();
        Key key = null;
        String walKeyName = conf.get(HConstants.CRYPTO_WAL_KEY_NAME_CONF_KEY);
        // First try the WAL key, if one is configured
        if (walKeyName != null) {
            try {
                key = EncryptionUtil.unwrapKey(conf, walKeyName, keyBytes);
            } catch (KeyException e) {
                if (LOG.isDebugEnabled()) {
                    LOG.debug("Unable to unwrap key with WAL key '" + walKeyName + "'");
                }//from   w  ww.j a  va  2  s . c  om
                key = null;
            }
        }
        if (key == null) {
            String masterKeyName = conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY,
                    User.getCurrent().getShortName());
            try {
                // Then, try the cluster master key
                key = EncryptionUtil.unwrapKey(conf, masterKeyName, keyBytes);
            } catch (KeyException e) {
                // If the current master key fails to unwrap, try the alternate, if
                // one is configured
                if (LOG.isDebugEnabled()) {
                    LOG.debug("Unable to unwrap key with current master key '" + masterKeyName + "'");
                }
                String alternateKeyName = conf.get(HConstants.CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY);
                if (alternateKeyName != null) {
                    try {
                        key = EncryptionUtil.unwrapKey(conf, alternateKeyName, keyBytes);
                    } catch (KeyException ex) {
                        throw new IOException(ex);
                    }
                } else {
                    throw new IOException(e);
                }
            }
        }

        // Use the algorithm the key wants

        Cipher cipher = Encryption.getCipher(conf, key.getAlgorithm());
        if (cipher == null) {
            throw new IOException("Cipher '" + key.getAlgorithm() + "' is not available");
        }

        // Set up the decryptor for this WAL

        decryptor = cipher.getDecryptor();
        decryptor.setKey(key);

        if (LOG.isTraceEnabled()) {
            LOG.trace("Initialized secure protobuf WAL: cipher=" + cipher.getName());
        }
    }

    return result;
}

From source file:org.apache.hadoop.hbase.security.EncryptionUtil.java

/**
 * Protect a key by encrypting it with the secret key of the given subject.
 * The configuration must be set up correctly for key alias resolution.
 * @param conf configuration/* ww w  . j a va 2  s . c o  m*/
 * @param subject subject key alias
 * @param key the key
 * @return the encrypted key bytes
 */
public static byte[] wrapKey(Configuration conf, String subject, Key key) throws IOException {
    // Wrap the key with the configured encryption algorithm.
    String algorithm = conf.get(HConstants.CRYPTO_KEY_ALGORITHM_CONF_KEY, HConstants.CIPHER_AES);
    Cipher cipher = Encryption.getCipher(conf, algorithm);
    if (cipher == null) {
        throw new RuntimeException("Cipher '" + algorithm + "' not available");
    }
    EncryptionProtos.WrappedKey.Builder builder = EncryptionProtos.WrappedKey.newBuilder();
    builder.setAlgorithm(key.getAlgorithm());
    byte[] iv = null;
    if (cipher.getIvLength() > 0) {
        iv = new byte[cipher.getIvLength()];
        RNG.nextBytes(iv);
        builder.setIv(ByteStringer.wrap(iv));
    }
    byte[] keyBytes = key.getEncoded();
    builder.setLength(keyBytes.length);
    builder.setHash(ByteStringer.wrap(Encryption.hash128(keyBytes)));
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    Encryption.encryptWithSubjectKey(out, new ByteArrayInputStream(keyBytes), subject, conf, cipher, iv);
    builder.setData(ByteStringer.wrap(out.toByteArray()));
    // Build and return the protobuf message
    out.reset();
    builder.build().writeDelimitedTo(out);
    return out.toByteArray();
}

From source file:org.apache.hadoop.hbase.security.EncryptionUtil.java

/**
 * Helper to create an encyption context.
 *
 * @param conf The current configuration.
 * @param family The current column descriptor.
 * @return The created encryption context.
 * @throws IOException if an encryption key for the column cannot be unwrapped
 *///from  ww w . j  a v  a2 s .com
public static Encryption.Context createEncryptionContext(Configuration conf, HColumnDescriptor family)
        throws IOException {
    Encryption.Context cryptoContext = Encryption.Context.NONE;
    String cipherName = family.getEncryptionType();
    if (cipherName != null) {
        Cipher cipher;
        Key key;
        byte[] keyBytes = family.getEncryptionKey();
        if (keyBytes != null) {
            // Family provides specific key material
            key = unwrapKey(conf, keyBytes);
            // Use the algorithm the key wants
            cipher = Encryption.getCipher(conf, key.getAlgorithm());
            if (cipher == null) {
                throw new RuntimeException("Cipher '" + key.getAlgorithm() + "' is not available");
            }
            // Fail if misconfigured
            // We use the encryption type specified in the column schema as a sanity check on
            // what the wrapped key is telling us
            if (!cipher.getName().equalsIgnoreCase(cipherName)) {
                throw new RuntimeException(
                        "Encryption for family '" + family.getNameAsString() + "' configured with type '"
                                + cipherName + "' but key specifies algorithm '" + cipher.getName() + "'");
            }
        } else {
            // Family does not provide key material, create a random key
            cipher = Encryption.getCipher(conf, cipherName);
            if (cipher == null) {
                throw new RuntimeException("Cipher '" + cipherName + "' is not available");
            }
            key = cipher.getRandomKey();
        }
        cryptoContext = Encryption.newContext(conf);
        cryptoContext.setCipher(cipher);
        cryptoContext.setKey(key);
    }
    return cryptoContext;
}

From source file:org.apache.hadoop.io.crypto.KeyStoreKeyProvider.java

/**
 * Implementation of getting keys from the key store.
 *///from www.  j  ava 2 s. c o m
@Override
public Key[] getKeys(String[] keyNames) throws CryptoException {
    if (keyStore == null)
        throw new CryptoException("Key store is not intialized.");

    if (keyNames == null)
        return null;

    Key[] rawKeys = new Key[keyNames.length];

    try {
        for (int i = 0; i < keyNames.length; i++) {
            String keyName = keyNames[i];
            String password = getKeyPassword(keyName);

            char[] passphase = null;
            if (password != null)
                passphase = password.toCharArray();

            Key.KeyType keyType = Key.KeyType.OPAQUE;
            String algorithm = null;
            String format = null;
            byte[] rawKey;

            java.security.Key key = keyStore.getKey(keyName, passphase);
            if (key != null) {
                // secret key or private key
                rawKey = key.getEncoded();
                algorithm = key.getAlgorithm();
                format = key.getFormat();

                if (key instanceof SecretKey) {
                    keyType = Key.KeyType.SYMMETRIC_KEY;
                } else if (key instanceof PrivateKey) {
                    keyType = Key.KeyType.PRIVATE_KEY;
                }
            } else {
                // trusted certificate
                Certificate certificate = keyStore.getCertificate(keyName);
                if (certificate == null)
                    throw new CryptoException("Key " + keyName + " not found");

                keyType = Key.KeyType.CERTIFICATE;
                rawKey = certificate.getEncoded();
            }

            rawKeys[i] = new Key(keyType, algorithm, 0, format, rawKey);
        }
    } catch (KeyStoreException e) {
        throw new CryptoException(e);
    } catch (UnrecoverableEntryException e) {
        throw new CryptoException(e);
    } catch (NoSuchAlgorithmException e) {
        throw new CryptoException(e);
    } catch (CertificateException e) {
        throw new CryptoException(e);
    }

    return rawKeys;
}

From source file:org.apache.tapestry5.internal.util.MacOutputStream.java

public static MacOutputStream streamFor(Key key) throws IOException {
    try {//from   w w w  . j  a v  a  2s  .  c  om
        Mac mac = Mac.getInstance(key.getAlgorithm());
        mac.init(key);

        return new MacOutputStream(mac);
    } catch (Exception ex) {
        throw new IOException("Unable to create MacOutputStream: " + ExceptionUtils.toMessage(ex), ex);
    }
}

From source file:org.ejbca.core.protocol.ws.client.NestedCrmfRequestTestCommand.java

private void init(String args[]) {

    FileInputStream file_inputstream;
    try {//  www.j a v  a 2s .c o  m
        String pwd = args[ARG_KEYSTOREPASSWORD];
        String certNameInKeystore = args[ARG_CERTNAMEINKEYSTORE];
        file_inputstream = new FileInputStream(args[ARG_KEYSTOREPATH]);
        KeyStore keyStore = KeyStore.getInstance("PKCS12");
        keyStore.load(file_inputstream, pwd.toCharArray());
        System.out.println("Keystore size " + keyStore.size());
        Enumeration aliases = keyStore.aliases();
        while (aliases.hasMoreElements()) {
            System.out.println(aliases.nextElement());
        }
        Key key = keyStore.getKey(certNameInKeystore, pwd.toCharArray());
        getPrintStream().println("Key information " + key.getAlgorithm() + " " + key.getFormat());
        PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(key.getEncoded());
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        innerSignKey = keyFactory.generatePrivate(keySpec);
        innerCertificate = keyStore.getCertificate(certNameInKeystore);
    } catch (FileNotFoundException e2) {
        e2.printStackTrace();
    } catch (KeyStoreException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (CertificateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (UnrecoverableKeyException e) {
        e.printStackTrace();
    } catch (InvalidKeySpecException e) {
        e.printStackTrace();
    }

    try {
        KeyPair outerSignKeys = KeyTools.genKeys("1024", "RSA");
        outerSignKey = outerSignKeys.getPrivate();
        X509Certificate signCert = CertTools.genSelfCert("CN=cmpTest,C=SE", 5000, null,
                outerSignKeys.getPrivate(), outerSignKeys.getPublic(),
                PKCSObjectIdentifiers.sha256WithRSAEncryption.getId(), true, "BC");

        writeCertificate(signCert, "/opt/racerts", "cmpTest.pem");

        /*
        ArrayList<Certificate> certCollection = new ArrayList<Certificate>();
        certCollection.add(signCert);
        byte[] pemRaCert = CertTools.getPEMFromCerts(certCollection);
                
        FileOutputStream out = new FileOutputStream(new File("/opt/racerts/cmpStressTest.pem"));
        out.write(pemRaCert);
        out.close();
        */
    } catch (NoSuchAlgorithmException e1) {
        e1.printStackTrace();
    } catch (NoSuchProviderException e1) {
        e1.printStackTrace();
    } catch (InvalidAlgorithmParameterException e1) {
        e1.printStackTrace();
    } catch (InvalidKeyException e) {
        e.printStackTrace();
    } catch (CertificateEncodingException e) {
        e.printStackTrace();
    } catch (SignatureException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
        //} catch (FileNotFoundException e) {
        //   e.printStackTrace();
        //} catch (IOException e) {
        //   e.printStackTrace();
        //} catch (CertificateException e) {
        //   e.printStackTrace();
    }

}