* @throws InvalidSshKeyException
*/
public byte[] encryptKeyblob(byte[] keyblob, String passphrase)
throws InvalidSshKeyException {
try {
ByteArrayReader bar = new ByteArrayReader(keyblob);
String algorithm = bar.readString(); // dsa or rsa
byte[] payload;
PEMWriter pem = new PEMWriter();
if ("ssh-dss".equals(algorithm)) {
BigInteger p = bar.readBigInteger();
BigInteger q = bar.readBigInteger();
BigInteger g = bar.readBigInteger();
BigInteger x = bar.readBigInteger();
DSAKeyInfo keyInfo = new DSAKeyInfo(p, q, g, x, BigInteger.ZERO);
SimpleASNWriter asn = new SimpleASNWriter();
DSAKeyInfo.writeDSAKeyInfo(asn, keyInfo);
payload = asn.toByteArray();
pem.setType(PEM.DSA_PRIVATE_KEY);
} else if ("ssh-rsa".equals(algorithm)) {
BigInteger e = bar.readBigInteger();
BigInteger n = bar.readBigInteger();
BigInteger p = bar.readBigInteger();
RSAKeyInfo keyInfo = new RSAKeyInfo(n, p, e, BigInteger.ZERO,
BigInteger.ZERO, BigInteger.ZERO, BigInteger.ZERO,
BigInteger.ZERO);
SimpleASNWriter asn = new SimpleASNWriter();
RSAKeyInfo.writeRSAKeyInfo(asn, keyInfo);