Search in sources :

Example 1 with FileBasedSigningMetadataFile

use of tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile in project signers by ConsenSys.

the class FileBasedSigningMetadataFileTest method matchingMetadataFileWithoutPrefixShouldHaveExpectedName.

@Test
void matchingMetadataFileWithoutPrefixShouldHaveExpectedName() {
    final FileBasedSigningMetadataFile fileBasedSigningMetadataFile = load(LOWERCASE_ADDRESS + CONFIG_FILE_EXTENSION, KEY_FILE, PASSWORD_FILE);
    assertThat(fileBasedSigningMetadataFile.getFilename()).matches(LOWERCASE_ADDRESS + CONFIG_FILE_EXTENSION);
    assertThat(fileBasedSigningMetadataFile.getConfig().getKeystoreFile().toFile().toString()).matches(KEY_FILE);
    assertThat(fileBasedSigningMetadataFile.getConfig().getKeystorePasswordFile().toFile().toString()).matches(PASSWORD_FILE);
}
Also used : FileBasedSigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile) Test(org.junit.jupiter.api.Test)

Example 2 with FileBasedSigningMetadataFile

use of tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile in project signers by ConsenSys.

the class MultiKeySignerProviderTest method signerIsLoadedSuccessfullyWhenAddressHasCaseMismatchToFilename.

@Test
void signerIsLoadedSuccessfullyWhenAddressHasCaseMismatchToFilename() throws URISyntaxException {
    final FileBasedSigningMetadataFile capitalisedMetadata = new FileBasedSigningMetadataFile(LOWERCASE_ADDRESS + ".toml", new FileSignerConfig(Path.of(Resources.getResource("metadata-toml-configs").toURI()).resolve(KEY_FILENAME), Path.of(Resources.getResource("metadata-toml-configs").toURI()).resolve(PASSWORD_FILENAME)));
    final Signer signer = signerFactory.createSigner(capitalisedMetadata);
    assertThat(signer).isNotNull();
    assertThat(EthPublicKeyUtils.toHexString(signer.getPublicKey())).isEqualTo("0x" + LOWER_CASE_PUBLIC_KEY);
}
Also used : Signer(tech.pegasys.signers.secp256k1.api.Signer) FileSignerConfig(tech.pegasys.signers.secp256k1.filebased.FileSignerConfig) FileBasedSigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile) Test(org.junit.jupiter.api.Test)

Example 3 with FileBasedSigningMetadataFile

use of tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile in project signers by ConsenSys.

the class MultiKeySignerProviderTest method signerIsNotReturnedIfFileContainsPublicKeyDifferentToRequest.

@Test
void signerIsNotReturnedIfFileContainsPublicKeyDifferentToRequest() throws URISyntaxException {
    final FileBasedSigningMetadataFile capitalisedMetadata = new FileBasedSigningMetadataFile(LOWERCASE_ADDRESS + ".toml", new FileSignerConfig(Path.of(Resources.getResource("metadata-toml-configs").toURI()).resolve(KEY_FILENAME), Path.of(Resources.getResource("metadata-toml-configs").toURI()).resolve(PASSWORD_FILENAME)));
    when(loader.loadMetadata(any())).thenReturn(Optional.of(capitalisedMetadata));
    final PublicKeySignerIdentifier signerIdentifier = new PublicKeySignerIdentifier(EthPublicKeyUtils.createPublicKey(Bytes.fromHexString("A".repeat(128))));
    final Optional<Signer> signer = signerFactory.getSigner(signerIdentifier);
    assertThat(signer).isEmpty();
}
Also used : Signer(tech.pegasys.signers.secp256k1.api.Signer) FileSignerConfig(tech.pegasys.signers.secp256k1.filebased.FileSignerConfig) FileBasedSigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile) PublicKeySignerIdentifier(tech.pegasys.signers.secp256k1.common.PublicKeySignerIdentifier) Test(org.junit.jupiter.api.Test)

Example 4 with FileBasedSigningMetadataFile

use of tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile in project signers by ConsenSys.

the class SigningMetadataTomlConfigLoaderTest method loadAvailableConfigsReturnsAllValidMetadataFilesInDirectory.

