public void TestValidateGa() { JPakeUtilities.ValidateGa(Ten); try { JPakeUtilities.ValidateGa(BigInteger.One); Fail("exception not thrown for g^a equal to 1"); } catch (CryptoException) { // expected } }
public virtual void ValidateRound2PayloadReceived(JPakeRound2Payload round2PayloadReceived) { if (state >= STATE_ROUND_2_VALIDATED) { throw new InvalidOperationException("Validation already attempted for round 2 payload for " + participantId); } if (state < STATE_ROUND_1_VALIDATED) { throw new InvalidOperationException("Round 1 payload must be validated prior to validation round 2 payload for " + participantId); } BigInteger ga = JPakeUtilities.CalculateGA(p, gx3, gx1, gx2); b = round2PayloadReceived.A; BigInteger[] knowledgeProofForX2s = round2PayloadReceived.KnowledgeProofForX2s; JPakeUtilities.ValidateParticipantIdsDiffer(participantId, round2PayloadReceived.ParticipantId); JPakeUtilities.ValidateParticipantIdsEqual(partnerParticipantId, round2PayloadReceived.ParticipantId); JPakeUtilities.ValidateGa(ga); JPakeUtilities.ValidateZeroKnowledgeProof(p, q, ga, b, knowledgeProofForX2s, round2PayloadReceived.ParticipantId, digest); state = STATE_ROUND_2_VALIDATED; }