private RSAPrivateKey readKeyFile() throws IOException, NoSuchAlgorithmException, InvalidKeySpecException { List<String> items = readPEMFileIntoItems(sslKeyFile); if (items.size() != 1) throw new IllegalArgumentException("invalid key file contents"); Matcher matcher = KEY_PATTERN.matcher(items.get(0)); if (!matcher.matches()) throw new IllegalArgumentException("invalid key file contents"); String keyType = matcher.group(1); String keyData = matcher.group(2); if (keyType.length() == 0) { // BEGIN PRIVATE KEY KeyFactory keyFactory = KeyFactory.getInstance("RSA"); return (RSAPrivateKey) keyFactory.generatePrivate(new PKCS8EncodedKeySpec(Base64.decode(keyData))); } if (keyType.contains("RSA")) { // BEGIN RSA PRIVATE KEY Security.addProvider(new BouncyCastleProvider()); PEMParser pemParser = new PEMParser(new FileReader(sslKeyFile)); Object parsedObject = pemParser.readObject(); if (!(parsedObject instanceof PEMKeyPair)) throw new IllegalArgumentException("invalid key file contents"); PEMKeyPair keyPair = (PEMKeyPair) parsedObject; RSAPrivateKey privateKey = (RSAPrivateKey) BouncyCastleProvider.getPrivateKey(keyPair.getPrivateKeyInfo()); if (privateKey == null) throw new IllegalArgumentException("invalid key file contents"); return privateKey; } throw new IllegalArgumentException("invalid key file contents"); }
return BouncyCastleProvider.getPrivateKey(PrivateKeyInfo.getInstance(enc)); case KEY_PUBLIC: return BouncyCastleProvider.getPublicKey(SubjectPublicKeyInfo.getInstance(enc));
protected PrivateKey engineGeneratePrivate( KeySpec keySpec) throws InvalidKeySpecException { if (keySpec instanceof PKCS8EncodedKeySpec) { try { PrivateKeyInfo info = PrivateKeyInfo.getInstance(((PKCS8EncodedKeySpec)keySpec).getEncoded()); PrivateKey key = BouncyCastleProvider.getPrivateKey(info); if (key != null) { return key; } throw new InvalidKeySpecException("no factory found for OID: " + info.getPrivateKeyAlgorithm().getAlgorithm()); } catch (Exception e) { throw new InvalidKeySpecException(e.toString()); } } throw new InvalidKeySpecException("Unknown KeySpec type: " + keySpec.getClass().getName()); }
PrivateKey privKey = BouncyCastleProvider.getPrivateKey(in);
PrivateKey privKey = BouncyCastleProvider.getPrivateKey(in);
PrivateKey privKey = BouncyCastleProvider.getPrivateKey(kInfo);
PrivateKey privateKey = BouncyCastleProvider.getPrivateKey(PrivateKeyInfo.getInstance(bytes));