protected Key engineTranslateKey( Key key) throws InvalidKeyException { if (key instanceof RSAPublicKey) { return new BCRSAPublicKey((RSAPublicKey)key); } else if (key instanceof RSAPrivateCrtKey) { return new BCRSAPrivateCrtKey((RSAPrivateCrtKey)key); } else if (key instanceof java.security.interfaces.RSAPrivateKey) { return new BCRSAPrivateKey((java.security.interfaces.RSAPrivateKey)key); } throw new InvalidKeyException("key type unknown"); }
public PrivateKey generatePrivate(PrivateKeyInfo keyInfo) throws IOException { ASN1ObjectIdentifier algOid = keyInfo.getPrivateKeyAlgorithm().getAlgorithm(); if (RSAUtil.isRsaOid(algOid)) { RSAPrivateKey rsaPrivKey = RSAPrivateKey.getInstance(keyInfo.parsePrivateKey()); if (rsaPrivKey.getCoefficient().intValue() == 0) { return new BCRSAPrivateKey(rsaPrivKey); } else { return new BCRSAPrivateCrtKey(keyInfo); } } else { throw new IOException("algorithm identifier " + algOid + " in key not recognised"); } }
/** * @param caDomainParamter */ public TerminalAuthenticationRSA(DomainParameter caDomainParamter, AmRSAPublicKey taPublicKey, RSAPrivateKey taSecretKey) { super(caDomainParamter); //TODO id_TA mit RSA implementieren. throw new UnsupportedOperationException("Terminal Authentication with RSA not yet implemented!"); // BigInteger modulus = taPublicKey.getModulus(); // BigInteger pubExp = taPublicKey.getPublicExponent(); // // if (taPublicKey.getOID().toString().equals(BSIObjectIdentifiers.id_TA_RSA_PSS_SHA_1.toString())) { // signingAlgorithm = "SHA1withRSA"; // } else if (taPublicKey.getOID().toString().equals(BSIObjectIdentifiers.id_TA_RSA_PSS_SHA_256.toString())) { // signingAlgorithm = "SHA256withRSA"; // } else if (taPublicKey.getOID().toString().equals(BSIObjectIdentifiers.id_TA_RSA_PSS_SHA_512.toString())) { // signingAlgorithm = "SHA512withRSA"; // } else if (taPublicKey.getOID().toString().equals(BSIObjectIdentifiers.id_TA_RSA_v1_5_SHA_1.toString())) { // signingAlgorithm = "SHA1withRSA"; // } else if (taPublicKey.getOID().toString().equals(BSIObjectIdentifiers.id_TA_RSA_v1_5_SHA_256.toString())) { // signingAlgorithm = "SHA256withRSA"; // } else if (taPublicKey.getOID().toString().equals(BSIObjectIdentifiers.id_TA_RSA_v1_5_SHA_512.toString())) { // signingAlgorithm = "SHA512withRSA"; // } // // this.terminalSK = taSecretKey; }
public static APrivateKey getRSAPrivateKey(byte[] b) throws Exception { ASN1InputStream in = new ASN1InputStream(b); try { ASN1Primitive x = in.readObject(); RSAPrivateKey k = RSAPrivateKey.getInstance(x); return new APrivateKey(new RSAPrivateCrtKeyParameters ( k.getModulus(), k.getPublicExponent(), k.getPrivateExponent(), k.getPrime1(), k.getPrime2(), k.getExponent1(), k.getExponent2(), k.getCoefficient() )); } finally { CKit.close(in); } }
/** * <p> * Encode (serialise) a private key in order to store it or transport it over a network. * </p><p> * <b>Important: You should keep your private key secret!</b> Thus, you might want to encrypt the result before * storing it to a file or sending it somewhere! * </p> * @param privateKey the private key to be encoded; must not be <code>null</code>. * @return the encoded (serialised) form of the private key. Can be passed to {@link #decodePrivateKey(byte[])} to * reverse this method. * @see #decodePrivateKey(byte[]) * @see #encodePublicKey(CipherParameters) */ public byte[] encodePrivateKey(final CipherParameters privateKey) { if (privateKey == null) throw new IllegalArgumentException("privateKey == null"); // TODO use a class-based map or similar registry! try { if (privateKey instanceof RSAPrivateCrtKeyParameters) { final RSAPrivateCrtKeyParameters rsaPrivateKey = (RSAPrivateCrtKeyParameters) privateKey; final PrivateKeyInfo info = new PrivateKeyInfo( new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE), new RSAPrivateKey( rsaPrivateKey.getModulus(), rsaPrivateKey.getPublicExponent(), rsaPrivateKey.getExponent(), rsaPrivateKey.getP(), rsaPrivateKey.getQ(), rsaPrivateKey.getDP(), rsaPrivateKey.getDQ(), rsaPrivateKey.getQInv()).toASN1Primitive() ); return info.getEncoded(); } } catch (final IOException x) { throw new RuntimeException(x); } throw new UnsupportedOperationException("privateKey.class=\"" + privateKey.getClass().getName() + "\" not yet supported!"); }
static AsymmetricKeyParameter loadPrivateKeyResource(String resource) throws IOException { PemObject pem = loadPemResource(resource); if (pem.getType().endsWith("RSA PRIVATE KEY")) { RSAPrivateKey rsa = RSAPrivateKey.getInstance(pem.getContent()); return new RSAPrivateCrtKeyParameters(rsa.getModulus(), rsa.getPublicExponent(), rsa.getPrivateExponent(), rsa.getPrime1(), rsa.getPrime2(), rsa.getExponent1(), rsa.getExponent2(), rsa.getCoefficient()); } if (pem.getType().endsWith("PRIVATE KEY")) { return PrivateKeyFactory.createKey(pem.getContent()); } throw new IllegalArgumentException("'resource' doesn't specify a valid private key"); }
/** * construct an RSA key from a private key info object. */ JCERSAPrivateCrtKey( PrivateKeyInfo info) throws IOException { this(org.bouncycastle.asn1.pkcs.RSAPrivateKey.getInstance(info.parsePrivateKey())); }
/** * construct an RSA key from a ASN.1 RSA private key object. */ JCERSAPrivateCrtKey( RSAPrivateKey key) { this.modulus = key.getModulus(); this.publicExponent = key.getPublicExponent(); this.privateExponent = key.getPrivateExponent(); this.primeP = key.getPrime1(); this.primeQ = key.getPrime2(); this.primeExponentP = key.getExponent1(); this.primeExponentQ = key.getExponent2(); this.crtCoefficient = key.getCoefficient(); }
protected PrivateKey engineGeneratePrivate( KeySpec keySpec) throws InvalidKeySpecException { if (keySpec instanceof PKCS8EncodedKeySpec) { try { return generatePrivate(PrivateKeyInfo.getInstance(((PKCS8EncodedKeySpec)keySpec).getEncoded())); } catch (Exception e) { // // in case it's just a RSAPrivateKey object... -- openSSL produces these // try { return new BCRSAPrivateCrtKey( RSAPrivateKey.getInstance(((PKCS8EncodedKeySpec)keySpec).getEncoded())); } catch (Exception ex) { throw new ExtendedInvalidKeySpecException("unable to process key spec: " + e.toString(), e); } } } else if (keySpec instanceof RSAPrivateCrtKeySpec) { return new BCRSAPrivateCrtKey((RSAPrivateCrtKeySpec)keySpec); } else if (keySpec instanceof RSAPrivateKeySpec) { return new BCRSAPrivateKey((RSAPrivateKeySpec)keySpec); } throw new InvalidKeySpecException("Unknown KeySpec type: " + keySpec.getClass().getName()); }
/** * construct an RSA key from a private key info object. */ BCRSAPrivateCrtKey( PrivateKeyInfo info) throws IOException { this(RSAPrivateKey.getInstance(info.parsePrivateKey())); }
/** * construct an RSA key from a ASN.1 RSA private key object. */ BCRSAPrivateCrtKey( RSAPrivateKey key) { this.modulus = key.getModulus(); this.publicExponent = key.getPublicExponent(); this.privateExponent = key.getPrivateExponent(); this.primeP = key.getPrime1(); this.primeQ = key.getPrime2(); this.primeExponentP = key.getExponent1(); this.primeExponentQ = key.getExponent2(); this.crtCoefficient = key.getCoefficient(); }
public static RSAPrivateKey toRSAPrivateKey(RSAPrivateCrtKeyParameters k) throws Exception { // hope this is correct return new RSAPrivateKey ( k.getModulus(), k.getPublicExponent(), k.getExponent(), k.getP(), k.getQ(), k.getDP(), k.getDQ(), k.getQInv() ); }
/** * construct an RSA key from a private key info object. */ TempJCERSAPrivateCrtKey( PrivateKeyInfo info) throws IOException { this(org.bouncycastle.asn1.pkcs.RSAPrivateKey.getInstance(info.parsePrivateKey())); }
/** * construct an RSA key from a ASN.1 RSA private key object. */ TempJCERSAPrivateCrtKey( RSAPrivateKey key) { this.modulus = key.getModulus(); this.publicExponent = key.getPublicExponent(); this.privateExponent = key.getPrivateExponent(); this.primeP = key.getPrime1(); this.primeQ = key.getPrime2(); this.primeExponentP = key.getExponent1(); this.primeExponentQ = key.getExponent2(); this.crtCoefficient = key.getCoefficient(); }
public void loadKeys() { try { FileInputStream idCertIS = new FileInputStream(new File("keys/identity.crt")); FileInputStream linkCertIS = new FileInputStream(new File("keys/link.crt")); FileInputStream authCertIS = new FileInputStream(new File("keys/auth.crt")); CertificateFactory cf = null; cf = CertificateFactory.getInstance("X.509"); identityCert = (X509Certificate) cf.generateCertificate(idCertIS); log.info("Our Identity Cert Digest: " + Hex.toHexString(TorCrypto.getSHA1().digest(TorCrypto.publicKeyToASN1((RSAPublicKey) identityCert.getPublicKey())))); linkCert = (X509Certificate) cf.generateCertificate(linkCertIS); log.info("Our Link Cert Digest: " + Hex.toHexString(TorCrypto.getSHA1().digest(TorCrypto.publicKeyToASN1((RSAPublicKey) linkCert.getPublicKey())))); authCert = (X509Certificate) cf.generateCertificate(authCertIS); log.info("Our Auth Cert Digest: " + Hex.toHexString(TorCrypto.getSHA1().digest(TorCrypto.publicKeyToASN1((RSAPublicKey) authCert.getPublicKey())))); identityPubKey = (RSAPublicKey) identityCert.getPublicKey(); FileReader in = new FileReader("keys/identity.key"); identityPrivKey = RSAPrivateKey.getInstance(new PemReader(in).readPemObject().getContent()); } catch (CertificateException | IOException e) { log.error("Unable to load server public key"); System.exit(1); } }