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;
        }