diff options
Diffstat (limited to 'core/src/main/java/org/spongycastle/crypto/agreement/jpake/JPAKERound2Payload.java')
-rw-r--r-- | core/src/main/java/org/spongycastle/crypto/agreement/jpake/JPAKERound2Payload.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/core/src/main/java/org/spongycastle/crypto/agreement/jpake/JPAKERound2Payload.java b/core/src/main/java/org/spongycastle/crypto/agreement/jpake/JPAKERound2Payload.java new file mode 100644 index 00000000..3df5c7b9 --- /dev/null +++ b/core/src/main/java/org/spongycastle/crypto/agreement/jpake/JPAKERound2Payload.java @@ -0,0 +1,68 @@ +package org.spongycastle.crypto.agreement.jpake; + +import java.math.BigInteger; + +import org.spongycastle.util.Arrays; + +/** + * The payload sent/received during the second round of a J-PAKE exchange. + * <p> + * Each {@link JPAKEParticipant} creates and sends an instance + * of this payload to the other {@link JPAKEParticipant}. + * The payload to send should be created via + * {@link JPAKEParticipant#createRound2PayloadToSend()} + * <p> + * Each {@link JPAKEParticipant} must also validate the payload + * received from the other {@link JPAKEParticipant}. + * The received payload should be validated via + * {@link JPAKEParticipant#validateRound2PayloadReceived(JPAKERound2Payload)} + */ +public class JPAKERound2Payload +{ + /** + * The id of the {@link JPAKEParticipant} who created/sent this payload. + */ + private final String participantId; + + /** + * The value of A, as computed during round 2. + */ + private final BigInteger a; + + /** + * The zero knowledge proof for x2 * s. + * <p/> + * This is a two element array, containing {g^v, r} for x2 * s. + */ + private final BigInteger[] knowledgeProofForX2s; + + public JPAKERound2Payload( + String participantId, + BigInteger a, + BigInteger[] knowledgeProofForX2s) + { + JPAKEUtil.validateNotNull(participantId, "participantId"); + JPAKEUtil.validateNotNull(a, "a"); + JPAKEUtil.validateNotNull(knowledgeProofForX2s, "knowledgeProofForX2s"); + + this.participantId = participantId; + this.a = a; + this.knowledgeProofForX2s = Arrays.copyOf(knowledgeProofForX2s, knowledgeProofForX2s.length); + } + + public String getParticipantId() + { + return participantId; + } + + public BigInteger getA() + { + return a; + } + + public BigInteger[] getKnowledgeProofForX2s() + { + return Arrays.copyOf(knowledgeProofForX2s, knowledgeProofForX2s.length); + } + +} |