Ошибка asn1 bad tag value met

We’ve seen a few instances of the following error message on 64 bit servers when IIS 7.0 is attempting to process a pending certificate request:

Complete Certificate Request

There was an error while performing this operation.

Details:

CertEnroll::CX509Enrollment::p_InstallResponse: ASN1 bad tag value met. 0x8009310b (ASN: 267)

This error seems to mean that the private key (created when the certificate request was made) does not match the public key (the .crt file).  The keypair is not successfully joined into a working SSL certificate.

So far this behavior seems most common with .crt files (instead of the .cer files many of us are more used to) issued by one specific Certification Authority—which will remain nameless here.

The error shows up after reaching the point in the process where you ‘specify certificate authority response’ and guide the wizard to the  ‘File name containing the certification authority’s response…’ (the .crt file).  

So far there seem to be two solutions.

Solution 1:

Verisign has a support article that matches this error message: https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=S:SO8467&actp=….  Their recommendation seems to be to replace the certificate with a new one.   This method has worked for at least one of my customers in this place with a GoDaddy certificate.  All they had to do was make a new certificate request (CSR text file), log into the the Godaddy web interface and re-key (we chose re-key rather than re-issue) their certificate.  The new file processed fine.

Solution 2:

Begin by importing the .crt file into the Personal certificate store for the local computer.  (Start button > Run:  MMC > File Menu > Add/Remove Snap-in > highlight Certificates snap-in and click the ADD button > select Computer Account and click Finish >  Click OK > drill into Personal > Certificates >  right-click and select All Tasks > select Import > guide to the .crt file.)  At this point your certificate is basically a half-certificate.  It is still missing its private key.

Second, double-click the crt certificate file you just imported, select the Details tab, scroll all the way down to Thumbprint and highlight Thumbprint.  In the lower pane, block and copy all the letters of the thumbprint.  Paste the thumbprint characters into notepad.  Open the command prompt and run this command: Certutil /?

The command you’ll want to run is:

certutil -repairstore my «{insert all of the thumbprint characters here}»

When you see the response: “CertUtil: -repairstore command completed successfully” you should have a private key associated with the .crt file in the personal store. There should no longer be any need to run through the “Complete Certificate Request…” wizard.  The certificate should show up in the IIS Manager’s list of server certificates at this point.  It should also be available in the SSL Certificates drop-down list when attempting to edit the https binding for a website.  

Incidentally, a common way of attempting to deal with this error is to take the .p7b file from the Certification Authority and import the CA’s certificates into the Trusted and Intermediate stores.   As far as I can tell, this approach has no useful effect upon this problem.  

Other relevant links:

https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=S:SO8467&actp=…

http://blogs.msdn.com/vijaysk/archive/2008/11/25/certenroll-cx509enrollment-p-installresponse-asn1-b…

Author: Christopher T. Haun

I’m loading a .p7b certificate file into memory and then calling CertCreateCertificateContext on it, but it fails with the error «ASN1 bad tag value met.».

The call look like this:

m_hContext = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, pbCertEncoded, dwCertEncodedLen);

This returns NULL and GetLastError() returns the error mentioned above.

I created the certificate file by dragging a certificate out of the settings in IE, which then does an automatic export to a file.

What am I doing wrong?

Thanks!

asked Nov 10, 2009 at 14:20

Rabbit's user avatar

3

Try to open your certificate by some asn.1 editor.

Probably your certificate has been exported incorrectly or size of the certificate you pass to the api is wrong… Rather the second one option (incorrect cert construction or passing).

I found here the info that the encoding you try to use is not fully supported (see possible error values).

altocumulus's user avatar

altocumulus

21.1k13 gold badges61 silver badges83 bronze badges

answered Nov 10, 2009 at 15:21

Aleksander Stankiewicz's user avatar

2

You have to use CertOpenStore() instead:

HCERTSTORE hCertStore = CertOpenStore(
    CERT_STORE_PROV_FILENAME,
    X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
    NULL,
    CERT_STORE_OPEN_EXISTING_FLAG | CERT_STORE_READONLY_FLAG,
    pszFilePath));

CertCreateCertificateContext() supports one certificate only, whereas PKCS #7 file can contain many.

Quote from MSDN:

CERT_STORE_PROV_FILENAME
Initializes the store with certificates, CRLs, and CTLs from a file. The provider opens the file and first attempts to read the file as a serialized store, then as a PKCS #7 signed message, and finally as a single encoded certificate.

