private static byte[] SignMessage(X509Certificate2 certificate, byte[] message) { // Создание объекта для подписи сообщения var signedCms = new GostSignedCms(new ContentInfo(message), true); // Создание объектс с информацией о подписчике var signer = new CmsSigner(certificate); // Включение информации только о конечном сертификате (только для теста) signer.IncludeOption = X509IncludeOption.EndCertOnly; // Создание подписи для сообщения CMS/PKCS#7 signedCms.ComputeSignature(signer); // Создание подписи CMS/PKCS#7 return signedCms.Encode(); }
private static bool VerifyMessage(byte[] message, byte[] detachedSignature) { // Создание объекта для проверки подписи сообщения var signedCms = new GostSignedCms(new ContentInfo(message), true); // Чтение подписи CMS/PKCS#7 signedCms.Decode(detachedSignature); try { // Проверка подписи CMS/PKCS#7 signedCms.CheckSignature(true); } catch { return false; } return true; }
private static bool VerifyMessage(byte[] signedMessage) { // Создание объекта для проверки подписи сообщения var signedCms = new GostSignedCms(); // Чтение сообщения CMS/PKCS#7 signedCms.Decode(signedMessage); try { // Проверка подписи сообщения CMS/PKCS#7 signedCms.CheckSignature(true); } catch { return false; } return true; }