You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Доброго здоров'я.
Маю один p7s файл і щось не перевіряється підпис, помилки не виводиться, в ньому коли використовую ваш github.com/dstucrypt/agent.
Перевіряю в режимі --verify --ocsp lax. З'ясував що саме перевірка --ocsp викликає помилку, яка є коли в об'єкт Message, в поле signedWithCerts, що є масивом, записувалось три об'єкта що представляють сертифікати, які читаються з цього p7s файла. Першій 'сертифікат' був з полем serialNumber, інші два об'єкта були тільки з полем keyId. Я пошукав що там в поле keyId зачиталось з p7s файла.
Використав http://lapo.it/asn1js щоб подивитись байти з keyId у файлі p7s. Маю картинку де видно ці байти в файлі і які ідентифікатори asn1 їм відповідають. Я так зробив висновок що то пакет asn1.js помилково розбирає p7s.
В цьому PR я пропоную корекцію к полю signedWithCerts що
б взагалі відсікати такі прочитані сертифікати в яких немає поля serialNumber. Тести проходять ті що в вас є в jkurwa.
Але я не впевнений що зроблено вірно для всіх, але мою помилку виправило і також коректно перевіряє p7s файли ті що раніше і так перевірялись.
Я так зробив висновок що то пакет asn1.js помилково розбирає p7s.
Я файла не бачив, але підозрюю що розбирає він все правильно і там дійсно вказан keyid, а serial не вказан. Це нормально. Треба дивитись на ctx.jsL317~318 чого воно не може знайти той сертифікат по keyid.
То воно получається не буде перевіряти один з сертифікатів, так? Це нехорошо.
В даному проблемному p7s, доречи сертифікат виданий uakey.com.ua АЦСК Україна, вказано що дані підписано одним сертифікатом. Тобто в групі байтів що відповідають по asn1 идентифікатору certificates є тілки один елемент. Це можна бачити на малюнку, зверху приблизно 9-тий рядок.
А от jkurwa після розбору даних в Message вважає що дані підписано трьома сертифікатами. Другий и третій елементи масиву signedWithCerts jkurwa каже мають лише одне поле keyId і воно однаково у цих двох елементів. Але це поле, 32 байти, можно бачити на малюнку, обведено червоним, воно належить ідентификатору asn1 contentTimestamp і знаходиться воно, тобто ці байти що вважаються keyId, знаходяться в полях SignerInfos/SignerInfo/signedAttrs п'ятй атрибут той що contentTimestamp.
Я сам не знаю, але хіба це keyId? contentTimestamp - може це якесь значення часу а не keyId? Оці 32 байти що зайшли в jkurwa в список сертифікатів що підписали, вони на малюнку окреслені червоним.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Доброго здоров'я.
Маю один p7s файл і щось не перевіряється підпис, помилки не виводиться, в ньому коли використовую ваш github.com/dstucrypt/agent.
Перевіряю в режимі --verify --ocsp lax. З'ясував що саме перевірка --ocsp викликає помилку, яка є коли в об'єкт Message, в поле signedWithCerts, що є масивом, записувалось три об'єкта що представляють сертифікати, які читаються з цього p7s файла. Першій 'сертифікат' був з полем serialNumber, інші два об'єкта були тільки з полем keyId. Я пошукав що там в поле keyId зачиталось з p7s файла.
Використав http://lapo.it/asn1js щоб подивитись байти з keyId у файлі p7s. Маю картинку де видно ці байти в файлі і які ідентифікатори asn1 їм відповідають. Я так зробив висновок що то пакет asn1.js помилково розбирає p7s.
В цьому PR я пропоную корекцію к полю signedWithCerts що
б взагалі відсікати такі прочитані
сертифікатив яких немає поля serialNumber. Тести проходять ті що в вас є в jkurwa.Але я не впевнений що зроблено вірно для всіх, але мою помилку виправило і також коректно перевіряє p7s файли ті що раніше і так перевірялись.