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
Сейчас для совместимости с некоторыми сторонними реализациями (ФСС) необходимо осуществлять импорт ключа 12 госта с использование старого CryptoProKeyWrap. Так как определить тип KeyWrap по ключу внутри Xml невозможно, то делаем так
private SymmetricAlgorithm CryptoProUnwrap(byte[]wrapped){try{returnthis.CryptoProUnwrap(wrapped, GostConstants.CALG_PRO12_EXPORT);}catch(CryptographicExceptionex){if(Marshal.GetHRForException(ex)==-2146893819){// bad data - пробуем импорт на старом алгоритмеreturnthis.CryptoProUnwrap(wrapped, GostConstants.CALG_PRO_EXPORT);}else{throw;}}}
Проблема возникает при использовании метода ImportKeyBlob
Проблема технически может возникать и в других сценариях, ибо код CapiHelper полностью перенесён из Шарпея, и обработка ошибок полностью виндовая, на unix возможны и другие некорректные коды. С виду мы больше нигде по ним не ветвимся, поэтому править массово пока не будем (из за опасений, что получение кода ошибки в других методах теоретически может приходить к перетиранию кода, и тогда будем получать ошибку и на windows).
Хорошо добывать бы тест на это (возможно в рамках LibCore с переносом сюда).
The text was updated successfully, but these errors were encountered:
Сейчас для совместимости с некоторыми сторонними реализациями (ФСС) необходимо осуществлять импорт ключа 12 госта с использование старого
CryptoProKeyWrap
. Так как определить тип KeyWrap по ключу внутри Xml невозможно, то делаем такПроблема возникает при использовании метода
ImportKeyBlob
Так как для Unix
Marshal.GetLastWin32Error()
вернёт некорректный код ошибки. При исправлении наработает корректно.
Проблема технически может возникать и в других сценариях, ибо код
CapiHelper
полностью перенесён из Шарпея, и обработка ошибок полностью виндовая, на unix возможны и другие некорректные коды. С виду мы больше нигде по ним не ветвимся, поэтому править массово пока не будем (из за опасений, что получение кода ошибки в других методах теоретически может приходить к перетиранию кода, и тогда будем получать ошибку и на windows).Хорошо добывать бы тест на это (возможно в рамках LibCore с переносом сюда).
The text was updated successfully, but these errors were encountered: