Package ru.bitel.bgbilling.server.util

# Class KeyStoreUtils

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

    public class KeyStoreUtils
    extends java.lang.Object

Всё про реализацию и работу с KeyStore в биллинге Перенесено в 8.2201 вручную, используется ограниченно в новых черипиках возможно, испаравлен метод getKeyStoreFile.

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `KeyStoreUtils()` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `static boolean` | `checkTrustStoreNotEmpty​(java.lang.String password)` | Проверка, что в .keystore есть TrustedCertificateEntry.
  `static javax.net.ssl.SSLContext` | `createSSLContext​(java.io.File privateKey, java.lang.String privateKeyPassword, java.security.cert.X509Certificate[] chain, java.io.File... hostCrts)` | Создаёт SSLContext с keystore и truststore, общий код используется в модулях для ssl к банкам итд.
  `static java.io.File` | `getKeyStoreFile()` | File на keystore-файл биллинга, поддерживается и новый и старый файл
  `static java.security.PrivateKey` | `getPrivateKey​(Setup setup, java.lang.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 java.io.File getKeyStoreFile()
    File на keystore-файл биллинга, поддерживается и новый и старый файл

  - ### checkTrustStoreNotEmpty

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

  - ### getPrivateKey

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

  - ### createSSLContext

    public static javax.net.ssl.SSLContext createSSLContext​(java.io.File privateKey, java.lang.String privateKeyPassword, java.security.cert.X509Certificate[] chain, java.io.File... hostCrts) throws java.lang.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:
      `java.lang.Exception`