Пример #1
0
//C++ TO C# CONVERTER WARNING: 'const' methods are not available in C#:
//ORIGINAL LINE: const Crypto::Hash& getBlockLongHash() const
        public Crypto.Hash getBlockLongHash()
        {
            if (!blockLongHash.is_initialized())
            {
                if (block.majorVersion == BLOCK_MAJOR_VERSION_1)
                {
                    auto rawHashingBlock = getBlockHashingBinaryArray();
                    blockLongHash = Hash();
                    Crypto.GlobalMembers.cn_slow_hash_v0(rawHashingBlock.data(), rawHashingBlock.size(), blockLongHash.get());
                }
                else if ((block.majorVersion == BLOCK_MAJOR_VERSION_2) || (block.majorVersion == BLOCK_MAJOR_VERSION_3))
                {
                    auto rawHashingBlock = getParentBlockHashingBinaryArray(true);
                    blockLongHash = Hash();
                    Crypto.GlobalMembers.cn_slow_hash_v0(rawHashingBlock.data(), rawHashingBlock.size(), blockLongHash.get());
                }
                else if (block.majorVersion >= BLOCK_MAJOR_VERSION_4)
                {
                    auto rawHashingBlock = getParentBlockHashingBinaryArray(true);
                    blockLongHash = Hash();
                    Crypto.GlobalMembers.cn_lite_slow_hash_v1(rawHashingBlock.data(), rawHashingBlock.size(), blockLongHash.get());
                }
                else
                {
                    throw new System.Exception("Unknown block major version.");
                }
            }

            return(blockLongHash.get());
        }