// TODO make tests public bool VerifyReceivedMessage(MessageToReceive messageToReceive) { Account.VerificationState verificationState = GetVerificationStateOfAccount(messageToReceive.legacyAddress); if (verificationState != Account.VerificationState.verified) { // Bitlogin assumes an unverified account send unverified messages just for security return(false); } return(SignatureVerifier.VerifyReceivedMessage(messageToReceive)); }
// TODO make tests public bool VerifyReceivedMessage(MessageToReceive messageToReceive) { return(SignatureVerifier.VerifyReceivedMessage(messageToReceive)); }
public BitloginProtocolMessage LogOutRequest(LogOutRequestMessage logOutRequestMessage) { if (_accountsByLegacyAddress.TryGetValue(logOutRequestMessage.legacyAddress, out Account account)) { SignatureVerifier.SignatureVerificationResult signatureVerificationResult = SignatureVerifier.Verify( logOutRequestMessage.legacyAddress, $"LogOut{logOutRequestMessage.legacyAddress}", logOutRequestMessage.signature); if (signatureVerificationResult == SignatureVerifier.SignatureVerificationResult.SignatureIsValid) { _accountsByLegacyAddress.Remove(logOutRequestMessage.legacyAddress); return(new LogOutSuccessMessage()); } if (signatureVerificationResult == SignatureVerifier.SignatureVerificationResult.SignatureDoesntMatchMessage) { return(new ErrorMessage(400)); } if (signatureVerificationResult == SignatureVerifier.SignatureVerificationResult.StringSentIsNotASignature) { return(new ErrorMessage(500)); } } return(new ErrorMessage(600)); }
public BitloginProtocolMessage GetAuthenticationResult(VerifyMeMessage verifyMeMessage) { if (_accountsByLegacyAddress.TryGetValue(verifyMeMessage.legacyAddress, out Account accountToBeVerified)) { if (accountToBeVerified.currentVerificationState == Account.VerificationState.verified) { return(new ErrorMessage(300)); } SignatureVerifier.SignatureVerificationResult signatureVerificationResult = SignatureVerifier.Verify( accountToBeVerified.LegacyAddress.ToString(), accountToBeVerified.messageToBeSigned, verifyMeMessage.signature); if (signatureVerificationResult == SignatureVerifier.SignatureVerificationResult.SignatureIsValid) { accountToBeVerified.currentVerificationState = Account.VerificationState.verified; accountToBeVerified.publicId = verifyMeMessage.publicIdIWantToHave; return(new AuthenticationSuccess()); } if (signatureVerificationResult == SignatureVerifier.SignatureVerificationResult.SignatureDoesntMatchMessage) { return(new ErrorMessage(400)); } return(new ErrorMessage(500)); } return(new ErrorMessage(200)); }