Class TrustStoreIO


  • public class TrustStoreIO
    extends java.lang.Object
    Utility class for reading and writing certificates files and making trust stores from it.
    Since:
    2018.1
    Author:
    Mikhail Khorkov
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String ZERO_HASH  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.io.File[] certificateFiles​(java.lang.String certDirectory)
      Gets all files from specified directory.
      static TeamCityTrustedSslCertificate[] certificatesData​(java.lang.String certDirectory)
      Read files with certificates from specified directory.
      static java.security.KeyStore constructTrustStoreFromData​(TeamCityTrustedSslCertificate[] data)
      Construct trust store from specified data.
      static java.lang.String hash​(TeamCityTrustedSslCertificate[] data)
      Calculate a hash of specified certificates data.
      static java.lang.String isInvalidCertificate​(byte[] data)
      Check if specified data is an invalid ssl certificate.
      static java.lang.String pemContentFromDirectory​(java.lang.String certDirectory)
      Returns PEM content of certificates from specified directory.
      static java.security.KeyStore readTrustStoreFromDirectory​(java.lang.String certDirectory)
      Read files with certificates from specified directory.
      static void removeCertificate​(java.lang.String alias, java.lang.String certDirectory)
      Delete certificate with specified name from specified directory.
      static java.lang.String writeCertificate​(java.lang.String alias, byte[] data, java.lang.String certDirectory)
      Write certificate to specified directory.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • ZERO_HASH

        public static final java.lang.String ZERO_HASH
    • Method Detail

      • certificateFiles

        @NotNull
        public static java.io.File[] certificateFiles​(@NotNull
                                                      java.lang.String certDirectory)
        Gets all files from specified directory.
        Parameters:
        certDirectory - path to directory with certificates files
        Returns:
        files with certificates from specified directory
      • readTrustStoreFromDirectory

        @Nullable
        public static java.security.KeyStore readTrustStoreFromDirectory​(@NotNull
                                                                         java.lang.String certDirectory)
        Read files with certificates from specified directory.
        Parameters:
        certDirectory - path to directory with certificates files
        Returns:
        trust store from specified directory or null
      • pemContentFromDirectory

        @NotNull
        public static java.lang.String pemContentFromDirectory​(@NotNull
                                                               java.lang.String certDirectory)
        Returns PEM content of certificates from specified directory.
        Parameters:
        certDirectory - path to directory with certificates files
        Returns:
        PEM content of certificates from specified directory
      • constructTrustStoreFromData

        @NotNull
        public static java.security.KeyStore constructTrustStoreFromData​(@NotNull
                                                                         TeamCityTrustedSslCertificate[] data)
                                                                  throws java.security.cert.CertificateException,
                                                                         java.security.NoSuchAlgorithmException,
                                                                         java.io.IOException,
                                                                         java.security.KeyStoreException
        Construct trust store from specified data.
        Parameters:
        data - certificates for trust store
        Returns:
        trust store from specified data or null
        Throws:
        java.security.cert.CertificateException - in case we can't construct the store because of a CertificateException
        java.security.NoSuchAlgorithmException - in case we can't construct the store because of a NoSuchAlgorithmException
        java.io.IOException - in case we can't construct the store because of a IOException
        java.security.KeyStoreException - in case we can't construct the store because of a KeyStoreException
      • hash

        @NotNull
        public static java.lang.String hash​(@NotNull
                                            TeamCityTrustedSslCertificate[] data)
        Calculate a hash of specified certificates data.
        Parameters:
        data - certificates fro calculate the hash.
        Returns:
        not null hash of specified certificates data.
      • certificatesData

        @NotNull
        public static TeamCityTrustedSslCertificate[] certificatesData​(@NotNull
                                                                       java.lang.String certDirectory)
        Read files with certificates from specified directory.
        Parameters:
        certDirectory - path to directory with certificates files
        Returns:
        array of read certificates from specified directory
      • writeCertificate

        public static java.lang.String writeCertificate​(@NotNull
                                                        java.lang.String alias,
                                                        @NotNull
                                                        byte[] data,
                                                        @NotNull
                                                        java.lang.String certDirectory)
        Write certificate to specified directory.
        Parameters:
        alias - name of certificate
        data - certificate data
        certDirectory - directory to write certificate
        Returns:
        null in case of success write; error message otherwise
      • removeCertificate

        public static void removeCertificate​(java.lang.String alias,
                                             java.lang.String certDirectory)
        Delete certificate with specified name from specified directory.
        Parameters:
        alias - name of certificate for delete
        certDirectory - directory with the certificate
      • isInvalidCertificate

        public static java.lang.String isInvalidCertificate​(@NotNull
                                                            byte[] data)
        Check if specified data is an invalid ssl certificate.
        Parameters:
        data - data to check
        Returns:
        String representation of reason why certificate is invalid or null in case of valid data