Ejemplo n.º 1
0
        /// <summary>
        ///     Проверяеи ЭЦП данных.
        /// </summary>
        /// <param name="signature">Подпись (ЭЦП).</param>
        /// <param name="hashContext">Контекст хэша данных.</param>
        /// <param name="flags">Дополнительные управляющие флаги.</param>
        /// <returns>True, если ЭЦП корректна.</returns>
        public bool VerifySignature(byte[] signature, HashContext hashContext, int flags)
        {
            if (CryptoApi.CryptVerifySignature(hashContext.Handler, signature, signature.Length, handler, null, flags))
            {
                return(true);
            }

            if (Marshal.GetLastWin32Error() == Constants.NteBadSignature)
            {
                return(false);
            }

            throw new Win32Exception(Marshal.GetLastWin32Error());
        }