Beispiel #1
0
        internal BlobChunkVerificationResultInfo VerifyVersion(int expectedVersion)
        {
            var result = BlobChunkVerificationResultInfo.ValidResult;

            if (Version != expectedVersion)
            {
                result = new BlobChunkVerificationResultInfo(BlobChunkVerificationResult.InvalidVersion,
                                                             BlobChunkVerificationResultContext.Chunk, Version);
            }

            return(result);
        }
Beispiel #2
0
        internal BlobChunkVerificationResultInfo VerifyVersionIsPositive()
        {
            var result = BlobChunkVerificationResultInfo.ValidResult;

            if (Version < 0)
            {
                result = new BlobChunkVerificationResultInfo(BlobChunkVerificationResult.InvalidVersion,
                                                             BlobChunkVerificationResultContext.Chunk, Version);
            }

            return(result);
        }
Beispiel #3
0
        internal BlobChunkVerificationResultInfo VerifySignature(uint expectedSignature)
        {
            var result = BlobChunkVerificationResultInfo.ValidResult;

            if (Signature != expectedSignature)
            {
                result = new BlobChunkVerificationResultInfo(BlobChunkVerificationResult.InvalidSignature,
                                                             BlobChunkVerificationResultContext.Chunk, Signature);
            }

            return(result);
        }
Beispiel #4
0
        /// <summary>Checks that there's enough chunk to store both this header and the <paramref name="expectedDataSize"/></summary>
        /// <param name="expectedDataSize">The minimum amount of bytes needed for the data (exlusive of header data)</param>
        /// <returns></returns>
        internal BlobChunkVerificationResultInfo VerifyDataSize(int expectedDataSize)
        {
            var result = BlobChunkVerificationResultInfo.ValidResult;

            if (Size < (expectedDataSize + kSizeOf))
            {
                result = new BlobChunkVerificationResultInfo(BlobChunkVerificationResult.InvalidSize,
                                                             BlobChunkVerificationResultContext.Chunk, Size);
            }

            return(result);
        }
Beispiel #5
0
        // Neither the header or footer even check touch the flags value
        internal BlobChunkVerificationResultInfo VerifyFlagsIsPostive()
        {
            var result = BlobChunkVerificationResultInfo.ValidResult;

            if ((int)Flags < 0)
            {
                result = new BlobChunkVerificationResultInfo(BlobChunkVerificationResult.Invalid,
                                                             BlobChunkVerificationResultContext.Chunk, (uint)Flags);
            }

            return(result);
        }
Beispiel #6
0
        internal BlobChunkVerificationResultInfo VerifyAnyVersion(params int[] expectedVersions)
        {
            var result = new BlobChunkVerificationResultInfo(BlobChunkVerificationResult.InvalidVersion,
                                                             BlobChunkVerificationResultContext.Chunk, Version);

            foreach (var expected_version in expectedVersions)
            {
                if (Version != expected_version)
                {
                    continue;
                }

                result = BlobChunkVerificationResultInfo.ValidResult;
                break;
            }

            return(result);
        }
            BlobChunkVerificationResultInfo VerifyEndian(out bool requiresByteswap)
            {
                requiresByteswap = false;
                var result = BlobChunkVerificationResultInfo.ValidResult;

                if (EndianSignature != kEndianSignature)
                {
                    requiresByteswap = Bitwise.ByteSwap.SwapInt16(EndianSignature) == kEndianSignature;

                    if (!requiresByteswap)                     // the signature didn't match, even after byte swapping it
                    {
                        result = new BlobChunkVerificationResultInfo(BlobChunkVerificationResult.InvalidEndian,
                                                                     BlobChunkVerificationResultContext.Header, EndianSignature);
                    }
                }

                return(result);
            }