Exemplo n.º 1
0
        /// <summary>
        /// Создаёт подпись данных хэша.
        /// </summary>
        /// <param name="keyNumber">
        /// Тип ключа.
        /// </param>
        /// <param name="flags">
        /// Дополнительные управляющие флаги.
        /// </param>
        /// <returns>
        /// Результат операции.
        /// </returns>
        public byte[] SignHash(KeyNumber keyNumber, int flags)
        {
            var signatureSize = 0;

            if (!CryptoApi.CryptSignHash(handler, (int)keyNumber, null, flags, null, ref signatureSize))
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }

            var signature = new byte[signatureSize];

            if (!CryptoApi.CryptSignHash(handler, (int)keyNumber, null, flags, signature, ref signatureSize))
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }

            return(signature);
        }