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); }
public void Write(SignedNewLedger signed) { Write(signed.Hash); Write(signed.Height); Write(signed.Timestamp); Write(signed.PreviousLedgerHash); Write(signed.Signatures.ToList(), Write); }
public LedgerValidationStatus Validate(SignedNewLedger signed) { // validate signature return(signed.CheckSignatures(this, network)); }