After the certificate store is open, you can use CertEnumCertificatesInStore() to retrieve certificate context of individual certificates from store.

answered Mar 17, 2015 at 8:44

Simon Rozman's user avatar

2

Make sure the certificate is in binary format.

I had similar issue when the certificate was in «Base-64 encoded X.509».
It was fixed when i used the same certificate in «DER encoded binary X.509»

You can do this easily on windows by manually importing into cert store and then exporting using the desired format.

Certificate can then be used to be installed on other machines using winapi functions.

answered Apr 24, 2017 at 15:59

posix99's user avatar

posix99posix99

3573 silver badges13 bronze badges

Форум КриптоПро
 » 
Устаревшие продукты
 » 
КриптоПро УЦ 1.4
 » 
ASN1 bad tag value met при вызове SubmitRequest


Offline

Maxim Korobov

 


#1
Оставлено
:

29 марта 2008 г. 17:41:03(UTC)

Maxim Korobov

Статус: Активный участник

Группы: Участники

Зарегистрирован: 19.02.2008(UTC)
Сообщений: 66
Откуда: Москва

Вызываю через SOAP метод SubmitRequest. Другие методы работают, этот возвращает:
Ошибка: ASN1 bad tag value met.

Если тот же запрос вставлять в поле открытого в браузере WEB-интерфейса (путь https://<Сервер>/certsrv/), то запрос проходит успешно. Сертификат можно скачать.

Пример запроса:
MIIB3TCCAYoCAQAwge0xGTAXBgkqhkiG9w0BCQETCmluZ0BpbmcucnUxCzAJBgNVBAYTAlJVMQswCQYDVQQIEwJSVTEPMA0GA1UEBxMGTW9zY293MT8wPQYDVQQKHjYEIQQ6BDAEOwQwACAAKAQhBB0EEwApACAEGwQ4BDwEOARCBDUENAAgACgEGgQYBB8EIAApAAAxPzA9BgNVBAseNgQhBDoEMAQ7BDAAIAAoBCEEHQQTACkAIAQbBDgEPAQ4BEIENQQ0ACAAKAQaBBgEHwQgACkAADEjMCEGA1UEAx4aBC4ENAQwBDkEOgQ4BD0AIAQSAC4EFQAuAAAwYzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYHKoUDAgIeAQNDAARAUKb2ibucnfCDUeZBSa90dWzYqLpsA4r4faZdP+urKpB6Vt60YMMBxup4xqK15d2JtrMpZYNMwuXBxRb1rjZ8GqAwMC4GCisGAQQBgjcCAQ4xIDAeMBwGA1UdJQQVMBMGByqFAwICIgIGCCsGAQUFBwMCMAoGBiqFAwICAwUAA0EAmrRomaq2OXJdonWVsnNX3XyQ4XAOUSTbNjto0wsmT/AVaApPk/JckCqOCpuK+net3/uLtesTJR2GEVLl74WSKA


Возможно, надо что-то другое вызывать, не метод SubmitRequest. Прошу это проверить. Мне надо на клиенте по готовым запросам сертификата получать готовые подписанные сертификаты, отправляя данные на удаленный ЦР.


Вверх


Offline

Kirill Sobolev

 


#2
Оставлено
:

31 марта 2008 г. 17:27:02(UTC)

Кирилл Соболев

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

Группы: Участники

Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах

Метод SubmitRequest принимает запросы вида PKCS7(PKCS10).

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

Maxim Korobov

 


#3
Оставлено
:

1 апреля 2008 г. 20:18:29(UTC)

Maxim Korobov

Статус: Активный участник

Группы: Участники

Зарегистрирован: 19.02.2008(UTC)
Сообщений: 66
Откуда: Москва

В «Руководстве программиста» написано «PKCS#7 Base64 encoded». Разве представленный мной запрос не в должной форме?
Прошу ответить развернуто.

Еще, я не понимаю, как соотносятся запросы сертификатов с пользователями. Например, чтобы выпустить сертификат, пользователь уже должен существовать (быть создан раньше), так? То есть последовательность такая: создается пользователь, создается запрос на первый сертификат, загружается полученный сертификат, используется. При приближении окончания срока действия сертификата, требуется дополнительное обращение для получения нового сертификата на основе текущего.
Это расходится с логикой моего приложения, суть которого является по готовым запросам (пример запроса выше) получать готовые же сертификаты.


Вверх


Offline

Kirill Sobolev

 


#4
Оставлено
:

1 апреля 2008 г. 22:09:18(UTC)

Кирилл Соболев

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

Группы: Участники

Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах

В «Руководстве программиста» все правильно написано — нужен PKCS#7, внутри которого уже собственно лежит запрос PKCS#10.
А в Вашем примере запрос просто в PKCS#10, поэтому метод SubmitRequest и выдает ошибку — он работает только с подписанными запросами на сертификат.
С неподписанными запросами работает метод ИВП SubmitFirstCertRequest.

Цитата:

Например, чтобы выпустить сертификат, пользователь уже должен существовать (быть создан раньше), так? То есть последовательность такая:
создается пользователь, создается запрос на первый сертификат, загружается полученный сертификат, используется. При приближении окончания
срока действия сертификата, требуется дополнительное обращение для получения нового сертификата на основе текущего.

Совершенно верно. Хотя сертификат можно сделать и не на основе текущего — опять же используя метод SubmitFirstCertRequest.

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

Maxim Korobov

 


#5
Оставлено
:

1 апреля 2008 г. 22:37:17(UTC)

Maxim Korobov

Статус: Активный участник

Группы: Участники

Зарегистрирован: 19.02.2008(UTC)
Сообщений: 66
Откуда: Москва

Kirill Sobolev написал:

В «Руководстве программиста» все правильно написано — нужен PKCS#7, внутри которого уже собственно лежит запрос PKCS#10.
А в Вашем примере запрос просто в PKCS#10, поэтому метод SubmitRequest и выдает ошибку — он работает только с подписанными запросами на сертификат.
С неподписанными запросами работает метод ИВП SubmitFirstCertRequest.

А какие функции CryptoAPI в этом участвуют? Если ли пример или план действий по кодированию PKCS#10 еще и в PKCS#7?

Kirill Sobolev написал:

Совершенно верно. Хотя сертификат можно сделать и не на основе текущего — опять же используя метод SubmitFirstCertRequest.

Текущий пользователь, как я понимаю, это зарегистрированный пользователь, на основе сертификата которого вызываются методы.

Важно! Не будет ли при этом увеличиваться количество пользователей с одинаковыми именами, но разными сертификатами, пропорционально времени действию 1 сертификата?
Если нет, тогда дело в шляпе — вызывать SubmitFirstCertRequest от текущего пользователя.


Вверх


Offline

Maxim Korobov

 


#6
Оставлено
:

1 апреля 2008 г. 22:43:14(UTC)

Maxim Korobov

Статус: Активный участник

Группы: Участники

Зарегистрирован: 19.02.2008(UTC)
Сообщений: 66
Откуда: Москва

Хм…

В описании для VB у SubmitFirstCertRequest 3 параметр — как раз необходимый CreateCertForExistingUser.
В описании для Си и далее — BOOL Unused :)


