NCALayer модуль kz.gov.pki.knca.applet.Applet поддержка ГОСТ2015

Добрый день! будет ли добавлена работа с ГОСТ2015 в kz.gov.pki.knca.applet.Applet?

  1. сейчас createCMSSignature считает алгоритм неизвестным (UNKNOWN_SIG_ALG, при этом signPlainData работает), из декомпилятора
    CMSSignedDataGenerator generator = new CMSSignedDataGenerator();
    if (x509Certificate.getSigAlgOID().equals(PKCSObjectIdentifiers.sha1WithRSAEncryption.getId())) {
    generator.addSigner(privateKey, x509Certificate, CMSSignedDataGenerator.DIGEST_SHA1);
    } else if (x509Certificate.getSigAlgOID().equals(PKCSObjectIdentifiers.sha256WithRSAEncryption.getId())) {
    generator.addSigner(privateKey, x509Certificate, CMSSignedDataGenerator.DIGEST_SHA256);
    } else if (x509Certificate.getSigAlgOID().equals(KNCAObjectIdentifiers.gost34311_95_with_gost34310_2004.getId())) {
    generator.addSigner(privateKey, x509Certificate, CMSSignedDataGenerator.DIGEST_GOST34311_95);
    } else if (x509Certificate.getSigAlgOID().equals(CryptoProObjectIdentifiers.gostR3411_94_with_gostR34310_2004.getId())) {
    generator.addSigner(privateKey, x509Certificate, CMSSignedDataGenerator.DIGEST_GOST3411_GT);
    } else {
    throw new AppletException(AECodes.UNKNOWN_SIG_ALG.name());
    }

  2. getKeysInfo определяет ключи ГОСТ2015 как RSA.
    из декомпилятора
    String algName = “RSA”;
    if (cert.getSigAlgOID().equals(CryptoProObjectIdentifiers.gostR3411_94_with_gostR34310_2004.toString()) || cert.getSigAlgOID().equals(KNCAObjectIdentifiers.gost34311_95_with_gost34310_2004.toString()))
    algName = “ГОСТ”;

  3. еще замечание к Applet - если на момент запуска NCALayer нет интернета, то не работает передача пароля в параметрах signPlainData: все равно запрашивается пароль

из декомпилятора:
public char[] getPassword(String message, String password) {
if (this.usePwdParam)
return password.toCharArray();
if (LocalDate.of(2020, 4, 1).isAfter(LocalDate.now()))
return password.toCharArray();
return getPwdDialog(message);
}
тут usePwdParam заполняется так
URL url = new URL(“https://crl.pki.gov.kz/updates/allowpass.txt”);
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
con.setConnectTimeout(5000);
con.setReadTimeout(10000);
if (con.getResponseCode() == 200) {
this.usePwdParam = true;
} else {
this.usePwdParam = false;
}
поэтому если нет интернета или доступа к https://crl.pki.gov.kz/updates/allowpass.txt, то пароль запрашивается даже в случаях, когда он передается в параметрах метода

Здравствуйте!
Все вышеперечисленные методы и Applet в целом больше не поддерживаются. Используйте модуль Basics

В Basics не вижу возможности передать путь к p12-файлу и пароль, чтобы подписать сразу несколько файлов (основной документ и приложения к нему) CMS-подписями, и не выводить запрос ключа и пароля для каждого из них. Может есть недокументированные возможности сделать это?

Передачи пароля в json-запросе в принципе не будет. Есть возможность подписи нескольких XML.

Добрый день!

Есть ли возможность использовать модуль Basics с апплетом или нужно будет полностью от апплета отказываться и переходить на NCALayer
для того чтобы можно было использовать новый алгоритм ГОСТ 2015 на казтокенах для подписания?

В данный момент используем апплет для подписания с казтокена, на котором еще используются старые алгоритмы gost и rsa

Здравствуйте!
Аплетовские функции устарели. Необходимо перейти на Basics