use of tech.pegasys.web3signer.core.multikey.metadata.SigningMetadata in project web3signer by ConsenSys.
the class KeystoreFileManager method findKeystoreConfigFiles.
private Optional<List<Path>> findKeystoreConfigFiles(final String pubkey) throws IOException {
// find keystore files and map them to their pubkeys
try (final Stream<Path> fileStream = Files.list(keystorePath)) {
Map<String, List<Path>> map = fileStream.filter(path -> FilenameUtils.getExtension(path.toString()).toLowerCase().endsWith("yaml")).map(path -> {
try {
final String fileContent = Files.readString(path, StandardCharsets.UTF_8);
final SigningMetadata metaDataInfo = YamlSignerParser.YAML_MAPPER.readValue(fileContent, SigningMetadata.class);
if (metaDataInfo.getKeyType() == KeyType.BLS && metaDataInfo instanceof FileKeyStoreMetadata) {
final FileKeyStoreMetadata info = ((FileKeyStoreMetadata) metaDataInfo);
final Path keystoreFile = info.getKeystoreFile();
final Path passwordFile = info.getKeystorePasswordFile();
final KeyStoreData keyStoreData = KeyStoreLoader.loadFromFile(keystoreFile);
final String decodedPubKey = IdentifierUtils.normaliseIdentifier(keyStoreData.getPubkey().appendHexTo(new StringBuilder()).toString());
return new AbstractMap.SimpleEntry<>(decodedPubKey, List.of(path, keystoreFile, passwordFile));
} else {
return null;
}
} catch (final Exception e) {
LOG.error("Error reading config file: {}", path, e);
return null;
}
}).filter(Objects::nonNull).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
// return the matching file
return Optional.ofNullable(map.get(pubkey));
}
}
Aggregations