Package ru.bitel.bgbilling.server.util

# Class KeyStoreUtils

java.lang.Object
ru.bitel.bgbilling.server.util.KeyStoreUtils

public class KeyStoreUtils extends Object
Всё про реализацию и работу с KeyStore в биллинге

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `KeyStoreUtils()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static boolean`
  `checkTrustStoreNotEmpty(String password)`
  Проверка, что в .keystore есть TrustedCertificateEntry.
  `static SSLContext`
  `createSSLContext(File privateKey, String privateKeyPassword, X509Certificate[] chain, File... hostCrts)`
  Создаёт SSLContext с keystore и truststore, общий код используется в модулях для ssl к банкам итд.
  `static File`
  `getKeyStoreFile()`
  File на keystore-файл биллинга, поддерживается и новый и старый файл
  `static PrivateKey`
  `getPrivateKey(Setup setup, String alias)`
  Получение приватного ключа из файла .keystore по алиасу.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### KeyStoreUtils

    public KeyStoreUtils()

- ## Method Details

  - ### getKeyStoreFile

    public static File getKeyStoreFile()
    File на keystore-файл биллинга, поддерживается и новый и старый файл

  - ### checkTrustStoreNotEmpty

    public static boolean checkTrustStoreNotEmpty(String password)
    Проверка, что в .keystore есть TrustedCertificateEntry.
    Parameters:
      `password` -
    Returns:

  - ### getPrivateKey

    public static PrivateKey getPrivateKey(Setup setup, String alias)
    Получение приватного ключа из файла .keystore по алиасу. Используется параметр keystore.password из сетапа и как пароль кейстора и как пароль приватного ключа При неудаче пытается взять по пустому паролю ещё (частый кейс: приватные без ключа либо унлоченные).
    Parameters:
      `setup` - серверный сетап
      `alias` - алиас, если null - первый попавшийся (из тех у кого первым и пароль подойдёт) PrivateKey в кейсторе
    Returns:
      PrivateKey, если такого алиаса нет - то null (так делает сразу штатный store.getKey), если пароль неверный то тоже null в нашей реализации + ругнётся в логи.

  - ### createSSLContext

    public static SSLContext createSSLContext(File privateKey, String privateKeyPassword, X509Certificate[] chain, File... hostCrts) throws Exception
    Создаёт SSLContext с keystore и truststore, общий код используется в модулях для ssl к банкам итд.
    Parameters:
      `privateKey` - [keystore] файл приват.ключа (например, key.pem)
      `privateKeyPassword` - [keystore] пароль от приват.ключа
      `chain` - [keystore] чейн сертификатов для соответствующего приватному открытого ключа (состоящий например из cert.pem, или cert.pem+ca.pem)
      `hostCrts` - [truststore] файл(ы) сертификата (например host.pem или ca.crt, или host.pem+ca.pem)
    Returns:
      новый объект SSLContext
    Throws:
      `Exception`