private void HandleSignatureResponseUpdate() { this.run = true; Status.VotingClient.GetSignatureResponse(Status.Certificate.Id, GetSignatureResponseComplete); while (this.run) { Status.UpdateProgress(); Thread.Sleep(1); } if (this.exception == null) { switch (this.responseStatus) { case SignatureResponseStatus.Accepted: if (this.response.Verify(Status.CertificateStorage) && this.response.Value.Status == this.responseStatus) { Status.Certificate.AddSignature(response.Value.Signature); Status.Certificate.Save(Status.CertificateFileName); Status.SetMessage(Resources.CheckCertificateResponseAccept, MessageType.Success); this.continueTo = ContinueTo.NextScreen; } else { Status.SetMessage(Resources.CheckCertificateResponseInvalid, MessageType.Error); this.continueTo = ContinueTo.NoWhere; } break; case SignatureResponseStatus.Declined: if (this.response.Verify(Status.CertificateStorage) && this.response.Value.Status == this.responseStatus) { Status.SetMessage(Resources.CheckCertificateResponseDeclined + this.response.Value.Reason, MessageType.Info); RemoveCertificate(); this.continueTo = ContinueTo.NoWhere; } else { Status.SetMessage(Resources.CheckCertificateResponseInvalid, MessageType.Error); this.continueTo = ContinueTo.NoWhere; } break; case SignatureResponseStatus.Pending: Status.SetMessage(Resources.CheckCertificatePending, MessageType.Info); this.continueTo = ContinueTo.NoWhere; break; default: Status.SetMessage(Resources.CheckCertificateNeedRequest, MessageType.Info); this.continueTo = ContinueTo.CreateCertificate; break; } } else { Status.SetMessage(this.exception.Message, MessageType.Error); this.continueTo = ContinueTo.NoWhere; } OnUpdateWizard(); }
public CheckCertificateItem() { InitializeComponent(); this.continueTo = ContinueTo.Undetermined; }
private void CheckValidityOfVoter() { CertificateValidationResult result = Status.Certificate.Validate(Status.CertificateStorage); switch (result) { case CertificateValidationResult.Valid: Status.SetMessage(Resources.CheckCertificateReady, MessageType.Info); this.continueTo = ContinueTo.NextScreen; break; case CertificateValidationResult.Outdated: Status.SetMessage(Resources.CheckCertificateOutdated + " " + Resources.CheckCertificateRemove, MessageType.Error); RemoveCertificate(); this.continueTo = ContinueTo.CreateCertificate; break; case CertificateValidationResult.NotYetValid: Status.SetMessage(string.Format(Resources.CheckCertificateNotYetValid, Status.Certificate.ExpectedValidFrom(Status.CertificateStorage)), MessageType.Error); this.continueTo = ContinueTo.NoWhere; break; case CertificateValidationResult.Revoked: Status.SetMessage(Resources.CheckCertificateRevoked, MessageType.Error); RemoveCertificate(); this.continueTo = ContinueTo.CreateCertificate; break; case CertificateValidationResult.CrlMissing: Status.SetMessage(Resources.CheckCertificateCrlMissing, MessageType.Error); this.continueTo = ContinueTo.NoWhere; break; case CertificateValidationResult.SignerInvalid: Status.SetMessage(Resources.CheckCertificateSignerInvalid, MessageType.Error); this.continueTo = ContinueTo.NoWhere; break; case CertificateValidationResult.UnknownSigner: Status.SetMessage(Resources.CheckCertificateUnknownSigner, MessageType.Error); this.continueTo = ContinueTo.NoWhere; break; case CertificateValidationResult.SelfsignatureInvalid: Status.SetMessage(Resources.CheckCertificateSelfsignatureInvalid + " " + Resources.CheckCertificateRemove, MessageType.Error); RemoveCertificate(); this.continueTo = ContinueTo.NoWhere; break; case CertificateValidationResult.SignatureDataInvalid: Status.SetMessage(Resources.CheckCertificateSignatureDataInvalid + " " + Resources.CheckCertificateRemove, MessageType.Error); RemoveCertificate(); this.continueTo = ContinueTo.NoWhere; break; case CertificateValidationResult.NoSignature: HandleSignatureResponseUpdate(); break; default: throw new InvalidOperationException("Unknown certificate validation result"); } }