Example #1
0
        public static LedgerValidationStatus CheckSignatures(this SignedNewLedger ledger, LedgerRequiredValidatorsFactory factory, Network network)
        {
            var hash = ledger.Hash;

            // get required signatures
            var required = factory.GetRequiredValidators();

            // verify signatures
            foreach (var signature in ledger.Signatures)
            {
                if (!signature.PublicKey.Verify(hash, signature.SignatureByte, network))
                {
                    return(LedgerValidationStatus.InvalidPublicKey);
                }

                required.OnValidSignature(signature.PublicKey);
            }

            // check required signatures are set
            if (!required.IsValid())
            {
                return(LedgerValidationStatus.NotEnoughSignatures);
            }
            return(LedgerValidationStatus.Ok);
        }
Example #2
0
 public void Write(SignedNewLedger signed)
 {
     Write(signed.Hash);
     Write(signed.Height);
     Write(signed.Timestamp);
     Write(signed.PreviousLedgerHash);
     Write(signed.Signatures.ToList(), Write);
 }
Example #3
0
 public LedgerValidationStatus Validate(SignedNewLedger signed)
 {
     // validate signature
     return(signed.CheckSignatures(this, network));
 }