Tpm2Lib.TpmPolicyOr.GetPolicyDigest C# (CSharp) Method

GetPolicyDigest() private method

private GetPolicyDigest ( TpmAlgId hashAlg ) : TpmHash
hashAlg TpmAlgId
return TpmHash
        internal override TpmHash GetPolicyDigest(TpmAlgId hashAlg)
        {
            int numBranches = PolicyBranches.Count;
            if (numBranches < 2 || numBranches > 8)
            {
                Globs.Throw("GetPolicyDigest: Must have between 2 and 8 branches in a PolicyOr");
            }

            var m = new Marshaller();
            m.Put(TpmHash.ZeroHash(hashAlg).HashData, "zero");
            m.Put(TpmCc.PolicyOR, "ordinal");
            foreach (PolicyAce branch in PolicyBranches)
            {
                TpmHash branchPolicyHash = branch.GetPolicyDigest(hashAlg);
                m.Put(branchPolicyHash.HashData, "h");
            }
            byte[] polVal = CryptoLib.HashData(hashAlg, m.GetBytes());
            return new TpmHash(hashAlg, polVal);
        }