in aws-iot-device-sdk-java-samples/src/main/java/com/amazonaws/services/iot/client/sample/sampleUtil/PrivateKeyReader.java [106:141]
public static PrivateKey getPrivateKey(InputStream stream, String algorithm) throws IOException,
GeneralSecurityException {
PrivateKey key = null;
boolean isRSAKey = false;
BufferedReader br = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
StringBuilder builder = new StringBuilder();
boolean inKey = false;
for (String line = br.readLine(); line != null; line = br.readLine()) {
if (!inKey) {
if (line.startsWith("-----BEGIN ") && line.endsWith(" PRIVATE KEY-----")) {
inKey = true;
isRSAKey = line.contains("RSA");
}
continue;
} else {
if (line.startsWith("-----END ") && line.endsWith(" PRIVATE KEY-----")) {
inKey = false;
isRSAKey = line.contains("RSA");
break;
}
builder.append(line);
}
}
KeySpec keySpec = null;
byte[] encoded = Base64.decodeBase64(builder.toString());
if (isRSAKey) {
keySpec = getRSAKeySpec(encoded);
} else {
keySpec = new PKCS8EncodedKeySpec(encoded);
}
KeyFactory kf = KeyFactory.getInstance((algorithm == null) ? "RSA" : algorithm);
key = kf.generatePrivate(keySpec);
return key;
}