Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline Евгений Афанасьев  
#21 Оставлено : 22 марта 2021 г. 17:02:50(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,489
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 583 раз в 554 постах
В приложенном примере чтение PFX показывало закрытый ключ?
Offline RybalkoAA  
#22 Оставлено : 22 марта 2021 г. 17:34:16(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Непосредственно сам пример не получилось запустить.
Я взял оттуда "строку" с контейнером - для нее возвращается null.
Offline Евгений Афанасьев  
#23 Оставлено : 22 марта 2021 г. 17:44:20(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,489
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 583 раз в 554 постах
Автор: RybalkoAA Перейти к цитате
Непосредственно сам пример не получилось запустить.
Я взял оттуда "строку" с контейнером - для нее возвращается null.

Почему не получилось? Есть вероятность, что все-таки что-то осталось от старого sdk в составе приложения.

Offline RybalkoAA  
#24 Оставлено : 23 марта 2021 г. 11:03:12(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Скрин ошибок прикладываю.
2021-03-23_11-00-24.png (94kb) загружен 6 раз(а).

Отредактировано пользователем 23 марта 2021 г. 11:05:13(UTC)  | Причина: Не указана

Offline RybalkoAA  
#25 Оставлено : 23 марта 2021 г. 11:10:26(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Также при сборке своего приложения в директориях ..\app\build\intermediates\merged_native_libs и ..\app\build\intermediates\stripped_native_libs получаю набор, видимо, старых длл libcspjni.so, libjcpcsclite.so, librtconnection.so, librtpcsc.so, libsupport.so
Это важно или нет?
Offline lepestova  
#26 Оставлено : 23 марта 2021 г. 12:35:16(UTC)
lepestova

Статус: Новичок

Группы: Участники
Зарегистрирован: 09.09.2020(UTC)
Сообщений: 7