Вверх


Offline

Kirill Sobolev

 


#7
Оставлено
:

2 апреля 2008 г. 15:49:38(UTC)

Кирилл Соболев

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

Группы: Участники

Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах

Цитата:

А какие функции CryptoAPI в этом участвуют? Если ли пример или план действий по кодированию PKCS#10 еще и в PKCS#7?

Те функции, при помощи которых осуществляется подпись. Можно также воспользоваться не CryptoAPI, а классом CAPICOM SignedData.

Цитата:

Не будет ли при этом увеличиваться количество пользователей с одинаковыми именами

не будет.

Цитата:

В описании для VB у SubmitFirstCertRequest 3 параметр — как раз необходимый CreateCertForExistingUser.

в описании для VB неточность, этот параметр действительно не используется.

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

Maxim Korobov

 


#8
Оставлено
:

2 апреля 2008 г. 16:58:05(UTC)

Maxim Korobov

Статус: Активный участник

Группы: Участники

Зарегистрирован: 19.02.2008(UTC)
Сообщений: 66
Откуда: Москва

Отлично!
Значит вместо создания пользователя, создания запроса, а также повторного выпуска сертификата по истечению срока, можно использовать только SubmitFirstCertRequest, передавая запрос.


Вверх


Offline

Kirill Sobolev

 


#9
Оставлено
:

2 апреля 2008 г. 17:48:17(UTC)

Кирилл Соболев

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

