Добрый день! будет ли добавлена работа с ГОСТ2015 в kz.gov.pki.knca.applet.Applet?
-
сейчас 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());
} -
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 = “ГОСТ”; -
еще замечание к 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, то пароль запрашивается даже в случаях, когда он передается в параметрах метода