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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Рудольф О  
#1 Оставлено : 19 апреля 2021 г. 14:32:11(UTC)
Рудольф О

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

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

добрый день,
при попытке подписать сертификат получаю ошибку приватного ключа, ниже привожу код, который используется и логи, сперва идет вызов storeCertFile, затем signDOcument:

Цитата:
-(StoreCertResponse *)storeCertFile:(StoreCertFile*)input error:(FlutterError * *)error{
StoreCertResponse *response = [[StoreCertResponse alloc] init];
response.isError=[NSNumber numberWithBool:NO];
@try {
NSString *certPath = input.certFilePath;
NSString *password = input.password;
NSString *certThumbPrint = [[WLICryptoProvider sharedInstance] importCertFromPFXStore:certPath withPassword:password];
if(certThumbPrint){
response.certThumbPrint=certThumbPrint;
}else{
response.isError=[NSNumber numberWithBool:YES];
response.message=@"Сертификат не импортирован";
}
} @catch (NSException *exception) {
response.isError=[NSNumber numberWithBool:YES];
response.message=exception.reason;
}
return response;
}

-(DocumentSignResponse *)signDocument:(DocumentSignRequest*)input error:(FlutterError * *)error{
DocumentSignResponse *response = [[DocumentSignResponse alloc] init];
response.isError=[NSNumber numberWithBool:NO];

NSString *certContainer;
NSString *certSerial;
NSString *certPublicKey;

@try
{
certContainer = [[WLICryptoProvider sharedInstance] getInternalContainerName];
certSerial = nil;
certPublicKey = nil;

if (certContainer) {
certSerial= [[WLICryptoProvider sharedInstance] getCertSerialNumberFromContainer:certContainer];
certPublicKey = [[WLICryptoProvider sharedInstance] getPublicKeyInfoCertFromContainer:certContainer];
}

NSData *signature = [[WLICryptoProvider sharedInstance] signFile:input.docPath withCertFromContainer:certContainer];

if(signature){
response.signature=[FlutterStandardTypedData typedDataWithBytes:signature];
}else{
response.isError=[NSNumber numberWithBool:YES];
response.message=@"Подпись не удалась";
}
}
@catch(NSException *exception) {
response.isError=[NSNumber numberWithBool:YES];
response.message=[NSString stringWithFormat:@"%@ /%@", @"Подпись не удалась:", exception.reason];
}
return response;
}


получаю:

<csp>0x104b878c0:OpenContainer!OpenContainer kcar_open fail (0x80090016) (:1095)
<capi20>0x104b878c0:CryptAcquireContextA!failed: LastError = 0x80090016 (:810)
Last error before acquiring 0x00000000
Last error after acquiring 0x80090016
[cadesSignHash:withCertFromContainer:] MY cert store opened.
Last error after loading certificate 0x80090016
1.2.643.7.1.1.3.2
Last error before signing 0x80090016
CadesSignHash() failed
Last error after signing 0x80091007
<csp>0x104b878c0:OpenContainer!OpenContainer kcar_open fail (0x80090016) (:1095)
<capi20>0x104b878c0:CryptAcquireContextA!failed: LastError = 0x80090016 (:810)
Last error before acquire 0x80090016
Last error after acquire 0x80090016
Last error before loading cert 0x80090016
[detachedSign:withCertFromContainer:] MY cert store opened.
Last error after loading cert 0x80090016
[detachedSign:withCertFromContainer:] The signer's certificate was found.
Last error before signing 0x80090016
<capi20>0x104b878c0:CryptAcquireCertificatePrivateKey!() CertGetCertificateContextPropertyWithLock(CERT_KEY_PROV_INFO_PROP_ID) failed! (:294)
<capi20>0x104b878c0:CryptAcquireCertificatePrivateKey!(failed: LastError = 0x8009200b) (:312)
[detachedSign:withCertFromContainer:] CryptSignMessage failed.
Last error after signing 0x8009200b
Last error before signing 2 0x8009200b
<capi20>0x104b878c0:CryptAcquireCertificatePrivateKey!() CertGetCertificateContextPropertyWithLock(CERT_KEY_PROV_INFO_PROP_ID) failed! (:294)
<capi20>0x104b878c0:CryptAcquireCertificatePrivateKey!(failed: LastError = 0x8009200b) (:312)
[detachedSign:withCertFromContainer:] CryptSignMessage failed.
Last error after signing 2 0x8009200b