Группы: Участники

Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах

Нет.
Пользователя надо создавать отдельно, запрос надо создавать отдельно. Но вместо повторногов выпуска действительно можно использовать SubmitFirstCertRequest.

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

Maxim Korobov

 


#10
Оставлено
:

3 апреля 2008 г. 16:06:07(UTC)

Maxim Korobov

Статус: Активный участник

Группы: Участники

Зарегистрирован: 19.02.2008(UTC)
Сообщений: 66
Откуда: Москва

А есть кикие-либо условия на данные пользователя и выпускаемый ему сертификат?
Я имею ввиду, можно ли создавать пользователя с одними данными, а запрос на сертификат давать с другими. Или же надо следить за данными?


Вверх

Пользователи, просматривающие эту тему

Guest

Форум КриптоПро
 » 
Устаревшие продукты
 » 
КриптоПро УЦ 1.4
 » 
ASN1 bad tag value met при вызове SubmitRequest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Hi

I have a problem with unblocking user smartcards. All is well up to the point where the user executes the unblock of his smartcard. Then the clm website turns up an error

ASN1 bad tag value met.

I have checked the eventlogs on the CLM server and here is wath they turned out!

Certificate Lifecycle manager Log

Event Type: Error
Event Source: System.Web
Event Category: None
Event ID: 0
Date:  2009-04-01
Time:  14:44:43
User:  N/A
Computer: JUPITER
Description:
Message:Exception of type ‘System.Web.HttpUnhandledException’ was thrown.
Type:System.Web.HttpUnhandledException
Source:System.Web
Stack Trace:   at System.Web.UI.Page.HandleError(Exception e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at ASP.content_sm_requests_myrequests_aspx.ProcessRequest(HttpContext context) in c:WINDOWSMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Filesclm446be4807055ce71App_Web_j6dw42df.3.cs:line 0
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Inner Exception:Message:ASN1 bad tag value met.

Type:System.Runtime.InteropServices.COMException
Source:
Stack Trace:   at Microsoft.Clm.Interop.capicom.EnvelopedDataClass.Decrypt(String EnvelopedMessage)
   at Microsoft.Clm.BusinessLayer.DataEncryption.Decrypt(String encrypted)
   at Microsoft.Clm.BusinessLayer.DefaultSecretProvider.ReadXml(String xml)
   at Microsoft.Clm.BusinessLayer.DefaultSecretProvider.GetSecrets(Request request)
   at Microsoft.Clm.BusinessLayer.SecretsUtility.GetNumberOfSecrets(UserProfile profileTemplate, Request clmRequest)
   at Microsoft.Clm.Web.MyRequests.NeedAuthorizationOnRequest(Request clmRequest)
   at Microsoft.Clm.Web.MyRequests.GetContinueUrl(Request clmRequest)
   at Microsoft.Clm.Web.MyRequests.GetExecuteLinkCell(Request clmRequest, String className)
   at Microsoft.Clm.Web.MyRequests.requestsGrid_InitializeRow(Object sender, RowEventArgs e)
   at Infragistics.WebUI.UltraWebGrid.UltraWebGrid.OnInitializeRow(UltraGridRow row, Object data)
   at Infragistics.WebUI.UltraWebGrid.DBBinding.FillRows(UltraWebGrid grid, RowsCollection rows, IEnumerable datasource)
   at Infragistics.WebUI.UltraWebGrid.DBBinding.BindList(IEnumerable datasource)
   at Infragistics.WebUI.UltraWebGrid.DBBinding.DataBind(Object dataSource, String dataMember)
   at Infragistics.WebUI.UltraWebGrid.UltraWebGrid.DataBind()
   at Microsoft.Clm.Web.MyRequests.LoadRequests()
   at Microsoft.Clm.Web.MyRequests.Page_Load(Object sender, EventArgs e)
   at System.Web.UI.Control.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Application Log

Event Type: Warning
Event Source: ASP.NET 2.0.50727.0
Event Category: Web Event
Event ID: 1309
Date:  2009-04-01
Time:  14:44:43
User:  N/A
Computer: JUPITER
Description:
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 2009-04-01 14:44:43
Event time (UTC): 2009-04-01 12:44:43
Event ID: c12334475e0c4569adcce85a32361e05
Event sequence: 244
Event occurrence: 3
Event detail code: 0

 Application information:
    Application domain: /LM/W3SVC/1/Root/Clm-1-128830615937963451
    Trust level: Full
    Application Virtual Path: /Clm
    Application Path: C:Program FilesMicrosoft Certificate Lifecycle Managerweb
    Machine name: JUPITER

 Process information:
    Process ID: 4872
    Process name: w3wp.exe
    Account name: RIKSBANKclmWebPool

 Exception information:
    Exception type: COMException
    Exception message: ASN1 bad tag value met.

  Request information:
    Request URL: https://jupiter/Clm/content/sm/requests/myrequests.aspx?NumberOfDays=-1&FilterRequests=ExecutableRequests
    Request path: /Clm/content/sm/requests/myrequests.aspx
    User host address: 10.210.5.206
    User: RIKSBANKTORKRO
    Is authenticated: True
    Authentication Type: Basic
    Thread account name: RIKSBANKclmWebPool

 Thread information:
    Thread ID: 1
    Thread account name: RIKSBANKclmWebPool
    Is impersonating: False
    Stack trace:    at Microsoft.Clm.Interop.capicom.EnvelopedDataClass.Decrypt(String EnvelopedMessage)
   at Microsoft.Clm.BusinessLayer.DataEncryption.Decrypt(String encrypted)
   at Microsoft.Clm.BusinessLayer.DefaultSecretProvider.ReadXml(String xml)
   at Microsoft.Clm.BusinessLayer.DefaultSecretProvider.GetSecrets(Request request)
   at Microsoft.Clm.BusinessLayer.SecretsUtility.GetNumberOfSecrets(UserProfile profileTemplate, Request clmRequest)
   at Microsoft.Clm.Web.MyRequests.NeedAuthorizationOnRequest(Request clmRequest)
   at Microsoft.Clm.Web.MyRequests.GetContinueUrl(Request clmRequest)
   at Microsoft.Clm.Web.MyRequests.GetExecuteLinkCell(Request clmRequest, String className)
   at Microsoft.Clm.Web.MyRequests.requestsGrid_InitializeRow(Object sender, RowEventArgs e)
   at Infragistics.WebUI.UltraWebGrid.UltraWebGrid.OnInitializeRow(UltraGridRow row, Object data)
   at Infragistics.WebUI.UltraWebGrid.DBBinding.FillRows(UltraWebGrid grid, RowsCollection rows, IEnumerable datasource)
   at Infragistics.WebUI.UltraWebGrid.DBBinding.BindList(IEnumerable datasource)
   at Infragistics.WebUI.UltraWebGrid.DBBinding.DataBind(Object dataSource, String dataMember)
   at Infragistics.WebUI.UltraWebGrid.UltraWebGrid.DataBind()
   at Microsoft.Clm.Web.MyRequests.LoadRequests()
   at Microsoft.Clm.Web.MyRequests.Page_Load(Object sender, EventArgs e)
   at System.Web.UI.Control.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

  Custom event details:

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.


Offline

Please

 


#1
Оставлено
:

28 ноября 2017 г. 9:25:04(UTC)

Please

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

Группы: Участники

Зарегистрирован: 27.11.2017(UTC)
Сообщений: 8
Российская Федерация

Пытаюсь с помощью КриптоПро Browser plug-in расшифровать xml, зашифрованную gost28147. Вытаскиваю из тега xenc:CipherValue закодированное сообщение, передаю в функцию decrypt, и пытаюсь расшифровать ключом сертификата, которым производилось шифрование:

Код:

decrypt(encryptedContent: string, certHash: string) {
	return new Promise(function (resolve, reject) {
		cadesplugin.async_spawn(function* (args) {
			try {
				let store = yield cadesplugin.CreateObjectAsync("CAPICOM.Store");
				yield store.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE,
					cadesplugin.CAPICOM_MY_STORE,
					cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
				let certificatesObj = yield store.Certificates;
				let certificates = yield certificatesObj.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, args[1]);
				let certificate = yield certificates.Item(1);						

				let oEnvelop = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPEnvelopedData");
				yield oEnvelop.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
				yield oEnvelop.propset_Content(args[0]);

				let rp = yield oEnvelop.Recipients;
				yield rp.Clear();
				yield rp.Add(certificate);
				let decryptedContent = yield oEnvelop.Decrypt(args[0]);

				yield store.Close();
				args[2](decryptedContent);						
			}
			catch (e) {
				args[3](`Ошибка при дешифровании сообщения: ${cadesplugin.getLastError(e)}`);
			}
		}, encryptedContent, certHash, resolve, reject);
	});
},