Поблагодарили: 1 раз в 1 постах
Добрый день.
1. Попробуйте установить параметры при сборке (--stacktrace, --info, --scan), которые предлагаются на скрине выше, для вывода более детальной ошибки.
2. Возможно где-то закэшировались старые либы. Попробуйте почистить проект, затем выполнить следующие команды перед сборкой:
./gradlew build cleanBuildCache
./gradlew build --refresh-dependencies
3. Прошу проверить корректность встраивания провайдера в ваше приложение (обратите внимание на п. 1 и п.3 документа android-csp-5.0.42324\examples\Doc\How_to_build_android_examples.docx, а также на либы в папке ACSPInClientApp\libs и параметр "android:extractNativeLibs="true" файла AndroidManifest.xml).
Offline RybalkoAA  
#27 Оставлено : 23 марта 2021 г. 15:06:41(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
В итоге скачал заново и вроде бы получилось запустить ACSPInCLientApp, однако сразу ошибка на первом тесте:
image_2021-03-23_14-58-49.png (129kb) загружен 3 раз(а).
Ну и все равно - в нем же нет импорта PFX...
Offline RybalkoAA  
#28 Оставлено : 23 марта 2021 г. 15:24:52(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Поправка. Запустил на реальном телефоне - пример свалился на 4 тесте:
photo_2021-03-23_15-20-48.jpg (81kb) загружен 2 раз(а).
Тестовые приложения не могут работать на эмуляторе?
Offline RybalkoAA  
#29 Оставлено : 23 марта 2021 г. 17:07:09(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Итого после установки лицензии и прочего чуть модифицировал RfxReaderExample и запускаю его из ACSPInClientApp.
Но получаю ошибки либо 0x80090005 Bad Data, либо 0x8010006b Неправильный пин.
Подскажите, пожалуйста, в чем проблема?
Код:
Код:
String encodedPFX =
                            "MIIIEAIBAzCCB8wGCSqGSIb3DQEHAaCCB70Egge5MIIHtTCCAZ4" +
                                    "GCSqGSIb3DQEHAaCCAY8EggGLMIIBhzCCAYMGCyqGSIb3DQEMCg" +
                                    "ECoIGyMIGvMCQGCiqGSIb3DQEMAVAwFgQQ/PwrD+l9wGF68ZZ0U" +
                                    "sxxHgICB9AEgYZynsNssypB2PQ6eyRqkMhDBATPNpXTRw98RwdV" +
                                    "b2RszQMFuL4SufHel37L2u20SJoZzKknqFus39M/t2h1nnI1+cc" +
                                    "h6FsncfgwTT4sk7RmuTCq8VJADdUlGMpVeS0SKpAetcX6W4hCPc" +
                                    "eG8+oNs1V9xhs6kQSKCMtU7u5sX1wZo9EL1dvwiTGBvjATBgkqh" +
                                    "kiG9w0BCRUxBgQEAQAAADAfBgkqhkiG9w0BCRQxEh4QAHQAZQBz" +
                                    "AHQATABkAGEAcDCBhQYJKwYBBAGCNxEBMXgedgBDAHIAeQBwAHQ" +
                                    "AbwAtAFAAcgBvACAARwBPAFMAVAAgAFIAIAAzADQALgAxADAALQ" +
                                    "AyADAAMAAxACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgA" +
                                    "FMAZQByAHYAaQBjAGUAIABQAHIAbwB2AGkAZABlAHIwggYPBgkq" +
                                    "hkiG9w0BBwGgggYABIIF/DCCBfgwggNOBgsqhkiG9w0BDAoBA6C" +
                                    "CAyYwggMiBgoqhkiG9w0BCRYBoIIDEgSCAw4wggMKMIICuaADAg" +
                                    "ECAhMSADfuLFVACI6FScqeAAEAN+4sMAgGBiqFAwICAzB/MSMwI" +
                                    "QYJKoZIhvcNAQkBFhRzdXBwb3J0QGNyeXB0b3Byby5ydTELMAkG" +
                                    "A1UEBhMCUlUxDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMOQ1J" +
                                    "ZUFRPLVBSTyBMTEMxITAfBgNVBAMTGENSWVBUTy1QUk8gVGVzdC" +
                                    "BDZW50ZXIgMjAeFw0xOTA2MjUxMDAyMTFaFw0yMDA5MjUxMDEyM" +
                                    "TFaMBMxETAPBgNVBAMTCHRlc3RMZGFwMGMwHAYGKoUDAgITMBIG" +
                                    "ByqFAwICIwEGByqFAwICHgEDQwAEQMvqQrH73Y2Ck3c8XeEDBNm" +
                                    "WwwGtrmIK8Sbg0xtmR3bYjNlv/GltQ/UcGlFkCCyyWegBpdcwZK" +
                                    "zLs0XxT0a7vWujggF2MIIBcjAOBgNVHQ8BAf8EBAMCBsAwEwYDV" +
                                    "R0lBAwwCgYIKwYBBQUHAwIwHQYDVR0OBBYEFJ2jpeVY4f766/If" +
                                    "wsiEpgHP1X08MB8GA1UdIwQYMBaAFF1lNz6BtHBkD7Vk8mfoVxL" +
                                    "8/gkBMFwGA1UdHwRVMFMwUaBPoE2GS2xkYXA6Ly90ZXN0Y2EuY3" +
                                    "J5cHRvcHJvLnJ1L0NlcnRFbnJvbGwvQ1JZUFRPLVBSTyUyMFRlc" +
                                    "3QlMjBDZW50ZXIlMjAyKDEpLmNybDCBrAYIKwYBBQUHAQEEgZ8w" +
                                    "gZwwZAYIKwYBBQUHMAKGWGh0dHA6Ly90ZXN0Y2EuY3J5cHRvcHJ" +
                                    "vLnJ1L0NlcnRFbnJvbGwvdGVzdC1jYS0yMDE0X0NSWVBUTy1QUk" +
                                    "8lMjBUZXN0JTIwQ2VudGVyJTIwMigxKS5jcnQwNAYIKwYBBQUHM" +
                                    "AGGKGh0dHA6Ly90ZXN0Y2EuY3J5cHRvcHJvLnJ1L29jc3Avb2Nz" +
                                    "cC5zcmYwCAYGKoUDAgIDA0EAcC6dPWrt7ZkjKsNVY2PrFJ18vxL" +
                                    "w8S+//I+rSbHtkuZ7cdNo8u7V60hcP14YlnzfdZxsOnRUq1SiP9" +
                                    "QvNOpfjzEVMBMGCSqGSIb3DQEJFTEGBAQBAAAAMIICogYLKoZIh" +
                                    "vcNAQwKAQOgggKPMIICiwYKKoZIhvcNAQkWAaCCAnsEggJ3MIIC" +
                                    "czCCAiKgAwIBAgIQdBHxHnsH37FPkoMPq+fT3DAIBgYqhQMCAgM" +
                                    "wfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucn" +
                                    "UxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVB" +
                                    "AoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJP" +
                                    "IFRlc3QgQ2VudGVyIDIwHhcNMTkwNTI3MDcyNDI2WhcNMjQwNTI" +
                                    "2MDczNDA1WjB/MSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0QGNyeX" +
                                    "B0b3Byby5ydTELMAkGA1UEBhMCUlUxDzANBgNVBAcTBk1vc2Nvd" +
                                    "zEXMBUGA1UEChMOQ1JZUFRPLVBSTyBMTEMxITAfBgNVBAMTGENS" +
                                    "WVBUTy1QUk8gVGVzdCBDZW50ZXIgMjBjMBwGBiqFAwICEzASBgc" +
                                    "qhQMCAiMBBgcqhQMCAh4BA0MABEDmvSYqTo0hLydL2V4XmZYQzx" +
                                    "pHC3KRWEkkjVjARVES9MhOVwD60z/cgHG6H2/G9i6bdpvTNP7Zl" +
                                    "Gw8KOMCGdfLo3gwdjALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw" +
                                    "AwEB/zAdBgNVHQ4EFgQUXWU3PoG0cGQPtWTyZ+hXEvz+CQEwEgY" +
                                    "JKwYBBAGCNxUBBAUCAwEAATAjBgkrBgEEAYI3FQIEFgQUBGJVKQ" +
                                    "sOsc3ReX2auMgfaZ42h/MwCAYGKoUDAgIDA0EACyYtdNDVS06W2" +
                                    "V1+7swAPbmFPd/2iy5Pt/91N54/E5NYYuwNGD9qS4JjBZtS4i0O" +
                                    "2sDFvzoUyrqTh0NAAMi4FjEAMDswHzAHBgUrDgMCGgQUZK53KMr" +
                                    "x8w4Gnb1fkei141jjXpEEFKl2V92ugYS5gc/DVyKJf5uZLH7rAg" +
                                    "IH0A==";

                    char[] password = "1".toCharArray();
                    Decoder decoder = new Decoder();

                    byte[] decodedPFX = decoder.decodeBuffer(encodedPFX);
                    Logger.INSTANCE.append("Load PFX.");

                    ByteArrayInputStream in = new ByteArrayInputStream(decodedPFX);
                    KeyStore pfxStore = KeyStore.getInstance(JCSP.PFX_STORE_NAME, JCSP.PROVIDER_NAME);

                    pfxStore.load(in, password);
                    Enumeration<String> aliases = pfxStore.aliases();

                    Logger.INSTANCE.append("Read PFX.");
                    PrivateKey privateKey2 = null;
                    X509Certificate cert2  = null;

                    while (aliases.hasMoreElements()) {

                        String alias = aliases.nextElement();
                        Logger.INSTANCE.append("%%% ALIAS: " + alias);

                        boolean isKeyEntry = pfxStore.isKeyEntry(alias);
                        boolean isCertEntry = pfxStore.isCertificateEntry(alias);

                        Logger.INSTANCE.append("\tIs a key entry: " + isKeyEntry);
                        Logger.INSTANCE.append("\tIs a certificate entry: " + isCertEntry);

                        if (isKeyEntry) {
                            privateKey2 = (PrivateKey) pfxStore.getKey(alias, null);
                        }
                        if (isCertEntry) {
                            cert2 = (X509Certificate) pfxStore.getCertificate(alias);
                        }

                    } // while

                    if (privateKey2 != null && cert2 != null) {
                        KeyStore keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
                        keyStore.load(null, null);

                        KeyStore.ProtectionParameter protectedParam = new KeyStore.PasswordProtection(password);
                        JCPPrivateKeyEntry entryIn = new JCPPrivateKeyEntry(privateKey2, new X509Certificate[] {cert2});

                        keyStore.setEntry(ALIAS, entryIn, protectedParam);
                    }
Offline lepestova  
#30 Оставлено : 24 марта 2021 г. 13:08:04(UTC)
lepestova

Статус: Новичок

Группы: Участники
Зарегистрирован: 09.09.2020(UTC)
Сообщений: 7

Поблагодарили: 1 раз в 1 постах
Добрый день.
Ошибки у вас возникали из-за того, что пытались установить в ключевой контейнер несоответствующий ему сертификат (cert2 = (X509Certificate) pfxStore.getCertificate(alias); - в данном примере тут берется корневой сертификат. Чтобы загрузить из pfx сертификат, соответствующий закрытому ключу, нужно использовать тот же алиас, что и при получении закрытого ключа).

Вот исправленный ваш код:

Код:
  
    @Override
    public Void execute() throws Exception {

        String encodedPFX =
            "MIIIEAIBAzCCB8wGCSqGSIb3DQEHAaCCB70Egge5MIIHtTCCAZ4" +
            "GCSqGSIb3DQEHAaCCAY8EggGLMIIBhzCCAYMGCyqGSIb3DQEMCg" +
            "ECoIGyMIGvMCQGCiqGSIb3DQEMAVAwFgQQ/PwrD+l9wGF68ZZ0U" +
            "sxxHgICB9AEgYZynsNssypB2PQ6eyRqkMhDBATPNpXTRw98RwdV" +
            "b2RszQMFuL4SufHel37L2u20SJoZzKknqFus39M/t2h1nnI1+cc" +
            "h6FsncfgwTT4sk7RmuTCq8VJADdUlGMpVeS0SKpAetcX6W4hCPc" +
            "eG8+oNs1V9xhs6kQSKCMtU7u5sX1wZo9EL1dvwiTGBvjATBgkqh" +
            "kiG9w0BCRUxBgQEAQAAADAfBgkqhkiG9w0BCRQxEh4QAHQAZQBz" +
            "AHQATABkAGEAcDCBhQYJKwYBBAGCNxEBMXgedgBDAHIAeQBwAHQ" +
            "AbwAtAFAAcgBvACAARwBPAFMAVAAgAFIAIAAzADQALgAxADAALQ" +
            "AyADAAMAAxACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgA" +
            "FMAZQByAHYAaQBjAGUAIABQAHIAbwB2AGkAZABlAHIwggYPBgkq" +
            "hkiG9w0BBwGgggYABIIF/DCCBfgwggNOBgsqhkiG9w0BDAoBA6C" +
            "CAyYwggMiBgoqhkiG9w0BCRYBoIIDEgSCAw4wggMKMIICuaADAg" +
            "ECAhMSADfuLFVACI6FScqeAAEAN+4sMAgGBiqFAwICAzB/MSMwI" +
            "QYJKoZIhvcNAQkBFhRzdXBwb3J0QGNyeXB0b3Byby5ydTELMAkG" +
            "A1UEBhMCUlUxDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMOQ1J" +
            "ZUFRPLVBSTyBMTEMxITAfBgNVBAMTGENSWVBUTy1QUk8gVGVzdC" +
            "BDZW50ZXIgMjAeFw0xOTA2MjUxMDAyMTFaFw0yMDA5MjUxMDEyM" +
            "TFaMBMxETAPBgNVBAMTCHRlc3RMZGFwMGMwHAYGKoUDAgITMBIG" +
            "ByqFAwICIwEGByqFAwICHgEDQwAEQMvqQrH73Y2Ck3c8XeEDBNm" +
            "WwwGtrmIK8Sbg0xtmR3bYjNlv/GltQ/UcGlFkCCyyWegBpdcwZK" +
            "zLs0XxT0a7vWujggF2MIIBcjAOBgNVHQ8BAf8EBAMCBsAwEwYDV" +
            "R0lBAwwCgYIKwYBBQUHAwIwHQYDVR0OBBYEFJ2jpeVY4f766/If" +
            "wsiEpgHP1X08MB8GA1UdIwQYMBaAFF1lNz6BtHBkD7Vk8mfoVxL" +
            "8/gkBMFwGA1UdHwRVMFMwUaBPoE2GS2xkYXA6Ly90ZXN0Y2EuY3" +
            "J5cHRvcHJvLnJ1L0NlcnRFbnJvbGwvQ1JZUFRPLVBSTyUyMFRlc" +
            "3QlMjBDZW50ZXIlMjAyKDEpLmNybDCBrAYIKwYBBQUHAQEEgZ8w" +
            "gZwwZAYIKwYBBQUHMAKGWGh0dHA6Ly90ZXN0Y2EuY3J5cHRvcHJ" +
            "vLnJ1L0NlcnRFbnJvbGwvdGVzdC1jYS0yMDE0X0NSWVBUTy1QUk" +
            "8lMjBUZXN0JTIwQ2VudGVyJTIwMigxKS5jcnQwNAYIKwYBBQUHM" +
            "AGGKGh0dHA6Ly90ZXN0Y2EuY3J5cHRvcHJvLnJ1L29jc3Avb2Nz" +
            "cC5zcmYwCAYGKoUDAgIDA0EAcC6dPWrt7ZkjKsNVY2PrFJ18vxL" +
            "w8S+//I+rSbHtkuZ7cdNo8u7V60hcP14YlnzfdZxsOnRUq1SiP9" +
            "QvNOpfjzEVMBMGCSqGSIb3DQEJFTEGBAQBAAAAMIICogYLKoZIh" +
            "vcNAQwKAQOgggKPMIICiwYKKoZIhvcNAQkWAaCCAnsEggJ3MIIC" +
            "czCCAiKgAwIBAgIQdBHxHnsH37FPkoMPq+fT3DAIBgYqhQMCAgM" +
            "wfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucn" +
            "UxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVB" +
            "AoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJP" +
            "IFRlc3QgQ2VudGVyIDIwHhcNMTkwNTI3MDcyNDI2WhcNMjQwNTI" +
            "2MDczNDA1WjB/MSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0QGNyeX" +
            "B0b3Byby5ydTELMAkGA1UEBhMCUlUxDzANBgNVBAcTBk1vc2Nvd" +
            "zEXMBUGA1UEChMOQ1JZUFRPLVBSTyBMTEMxITAfBgNVBAMTGENS" +
            "WVBUTy1QUk8gVGVzdCBDZW50ZXIgMjBjMBwGBiqFAwICEzASBgc" +
            "qhQMCAiMBBgcqhQMCAh4BA0MABEDmvSYqTo0hLydL2V4XmZYQzx" +
            "pHC3KRWEkkjVjARVES9MhOVwD60z/cgHG6H2/G9i6bdpvTNP7Zl" +
            "Gw8KOMCGdfLo3gwdjALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw" +
            "AwEB/zAdBgNVHQ4EFgQUXWU3PoG0cGQPtWTyZ+hXEvz+CQEwEgY" +
            "JKwYBBAGCNxUBBAUCAwEAATAjBgkrBgEEAYI3FQIEFgQUBGJVKQ" +
            "sOsc3ReX2auMgfaZ42h/MwCAYGKoUDAgIDA0EACyYtdNDVS06W2" +
            "V1+7swAPbmFPd/2iy5Pt/91N54/E5NYYuwNGD9qS4JjBZtS4i0O" +
            "2sDFvzoUyrqTh0NAAMi4FjEAMDswHzAHBgUrDgMCGgQUZK53KMr" +
            "x8w4Gnb1fkei141jjXpEEFKl2V92ugYS5gc/DVyKJf5uZLH7rAg" +
            "IH0A==";

        char[] password = "1".toCharArray();
        Decoder decoder = new Decoder();

        byte[] decodedPFX = decoder.decodeBuffer(encodedPFX);
        Logger.INSTANCE.append("Load PFX.");

        ByteArrayInputStream in = new ByteArrayInputStream(decodedPFX);
        KeyStore pfxStore = KeyStore.getInstance(JCSP.PFX_STORE_NAME, JCSP.PROVIDER_NAME);

        pfxStore.load(in, password);
        Enumeration<String> aliases = pfxStore.aliases();

        Logger.INSTANCE.append("Read PFX.");

        while (aliases.hasMoreElements()) {

            String alias = aliases.nextElement();
            Logger.INSTANCE.append("%%% ALIAS: " + alias);

            PrivateKey key = (PrivateKey) pfxStore.getKey(alias, password);
            Certificate[] chain = pfxStore.getCertificateChain(alias);

            if (key != null && chain != null) {

                JCPKeyPair kp = new JCPKeyPair(chain[0].getPublicKey(), key);
                if (kp.match()) {

                    KeyStore keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
                    keyStore.load(null, null);

                    JCPPrivateKeyEntry keyEntry = new JCPPrivateKeyEntry(key, chain, true);
                    JCPProtectionParameter parameter = new JCPProtectionParameter(password);
                    keyStore.setEntry(alias, keyEntry, parameter);

                    break;

                }
            }
        } // while

        Logger.INSTANCE.append("PFX has been read (OK)");

        return null;
    }

Отредактировано пользователем 24 марта 2021 г. 13:10:18(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил lepestova за этот пост.
RybalkoAA оставлено 25.03.2021(UTC)
Offline RybalkoAA  
#31 Оставлено : 25 марта 2021 г. 15:43:12(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Спасибо большое, вроде бы работает! Буду дальше пилить.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.