@Test
void loadAvailableConfigsReturnsAllValidMetadataFilesInDirectory() {
    final Filter<Path> filter = entry -> true;
    final FileBasedSigningMetadataFile metadataFile1 = copyMetadataFileToDirectory(configsDirectory, LOWERCASE_ADDRESS + CONFIG_FILE_EXTENSION, KEY_FILE, PASSWORD_FILE);
    final FileBasedSigningMetadataFile metadataFile2 = copyMetadataFileToDirectory(configsDirectory, "bar_" + PREFIX_ADDRESS + CONFIG_FILE_EXTENSION, KEY_FILE_2, PASSWORD_FILE_2);
    final FileBasedSigningMetadataFile metadataFile3 = copyMetadataFileToDirectory(configsDirectory, PREFIX_LOWERCASE_DUPLICATE_FILENAME_2, KEY_FILE_2, PASSWORD_FILE_2);
    final FileBasedSigningMetadataFile metadataFile4 = copyMetadataFileToDirectory(configsDirectory, PREFIX_LOWERCASE_DUPLICATE_FILENAME_1, KEY_FILE, PASSWORD_FILE);
    // duplicate files are loaded at this stage since addresses aren't checked until signers are
    // created
    final Collection<SigningMetadataFile> metadataFiles = loader.loadAvailableSigningMetadataTomlConfigs(filter);
    assertThat(metadataFiles).hasSize(4);
    assertThat(metadataFiles).containsOnly(metadataFile1, metadataFile2, metadataFile3, metadataFile4);
}
Also used : Path(java.nio.file.Path) Assertions.fail(org.junit.jupiter.api.Assertions.fail) MISSING_KEY_PATH_ADDRESS(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.MISSING_KEY_PATH_ADDRESS) UNKNOWN_TYPE_SIGNER_FILENAME(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.UNKNOWN_TYPE_SIGNER_FILENAME) BeforeEach(org.junit.jupiter.api.BeforeEach) SUFFIX_ADDRESS(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.SUFFIX_ADDRESS) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) KEY_FILE(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.KEY_FILE) FileBasedSigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile) PASSWORD_FILE(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.PASSWORD_FILE) PREFIX_ADDRESS(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.PREFIX_ADDRESS) LOWERCASE_ADDRESS(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.LOWERCASE_ADDRESS) MISSING_KEY_AND_PASSWORD_PATH_FILENAME(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.MISSING_KEY_AND_PASSWORD_PATH_FILENAME) Filter(java.nio.file.DirectoryStream.Filter) AzureSigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.AzureSigningMetadataFile) CONFIG_FILE_EXTENSION(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.CONFIG_FILE_EXTENSION) Path(java.nio.file.Path) MetadataFileFixture.copyMetadataFileToDirectory(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.copyMetadataFileToDirectory) Files(java.nio.file.Files) Resources(com.google.common.io.Resources) MISSING_KEY_PATH_FILENAME(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.MISSING_KEY_PATH_FILENAME) Collection(java.util.Collection) PREFIX_LOWERCASE_DUPLICATE_FILENAME_1(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.PREFIX_LOWERCASE_DUPLICATE_FILENAME_1) PREFIX_LOWERCASE_DUPLICATE_FILENAME_2(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.PREFIX_LOWERCASE_DUPLICATE_FILENAME_2) MISSING_KEY_AND_PASSWORD_PATH_ADDRESS(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.MISSING_KEY_AND_PASSWORD_PATH_ADDRESS) PASSWORD_FILE_2(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.PASSWORD_FILE_2) Test(org.junit.jupiter.api.Test) PREFIX_LOWERCASE_DUPLICATE_ADDRESS(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.PREFIX_LOWERCASE_DUPLICATE_ADDRESS) SigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.SigningMetadataFile) TempDir(org.junit.jupiter.api.io.TempDir) MISSING_PASSWORD_PATH_FILENAME(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.MISSING_PASSWORD_PATH_FILENAME) Optional(java.util.Optional) KEY_FILE_2(tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.KEY_FILE_2) FileBasedSigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile) AzureSigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.AzureSigningMetadataFile) SigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.SigningMetadataFile) FileBasedSigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile) Test(org.junit.jupiter.api.Test)

Example 5 with FileBasedSigningMetadataFile

use of tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile in project signers by ConsenSys.

the class SigningMetadataTomlConfigLoaderTest method relativeKeyAndPasswordFilesAreResolveRelativeToLibraryRoot.

@Test
void relativeKeyAndPasswordFilesAreResolveRelativeToLibraryRoot() {
    copyFileIntoConfigDirectory("key_password_relative_path.toml");
    final Collection<SigningMetadataFile> metadataFiles = loader.loadAvailableSigningMetadataTomlConfigs(entry -> true);
    assertThat(metadataFiles.size()).isOne();
    assertThat(metadataFiles.toArray()[0]).isInstanceOf(FileBasedSigningMetadataFile.class);
    final FileBasedSigningMetadataFile metadataFile = (FileBasedSigningMetadataFile) metadataFiles.toArray()[0];
    assertThat(metadataFile.getConfig().getKeystoreFile()).isEqualTo(configsDirectory.resolve("./path/to/k.key"));
    assertThat(metadataFile.getConfig().getKeystorePasswordFile()).isEqualTo(configsDirectory.resolve("./path/to/p.password"));
}
Also used : FileBasedSigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile) AzureSigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.AzureSigningMetadataFile) SigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.SigningMetadataFile) FileBasedSigningMetadataFile(tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile) Test(org.junit.jupiter.api.Test)

Aggregations

FileBasedSigningMetadataFile (tech.pegasys.signers.secp256k1.multikey.metadata.FileBasedSigningMetadataFile)10 Test (org.junit.jupiter.api.Test)7 Path (java.nio.file.Path)5 FileSignerConfig (tech.pegasys.signers.secp256k1.filebased.FileSignerConfig)4 AzureSigningMetadataFile (tech.pegasys.signers.secp256k1.multikey.metadata.AzureSigningMetadataFile)3 SigningMetadataFile (tech.pegasys.signers.secp256k1.multikey.metadata.SigningMetadataFile)3 Resources (com.google.common.io.Resources)2 URISyntaxException (java.net.URISyntaxException)2 Filter (java.nio.file.DirectoryStream.Filter)2 Files (java.nio.file.Files)2 Collection (java.util.Collection)2 Optional (java.util.Optional)2 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)2 Assertions.fail (org.junit.jupiter.api.Assertions.fail)2 BeforeEach (org.junit.jupiter.api.BeforeEach)2 TempDir (org.junit.jupiter.api.io.TempDir)2 Signer (tech.pegasys.signers.secp256k1.api.Signer)2 CONFIG_FILE_EXTENSION (tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.CONFIG_FILE_EXTENSION)2 KEY_FILE (tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.KEY_FILE)2 KEY_FILE_2 (tech.pegasys.signers.secp256k1.multikey.MetadataFileFixture.KEY_FILE_2)2