Метод oEnvelop.Decrypt пытался вызывать тремя способами:
1. без параметров: КриптоПро Browser plug-in завершает работу;
2. передать в качестве аргумента сертификат: возвращалась ошибка «Parameter is incorrect»;
3. передать в качестве аргумента закодированное сообщение: возвращалась ошибка «asn1 bad tag value met».

Подскажите, как правильно использовать плагин для расшифровки.


Вверх


Offline

cross

 


#2
Оставлено
:

30 ноября 2017 г. 12:39:53(UTC)

Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах

Derypt ожидает на вход CMS EnvelopedData message. Скорее всего что в теге некоего xml в поле xenc:CipherValue лежит не это.

Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.


Вверх


Offline

Please

 


#3
Оставлено
:

30 ноября 2017 г. 18:11:05(UTC)

Please

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

Группы: Участники

Зарегистрирован: 27.11.2017(UTC)
Сообщений: 8
Российская Федерация

На вход передаются правильные данные. Их удавалось расшифровать средствами .net, а через апи плагина ошибка «asn1 bad tag value met». Может я неправильно передаю контент методом propset_Content? В моём варианте получается, что в Decrypt передаётся тот же параметр, что устанавливается в propset_Content, это точно правильно?


Вверх


Offline

cross

 


#4
Оставлено
:

1 декабря 2017 г. 14:14:03(UTC)

Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах

То что вы расшифровали с помощью некоего кода в .NET это не говорит о формате данных ни чего. Decrypt ожидает что данные будут правильно ASN1 закодированное сообщение CMS Enveloped Data. У меня есть большие сомнения что в этом теге именно эти данные находятся.

Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.


Вверх


Offline

Please

 


#5
Оставлено
:

1 декабря 2017 г. 17:37:28(UTC)

Please

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

Группы: Участники

Зарегистрирован: 27.11.2017(UTC)
Сообщений: 8
Российская Федерация

Хорошо, один момент, кажется, выяснили, параметром метода decrypt должен быть секретный ключ в BASE64 кодировке, находящийся в xml.
Итого получается, что в объект CAdESCOM.CPEnvelopedData я передаю следующие параметры:
— recipients: сертификат, которым должно выполниться дешифрование
— content: сообщение, которое должно быть расшифровано
— аргумент метода decrypt: секретный ключ
Всё верно?

Я проверил секретный ключ в онлайн сервисе https://lapo.it/asn1js/, получился такой результат:

Код:

SEQUENCE(2 elem)
SEQUENCE(2 elem)
OCTET STRING(32 byte) 32FE964805D3EF28DEE63506272169FC2FEF3AE4B657960AECE9871470D5CFF8
OCTET STRING(4 byte) 19F615DA
[0](3 elem)
OBJECT IDENTIFIER1.2.643.2.2.31.1cryptoProCipherA(CryptoPro params A for GOST 28147-89)
[0](2 elem)
SEQUENCE(2 elem)
OBJECT IDENTIFIER1.2.643.2.2.19gostPublicKey(GOST R 34.10-2001 (ECC) public key)
SEQUENCE(2 elem)
OBJECT IDENTIFIER1.2.643.2.2.36.0cryptoProSignXA(CryptoPro ell.curve XA for GOST R 34.11-2001)
Offset: 70
Length: 2+7
Value:
1.2.643.2.2.36.0
cryptoProSignXA
CryptoPro ell.curve XA for GOST R 34.11-2001
OBJECT IDENTIFIER1.2.643.2.2.30.1cryptoProDigestA(CryptoPro digest params for GOST R 34.11-94)
BIT STRING(1 elem)
OCTET STRING(64 byte) ...
OCTET STRING(8 byte) ...

Это вроде похоже на ASN.1 закодированное сообщение, но метод Decrypt по-прежнему возвращает «asn1 bad tag value met». Подскажите, может с этим секретным ключом нужно ещё что-то сделать?


Вверх

Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Понравилась статья? Поделить с друзьями:
  • Ошибка asn 1 декодирования эп сообщения
  • Ошибка asio sys windows 10
  • Ошибка ash на приставке цифрового телевидения что делать
  • Ошибка ash на приставке цифрового телевидения oriel 790
  • Ошибка ash на globo gl100