/// <nodoc /> public static NodeDedupIdentifier CalculateIdentifierFromSerializedNode(ArraySegment <byte> bytes, HashType hashType) { Contract.Requires(bytes.Array != null); Contract.Check(((NodeAlgorithmId)hashType.GetNodeAlgorithmId()).IsValidNode())?.Assert($"Cannot serialize from hash because hash type is invalid: {hashType}"); using (var hasher = hashType.GetNodeAlgorithmId().GetContentHasher()) { return(new NodeDedupIdentifier(hasher.GetContentHash(bytes.Array, bytes.Offset, bytes.Count).ToHashByteArray(), hasher.Info.HashType.GetNodeAlgorithmId())); } }
/// <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, hashType.GetNodeAlgorithmId())); }
/// <nodoc /> public static NodeDedupIdentifier CalculateNodeDedupIdentifier(this DedupNode node, HashType hashType) { return(new NodeDedupIdentifier(node.ToContentHash(hashType).ToHashByteArray(), hashType.GetNodeAlgorithmId())); }
/// <nodoc /> public static NodeDedupIdentifier CalculateNodeDedupIdentifier(this DedupNode node, HashType hashType) { return(new NodeDedupIdentifier(ChunkHasher.GetContentHash(node.Serialize()).ToHashByteArray(), hashType.GetNodeAlgorithmId())); }
/// <nodoc /> public static NodeDedupIdentifier CalculateIdentifierFromSerializedNode(byte[] bytes, int offset, int count, HashType hashType) { Contract.Requires(bytes != null); Contract.Check(((NodeAlgorithmId)hashType.GetNodeAlgorithmId()).IsValidNode())?.Assert($"Cannot serialize from hash because hash type is invalid: {hashType}"); return(new NodeDedupIdentifier(Hasher.GetContentHash(bytes, offset, count).ToHashByteArray(), hashType.GetNodeAlgorithmId())); }