Skip to content

Commit 0d94105

Browse files
committed
test with different nonce
1 parent cbc23ce commit 0d94105

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

messages/src/main/java/com/jwoglom/pumpx2/pump/messages/builders/JpakeAuthBuilder.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public class JpakeAuthBuilder {
3838
byte[] serverNonce4;
3939
byte[] serverHashDigest4;
4040
private EcJpake cli;
41+
private SecureRandom rand;
4142

4243
JpakeStep step;
4344

@@ -52,6 +53,7 @@ public JpakeAuthBuilder(String pairingCode, JpakeStep step, byte[] clientRound1,
5253
this.serverRound1 = serverRound1;
5354
this.clientRound2 = clientRound2;
5455
this.serverRound2 = serverRound2;
56+
this.rand = rand;
5557
}
5658

5759
public JpakeAuthBuilder(String pairingCode) {
@@ -106,12 +108,12 @@ public Message nextRequest() {
106108
step = JpakeStep.CONFIRM_3_SENT;
107109
} else if (step == JpakeStep.CONFIRM_3_RECEIVED) {
108110
// TODO: determine hashdigest + nonce
109-
byte[] nonce = this.serverNonce3;
110-
byte[] hashDigest = this.derivedSecret;
111+
byte[] nonce = this.generateNonce();
112+
L.i(TAG, "Req4 generatedNonce=" + Hex.encodeHexString(nonce));
111113
request = new Jpake4KeyConfirmationRequest(0,
112114
nonce,
113115
Jpake4KeyConfirmationRequest.RESERVED,
114-
hashDigest
116+
this.derivedSecret
115117
);
116118

117119
step = JpakeStep.CONFIRM_4_SENT;
@@ -168,6 +170,12 @@ public void processResponse(Message response) {
168170
}
169171
}
170172

173+
byte[] generateNonce() {
174+
byte[] nonce = new byte[8];
175+
this.rand.nextBytes(nonce);
176+
return nonce;
177+
}
178+
171179
public enum JpakeStep {
172180
INITIAL,
173181
ROUND_1A_SENT,

messages/src/test/java/com/jwoglom/pumpx2/pump/messages/builders/JpakeAuthBuilderIntegrationTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ public void clientRole_simulated() throws DecoderException {
4040
"e14648731067823471832c9f3dc9e48275f1041b0332f5447cad007341a5e3c3" +
4141
// deriveSecret()
4242
"fc55f787a26b3f5619c891a3cd34907b" +
43-
// random 8 bytes for jpake3 nonce
44-
"e734344901549417"));
43+
// generateNonce() server
44+
"e734344901549417" +
45+
// generateNonce() client
46+
"998c182c9d70a375"));
4547
// EcJpake cli = new EcJpake(EcJpake.Role.CLIENT, "passw0rd".getBytes(), rand);
4648
// byte[] cliRound1 = cli.getRound1();
4749
// assertArrayEquals(cliRound1, Hex.decodeHex("4104e92f1a97685b86ea2e8a583724095e355955d1356942c2fa7a0da21f148690052607421562f9771fbcf70fdc33056b2f2596145d8c5cd7be986259e2918d9f554104854faebe27e2f81652f0e71b38410d704fc521965bd40005fa47de22d7de67c2ba301fe248f63b954891e5ba9237c4dace174b022dcc6d55cc977115e0e5e24a2062080ced0ce4c03ca7fb9c80e1374939956623bc951905ac6ed5c6a96ea647c34104580e59d4e2377620a0e2003a22cf5b603165676e48de7095c21f8c76afdef847bc976aa1f58ee050c757f9ccc2af19142a15714a27268886fc50ddf0f8b4573e41046b1d85ca2a6bf3e956269bac6529856ab73089e1522eba11b2b16f2e50908cd6ee7bb6b1f7ecefc424bebe177039e9e2c98da07c7f521388789d5bb37dc2830e209967d2ec8e533bb526645218a376bb3d318103e0aef96c300f30986ab3d0e027"));
@@ -105,16 +107,15 @@ public void clientRole_simulated() throws DecoderException {
105107
byte[] secret = Hex.decodeHex("e734344901549417f6243f8e4a712f87ae9409476f8d022c347ff690249683aa");
106108
assertHexEquals(secret, b.derivedSecret);
107109

108-
byte[] nonce = new byte[8];
109-
rand.nextBytes(nonce);
110+
byte[] nonce = b.generateNonce();
110111
assertHexEquals(nonce, Hex.decodeHex("e734344901549417"));
111112
Jpake3SessionKeyResponse res3 = new Jpake3SessionKeyResponse(0, nonce, Jpake3SessionKeyResponse.RESERVED);
112113

113114
b.processResponse(res3);
114115
assertHexEquals(nonce, b.serverNonce3);
115116

116117
Jpake4KeyConfirmationRequest req4 = (Jpake4KeyConfirmationRequest) b.nextRequest();
117-
assertHexEquals(req4.getNonce(), b.serverNonce3);
118+
assertHexEquals(req4.getNonce(), Hex.decodeHex("998c182c9d70a375"));
118119
assertHexEquals(req4.getHashDigest(), b.derivedSecret);
119120

120121
Jpake4KeyConfirmationResponse res4 = new Jpake4KeyConfirmationResponse(0, req4.getNonce(), Jpake4KeyConfirmationResponse.RESERVED, req4.getHashDigest());

0 commit comments

Comments
 (0)