Exemplo n.º 1
0
        public static BlobIdentifier Random(HashType hashType = HashType.Vso0)
        {
            var randomBlob = new byte[32];

            ThreadSafeRandom.Generator.NextBytes(randomBlob);
            return(CreateFromAlgorithmResult(randomBlob, AlgorithmIdLookup.Find(hashType)));
        }
Exemplo n.º 2
0
        /// <nodoc />
        public static bool IsHashTagValid(ContentHash contentHash)
        {
            bool isValid = true;
            var  hashTag = contentHash[contentHash.ByteLength - 1];

            switch (contentHash.HashType)
            {
            case HashType.Vso0:
                isValid = hashTag == AlgorithmIdLookup.Find(HashType.Vso0);
                break;

            case HashType.DedupNodeOrChunk:
                isValid = hashTag == AlgorithmIdLookup.Find(HashType.DedupNode) || hashTag == AlgorithmIdLookup.Find(HashType.DedupChunk);
                break;

            case HashType.Murmur:
                isValid = hashTag == AlgorithmIdLookup.Find(HashType.Murmur);
                break;

            default:
                throw new ArgumentException($"{contentHash.HashType} is not a tagged hash.");
            }

            return(isValid);
        }
Exemplo n.º 3
0
 /// <nodoc />
 public static NodeDedupIdentifier GetNodeIdentifier(this DedupNode node, HashType hashType)
 {
     if (node.Type != DedupNode.NodeType.InnerNode)
     {
         throw new ArgumentException($"The given hash does not represent a {nameof(NodeDedupIdentifier)}");
     }
     return(new NodeDedupIdentifier(node.Hash, (NodeAlgorithmId)AlgorithmIdLookup.Find(hashType)));
 }
Exemplo n.º 4
0
        /// <nodoc />
        public static bool IsHashTagValid(ContentHash contentHash)
        {
            var hashTag = contentHash[contentHash.ByteLength - 1];

            return(contentHash.HashType switch
            {
                HashType.Vso0 => hashTag == AlgorithmIdLookup.Find(HashType.Vso0),
                HashType.DedupNodeOrChunk => hashTag == AlgorithmIdLookup.Find(HashType.DedupNode) ||
                hashTag == AlgorithmIdLookup.Find(HashType.DedupChunk),
                HashType.Murmur => hashTag == AlgorithmIdLookup.Find(HashType.Murmur),
                _ => throw new ArgumentException($"{contentHash.HashType} is not a tagged hash.")
            });