Skip to content

Commit a391640

Browse files
committed
Fix #36.
This reverts commit 5848834.
1 parent 385fe89 commit a391640

File tree

5 files changed

+39
-12
lines changed

5 files changed

+39
-12
lines changed

hub/src/main/java/ch/iterate/hub/core/FirstLoginDeviceSetupCallback.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package ch.iterate.hub.core;
66

77
import ch.cyberduck.core.Host;
8+
import ch.cyberduck.core.UUIDRandomStringService;
89
import ch.cyberduck.core.exception.ConnectionCanceledException;
910
import ch.cyberduck.core.exception.LoginCanceledException;
1011

@@ -29,6 +30,15 @@ public interface FirstLoginDeviceSetupCallback {
2930
*/
3031
AccountKeyAndDeviceName askForAccountKeyAndDeviceName(Host bookmark, String initialDeviceName) throws ConnectionCanceledException;
3132

33+
/**
34+
* Generate initial account key
35+
*
36+
* @return Random UUID
37+
*/
38+
default String generateAccountKey() {
39+
return new UUIDRandomStringService().random();
40+
}
41+
3242
FirstLoginDeviceSetupCallback disabled = new FirstLoginDeviceSetupCallback() {
3343
@Override
3444
public String displayAccountKeyAndAskDeviceName(final Host bookmark, final AccountKeyAndDeviceName accountKeyAndDeviceName) throws ConnectionCanceledException {

hub/src/main/java/ch/iterate/hub/workflows/UserKeysServiceImpl.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
package ch.iterate.hub.workflows;
66

77
import ch.cyberduck.core.Host;
8-
import ch.cyberduck.core.UUIDRandomStringService;
98
import ch.cyberduck.core.exception.ConnectionCanceledException;
109
import ch.cyberduck.core.exception.LocalAccessDeniedException;
1110

@@ -118,7 +117,7 @@ else if(userKeysInHub) {
118117
log.info("(3) Setting up new user keys and setupCode.");
119118

120119
log.info("(3.1) generate and display new Account Key");
121-
final String setupCode = new UUIDRandomStringService().random();
120+
final String setupCode = prompt.generateAccountKey();
122121
log.info("With setupCode={}", setupCode);
123122

124123
final String deviceName = prompt.displayAccountKeyAndAskDeviceName(host,

hub/src/test/java/ch/iterate/hub/core/UserKeysRecoveryTest.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
package ch.iterate.hub.core;
22

3-
import ch.iterate.hub.client.api.UsersResourceApi;
4-
import ch.iterate.hub.client.model.UserDto;
5-
import ch.iterate.hub.crypto.UserKeys;
6-
import ch.iterate.hub.protocols.hub.HubSession;
7-
import ch.iterate.hub.testsetup.AbstractHubTest;
8-
import ch.iterate.hub.testsetup.docker_setup.UnattendedLocalOnly;
9-
import ch.iterate.hub.testsetup.model.HubTestConfig;
10-
import com.nimbusds.jose.JOSEException;
3+
import ch.cyberduck.core.AlphanumericRandomStringService;
4+
115
import org.junit.jupiter.api.TestInstance;
126
import org.junit.jupiter.api.extension.ExtendWith;
137
import org.junit.jupiter.params.ParameterizedTest;
@@ -17,8 +11,18 @@
1711
import java.security.InvalidKeyException;
1812
import java.util.stream.Stream;
1913

14+
import ch.iterate.hub.client.api.UsersResourceApi;
15+
import ch.iterate.hub.client.model.UserDto;
16+
import ch.iterate.hub.crypto.UserKeys;
17+
import ch.iterate.hub.protocols.hub.HubSession;
18+
import ch.iterate.hub.testsetup.AbstractHubTest;
19+
import ch.iterate.hub.testsetup.docker_setup.UnattendedLocalOnly;
20+
import ch.iterate.hub.testsetup.model.HubTestConfig;
21+
import com.nimbusds.jose.JOSEException;
22+
2023
import static ch.iterate.hub.testsetup.HubTestSetupConfigs.minioSTSUnattendedLocalOnly;
2124
import static ch.iterate.hub.testsetup.HubTestUtilities.setupForUser;
25+
import static org.junit.Assert.assertNotNull;
2226
import static org.junit.jupiter.api.Assertions.assertThrows;
2327
import static org.junit.jupiter.api.Assertions.assertTrue;
2428

@@ -37,7 +41,11 @@ public void firstLoginAndUserKeyRecovery(final HubTestConfig hubTestConfig) thro
3741
final UsersResourceApi usersApi = new UsersResourceApi(hubSession.getClient());
3842
final UserDto me = usersApi.apiUsersMeGet(true);
3943

40-
final JOSEException exc = assertThrows(JOSEException.class, () -> UserKeys.recover(me.getEcdhPublicKey(), me.getEcdsaPublicKey(), me.getPrivateKey(), hubTestConfig.hubTestSetupConfig.USER_001().setupCode));
41-
assertTrue(exc.getCause() instanceof InvalidKeyException);
44+
final JOSEException exception = assertThrows(JOSEException.class, () -> UserKeys.recover(me.getEcdhPublicKey(), me.getEcdsaPublicKey(), me.getPrivateKey(),
45+
new AlphanumericRandomStringService().random()));
46+
assertTrue(exception.getCause() instanceof InvalidKeyException);
47+
48+
assertNotNull(UserKeys.recover(me.getEcdhPublicKey(), me.getEcdsaPublicKey(), me.getPrivateKey(),
49+
hubTestConfig.hubTestSetupConfig.USER_001().setupCode));
4250
}
4351
}

hub/src/test/java/ch/iterate/hub/core/util/MockableFirstLoginDeviceSetupCallback.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,9 @@ public String displayAccountKeyAndAskDeviceName(final Host bookmark, final Accou
2626
public AccountKeyAndDeviceName askForAccountKeyAndDeviceName(final Host bookmark, final String initialDeviceName) throws ConnectionCanceledException {
2727
return proxy.askForAccountKeyAndDeviceName(bookmark, initialDeviceName);
2828
}
29+
30+
@Override
31+
public String generateAccountKey() {
32+
return proxy.generateAccountKey();
33+
}
2934
}

hub/src/test/java/ch/iterate/hub/testsetup/HubTestUtilities.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,11 @@ public AccountKeyAndDeviceName askForAccountKeyAndDeviceName(final Host bookmark
130130
return new AccountKeyAndDeviceName().withAccountKey(setupCode).withDeviceName(String.format("firstLoginMockSetup %s", DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL)
131131
.format(ZonedDateTime.now(ZoneId.of("Europe/Zurich")))));
132132
}
133+
134+
@Override
135+
public String generateAccountKey() {
136+
return setupCode;
137+
}
133138
};
134139
MockableFirstLoginDeviceSetupCallback.setProxy(proxy);
135140

0 commit comments

Comments
 (0)