подскажите, с чем может быть связано, в какую сторону смотреть?
Offline Александр Лавник  
#2 Оставлено : 22 апреля 2021 г. 11:07:31(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 44 раз
Поблагодарили: 602 раз в 567 постах
Автор: Рудольф О Перейти к цитате
добрый день,
при попытке подписать сертификат получаю ошибку приватного ключа, ниже привожу код, который используется и логи, сперва идет вызов storeCertFile, затем signDOcument:

Цитата:
-(StoreCertResponse *)storeCertFile:(StoreCertFile*)input error:(FlutterError * *)error{
StoreCertResponse *response = [[StoreCertResponse alloc] init];
response.isError=[NSNumber numberWithBool:NO];
@try {
NSString *certPath = input.certFilePath;
NSString *password = input.password;
NSString *certThumbPrint = [[WLICryptoProvider sharedInstance] importCertFromPFXStore:certPath withPassword:password];
if(certThumbPrint){
response.certThumbPrint=certThumbPrint;
}else{
response.isError=[NSNumber numberWithBool:YES];
response.message=@"Сертификат не импортирован";
}
} @catch (NSException *exception) {
response.isError=[NSNumber numberWithBool:YES];
response.message=exception.reason;
}
return response;
}

-(DocumentSignResponse *)signDocument:(DocumentSignRequest*)input error:(FlutterError * *)error{
DocumentSignResponse *response = [[DocumentSignResponse alloc] init];
response.isError=[NSNumber numberWithBool:NO];

NSString *certContainer;
NSString *certSerial;
NSString *certPublicKey;

@try
{
certContainer = [[WLICryptoProvider sharedInstance] getInternalContainerName];
certSerial = nil;
certPublicKey = nil;

if (certContainer) {
certSerial= [[WLICryptoProvider sharedInstance] getCertSerialNumberFromContainer:certContainer];
certPublicKey = [[WLICryptoProvider sharedInstance] getPublicKeyInfoCertFromContainer:certContainer];
}

NSData *signature = [[WLICryptoProvider sharedInstance] signFile:input.docPath withCertFromContainer:certContainer];

if(signature){
response.signature=[FlutterStandardTypedData typedDataWithBytes:signature];
}else{
response.isError=[NSNumber numberWithBool:YES];
response.message=@"Подпись не удалась";
}
}
@catch(NSException *exception) {
response.isError=[NSNumber numberWithBool:YES];
response.message=[NSString stringWithFormat:@"%@ /%@", @"Подпись не удалась:", exception.reason];
}
return response;
}


получаю:

<csp>0x104b878c0:OpenContainer!OpenContainer kcar_open fail (0x80090016) (:1095)
<capi20>0x104b878c0:CryptAcquireContextA!failed: LastError = 0x80090016 (:810)
Last error before acquiring 0x00000000
Last error after acquiring 0x80090016
[cadesSignHash:withCertFromContainer:] MY cert store opened.
Last error after loading certificate 0x80090016
1.2.643.7.1.1.3.2
Last error before signing 0x80090016
CadesSignHash() failed
Last error after signing 0x80091007
<csp>0x104b878c0:OpenContainer!OpenContainer kcar_open fail (0x80090016) (:1095)
<capi20>0x104b878c0:CryptAcquireContextA!failed: LastError = 0x80090016 (:810)
Last error before acquire 0x80090016
Last error after acquire 0x80090016
Last error before loading cert 0x80090016
[detachedSign:withCertFromContainer:] MY cert store opened.
Last error after loading cert 0x80090016
[detachedSign:withCertFromContainer:] The signer's certificate was found.
Last error before signing 0x80090016
<capi20>0x104b878c0:CryptAcquireCertificatePrivateKey!() CertGetCertificateContextPropertyWithLock(CERT_KEY_PROV_INFO_PROP_ID) failed! (:294)
<capi20>0x104b878c0:CryptAcquireCertificatePrivateKey!(failed: LastError = 0x8009200b) (:312)
[detachedSign:withCertFromContainer:] CryptSignMessage failed.
Last error after signing 0x8009200b
Last error before signing 2 0x8009200b
<capi20>0x104b878c0:CryptAcquireCertificatePrivateKey!() CertGetCertificateContextPropertyWithLock(CERT_KEY_PROV_INFO_PROP_ID) failed! (:294)
<capi20>0x104b878c0:CryptAcquireCertificatePrivateKey!(failed: LastError = 0x8009200b) (:312)
[detachedSign:withCertFromContainer:] CryptSignMessage failed.
Last error after signing 2 0x8009200b

подскажите, с чем может быть связано, в какую сторону смотреть?
Здравствуйте.

Судя по ошибке, нет ссылки на закрытый ключ для используемого сертификата.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.