Skip to content

Commit

Permalink
feat: Regenerate keys and update node names for tests (#15793)
Browse files Browse the repository at this point in the history
Signed-off-by: Anthony Petrov <[email protected]>
  • Loading branch information
anthony-swirldslabs authored Oct 4, 2024
1 parent bb30020 commit 3db0fc9
Show file tree
Hide file tree
Showing 152 changed files with 3,230 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,20 @@

package com.swirlds.platform.crypto;

import com.swirlds.common.crypto.config.CryptoConfig;
import com.swirlds.common.platform.NodeId;
import com.swirlds.common.test.fixtures.Randotron;
import com.swirlds.common.test.fixtures.io.ResourceLoader;
import com.swirlds.config.api.Configuration;
import com.swirlds.config.api.ConfigurationBuilder;
import com.swirlds.platform.config.PathsConfig;
import com.swirlds.platform.roster.RosterUtils;
import com.swirlds.platform.system.address.AddressBook;
import com.swirlds.platform.test.fixtures.addressbook.RandomAddressBookBuilder;
import com.swirlds.platform.test.fixtures.addressbook.RandomAddressBookBuilder.WeightDistributionStrategy;
import edu.umd.cs.findbugs.annotations.NonNull;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
Expand All @@ -41,8 +47,7 @@ public class CryptoArgsProvider {
private static final char[] PASSWORD = "password".toCharArray();

/**
* @return 3 sets of arguments, 1 generated, 1 loaded from files, and 1 that generates agreement keys if they are
* not loaded from files.
* @return 2 sets of arguments, 1 generated, 1 loaded from files.
*/
static Stream<Arguments> basicTestArgs() throws Exception {
Instant start = Instant.now();
Expand All @@ -51,11 +56,9 @@ static Stream<Arguments> basicTestArgs() throws Exception {
final AddressBook genAB = createAddressBook(NUMBER_OF_ADDRESSES);
final Map<NodeId, KeysAndCerts> genC = CryptoStatic.generateKeysAndCerts(genAB);
start = Instant.now();
final AddressBookAndCerts addressBookAndCerts2 = createAddressBookLoadSigKeysCreateAgrKeys(NUMBER_OF_ADDRESSES);
return Stream.of(
Arguments.of(addressBookAndCerts.addressBook(), addressBookAndCerts.nodeIdKeysAndCertsMap()),
Arguments.of(genAB, genC),
Arguments.of(addressBookAndCerts2.addressBook(), addressBookAndCerts2.nodeIdKeysAndCertsMap()));
Arguments.of(genAB, genC));
}

public static AddressBook createAddressBook(final int size) {
Expand All @@ -66,55 +69,43 @@ public static AddressBook createAddressBook(final int size) {

for (int i = 0; i < addresses.getSize(); i++) {
final NodeId nodeId = addresses.getNodeId(i);
addresses.add(
addresses.getAddress(nodeId).copySetSelfName(memberName(i)).copySetHostnameInternal("127.0.0.1"));
addresses.add(addresses
.getAddress(nodeId)
.copySetSelfName(RosterUtils.formatNodeName(nodeId.id()))
.copySetHostnameInternal("127.0.0.1"));
}

return addresses;
}

/**
* returns a record with the addressBook and keys loaded from file.
*
* @param size the size of the required address book
*/
@NonNull
public static AddressBookAndCerts loadAddressBookWithKeys(final int size)
throws URISyntaxException, UnrecoverableKeyException, KeyLoadingException, KeyStoreException,
NoSuchAlgorithmException, KeyGeneratingException, NoSuchProviderException {
final AddressBook createdAB = createAddressBook(size);
final Map<NodeId, KeysAndCerts> loadedC =
CryptoStatic.loadKeysAndCerts(createdAB, ResourceLoader.getFile("preGeneratedKeysAndCerts/"), PASSWORD);
return new AddressBookAndCerts(createdAB, loadedC);
private static Configuration configure(final Path keyDirectory) {
final ConfigurationBuilder builder = ConfigurationBuilder.create();

builder.withConfigDataTypes(PathsConfig.class, CryptoConfig.class);

builder.withValue("paths.keysDirPath", keyDirectory.toAbsolutePath().toString());
builder.withValue("crypto.password", new String(PASSWORD));

return builder.build();
}

/**
* returns a record with the addressBook and signing keys loaded from file with generated agreement keys.
* returns a record with the addressBook and keys loaded from file.
*
* @param size the size of the required address book
*/
@NonNull
public static AddressBookAndCerts createAddressBookLoadSigKeysCreateAgrKeys(final int size)
public static AddressBookAndCerts loadAddressBookWithKeys(final int size)
throws URISyntaxException, UnrecoverableKeyException, KeyLoadingException, KeyStoreException,
NoSuchAlgorithmException, KeyGeneratingException, NoSuchProviderException {
final AddressBook createdAB = createAddressBook(size);
final Map<NodeId, KeysAndCerts> loadedC = CryptoStatic.loadKeysAndCerts(
createdAB, ResourceLoader.getFile("preGenKeysAndCertsNoAgrKey/"), PASSWORD);
final Map<NodeId, KeysAndCerts> loadedC = EnhancedKeyStoreLoader.using(
createdAB, configure(ResourceLoader.getFile("preGeneratedPEMKeysAndCerts/")))
.scan()
.generateIfNecessary()
.verify()
.injectInAddressBook()
.keysAndCerts();
return new AddressBookAndCerts(createdAB, loadedC);
}

private static String memberName(int num) {
final int base = 26;
final int padding = 4;
final StringBuilder res = new StringBuilder();
int rem;
while (num > 0) {
rem = num % base;
final char c = (char) ('a' + rem);
res.append(c);
num /= base;
}
res.append("a".repeat(Math.max(0, padding - res.length())));
return res.reverse().toString();
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
-----BEGIN PRIVATE KEY-----
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
lvtB3oXOy14tXzLEMjd3W7o6
-----END PRIVATE KEY-----
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
-----BEGIN PRIVATE KEY-----
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
tU+AQcRbHYpfTt9DQqucrg==
-----END PRIVATE KEY-----
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
-----BEGIN PRIVATE KEY-----
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
Hqd+JH7SlR4vMIcniD9fNA==
-----END PRIVATE KEY-----
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
-----BEGIN PRIVATE KEY-----
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
CvdlCURMaYuN1Qty1TopyIw=
-----END PRIVATE KEY-----
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
-----BEGIN PRIVATE KEY-----
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
TTLCTHOV81d44CkPIIK3Skbb
-----END PRIVATE KEY-----
Loading

0 comments on commit 3db0fc9

Please sign in to comment.