Package com.browserup.bup.mitm.tools
Interface SecurityProviderTool
-
- All Known Implementing Classes:
BouncyCastleSecurityProviderTool,DefaultSecurityProviderTool
public interface SecurityProviderToolGeneric interface for functionality provided by a Security Provider.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description CertificateAndKeycreateCARootCertificate(CertificateInfo certificateInfo, java.security.KeyPair keyPair, java.lang.String messageDigest)Creates a new self-signed CA root certificate, suitable for use signing new server certificates.java.security.KeyStorecreateRootCertificateKeyStore(java.lang.String keyStoreType, CertificateAndKey rootCertificateAndKey, java.lang.String privateKeyAlias, java.lang.String password)Assembles a Java KeyStore containing a CA root certificate and its private key.CertificateAndKeycreateServerCertificate(CertificateInfo certificateInfo, java.security.cert.X509Certificate caRootCertificate, java.security.PrivateKey caPrivateKey, java.security.KeyPair serverKeyPair, java.lang.String messageDigest)Creates a new server X.509 certificate using the serverKeyPair.java.security.KeyStorecreateServerKeyStore(java.lang.String keyStoreType, CertificateAndKey serverCertificateAndKey, java.security.cert.X509Certificate rootCertificate, java.lang.String privateKeyAlias, java.lang.String password)Assembles a Java KeyStore containing a server's certificate, private key, and the certificate authority's certificate, which can be used to create anSSLContext.java.security.cert.X509CertificatedecodePemEncodedCertificate(java.io.Reader certificateReader)Decodes a PEM-encoded X.509 Certificate into aX509Certificate.java.security.PrivateKeydecodePemEncodedPrivateKey(java.io.Reader privateKeyReader, java.lang.String password)Decodes a PEM-encoded private key into aPrivateKey.java.lang.StringencodeCertificateAsPem(java.security.cert.Certificate certificate)Encodes a certificate in PEM format.java.lang.StringencodePrivateKeyAsPem(java.security.PrivateKey privateKey, java.lang.String passwordForPrivateKey, java.lang.String encryptionAlgorithm)Encodes a private key in PEM format, encrypting it with the specified password.javax.net.ssl.KeyManager[]getKeyManagers(java.security.KeyStore keyStore, java.lang.String keyStorePassword)Retrieve the KeyManagers for the specified KeyStore.java.security.KeyStoreloadKeyStore(java.io.File file, java.lang.String keyStoreType, java.lang.String password)Loads a Java KeyStore object from a file.voidsaveKeyStore(java.io.File file, java.security.KeyStore keyStore, java.lang.String keystorePassword)Saves a Java KeyStore to a file, protecting it with the specified password.
-
-
-
Method Detail
-
createCARootCertificate
CertificateAndKey createCARootCertificate(CertificateInfo certificateInfo, java.security.KeyPair keyPair, java.lang.String messageDigest)
Creates a new self-signed CA root certificate, suitable for use signing new server certificates.- Parameters:
certificateInfo- certificate info to populate in the new root certkeyPair- root certificate's public and private keysmessageDigest- digest to use when signing the new root certificate, such as SHA512- Returns:
- a new root certificate and private key
-
createServerCertificate
CertificateAndKey createServerCertificate(CertificateInfo certificateInfo, java.security.cert.X509Certificate caRootCertificate, java.security.PrivateKey caPrivateKey, java.security.KeyPair serverKeyPair, java.lang.String messageDigest)
Creates a new server X.509 certificate using the serverKeyPair. The new certificate will be populated with information from the specified certificateInfo and will be signed using the specified caPrivateKey and messageDigest.- Parameters:
certificateInfo- basic X.509 certificate info that will be used to create the server certificatecaRootCertificate- root certificate that will be used to populate the issuer field of the server certificateserverKeyPair- server's public and private keysmessageDigest- message digest to use when signing the server certificate, such as SHA512caPrivateKey- root certificate private key that will be used to sign the server certificate- Returns:
- a new server certificate and its private key
-
createServerKeyStore
java.security.KeyStore createServerKeyStore(java.lang.String keyStoreType, CertificateAndKey serverCertificateAndKey, java.security.cert.X509Certificate rootCertificate, java.lang.String privateKeyAlias, java.lang.String password)Assembles a Java KeyStore containing a server's certificate, private key, and the certificate authority's certificate, which can be used to create anSSLContext.- Parameters:
keyStoreType- the KeyStore type, such as JKS or PKCS12serverCertificateAndKey- certificate and private key for the server, which will be placed in the KeyStorerootCertificate- CA root certificate of the private key that signed the server certificateprivateKeyAlias- alias to assign the private key (with accompanying certificate chain) to in the KeyStorepassword- password for the new KeyStore and private key- Returns:
- a new KeyStore with the server's certificate and password-protected private key
-
createRootCertificateKeyStore
java.security.KeyStore createRootCertificateKeyStore(java.lang.String keyStoreType, CertificateAndKey rootCertificateAndKey, java.lang.String privateKeyAlias, java.lang.String password)Assembles a Java KeyStore containing a CA root certificate and its private key.- Parameters:
keyStoreType- the KeyStore type, such as JKS or PKCS12rootCertificateAndKey- certification authority's root certificate and private key, which will be placed in the KeyStoreprivateKeyAlias- alias to assign the private key (with accompanying certificate chain) to in the KeyStorepassword- password for the new KeyStore and private key- Returns:
- a new KeyStore with the root certificate and password-protected private key
-
encodePrivateKeyAsPem
java.lang.String encodePrivateKeyAsPem(java.security.PrivateKey privateKey, java.lang.String passwordForPrivateKey, java.lang.String encryptionAlgorithm)Encodes a private key in PEM format, encrypting it with the specified password. The private key will be encrypted using the specified algorithm.- Parameters:
privateKey- private key to encodepasswordForPrivateKey- password to protect the private keyencryptionAlgorithm- algorithm to use to encrypt the private key- Returns:
- PEM-encoded private key as a String
-
encodeCertificateAsPem
java.lang.String encodeCertificateAsPem(java.security.cert.Certificate certificate)
Encodes a certificate in PEM format.- Parameters:
certificate- certificate to encode- Returns:
- PEM-encoded certificate as a String
-
decodePemEncodedPrivateKey
java.security.PrivateKey decodePemEncodedPrivateKey(java.io.Reader privateKeyReader, java.lang.String password)Decodes a PEM-encoded private key into aPrivateKey. The password may be null if the PEM-encoded private key is not password-encrypted.- Parameters:
privateKeyReader- a reader for a PEM-encoded private keypassword- password protecting the private key @return the decoded private key- Returns:
- PrivateKey
-
decodePemEncodedCertificate
java.security.cert.X509Certificate decodePemEncodedCertificate(java.io.Reader certificateReader)
Decodes a PEM-encoded X.509 Certificate into aX509Certificate.- Parameters:
certificateReader- a reader for a PEM-encoded certificate- Returns:
- the decoded X.509 certificate
-
loadKeyStore
java.security.KeyStore loadKeyStore(java.io.File file, java.lang.String keyStoreType, java.lang.String password)Loads a Java KeyStore object from a file.- Parameters:
file- KeyStore file to loadkeyStoreType- KeyStore type (PKCS12, JKS, etc.)password- the KeyStore password- Returns:
- an initialized Java KeyStore object
-
saveKeyStore
void saveKeyStore(java.io.File file, java.security.KeyStore keyStore, java.lang.String keystorePassword)Saves a Java KeyStore to a file, protecting it with the specified password.- Parameters:
file- file to save the KeyStore tokeyStore- KeyStore to savekeystorePassword- password for the KeyStore
-
getKeyManagers
javax.net.ssl.KeyManager[] getKeyManagers(java.security.KeyStore keyStore, java.lang.String keyStorePassword)Retrieve the KeyManagers for the specified KeyStore.- Parameters:
keyStore- the KeyStore to retrieve KeyManagers fromkeyStorePassword- the KeyStore password- Returns:
- KeyManagers for the specified KeyStore
-
-