use of tech.pegasys.signers.secp256k1.azure.AzureKeyVaultSignerFactory in project signers by ConsenSys.
the class AzureKeyVaultSignerTest method azureWithoutHashingDoesntHashData.
@Test
void azureWithoutHashingDoesntHashData() throws SignatureException {
final AzureConfig config = new AzureConfig(keyVaultName, KEY_NAME, "", clientId, clientSecret, tenantId);
final Signer azureNonHashedDataSigner = new AzureKeyVaultSignerFactory(false).createSigner(config);
final BigInteger publicKey = Numeric.toBigInt(EthPublicKeyUtils.toByteArray(azureNonHashedDataSigner.getPublicKey()));
final byte[] dataToSign = "Hello World".getBytes(UTF_8);
// manual hash before sending to remote signing
final byte[] hashedData = Hash.sha3(dataToSign);
final Signature signature = azureNonHashedDataSigner.sign(hashedData);
// Determine if Web3j thinks the signature comes from the public key used (really proves
// that the hashedData isn't hashed a second time).
final SignatureData sigData = new SignatureData(signature.getV().toByteArray(), Numeric.toBytesPadded(signature.getR(), 32), Numeric.toBytesPadded(signature.getS(), 32));
final BigInteger recoveredPublicKey = Sign.signedMessageHashToKey(hashedData, sigData);
assertThat(recoveredPublicKey).isEqualTo(publicKey);
}
use of tech.pegasys.signers.secp256k1.azure.AzureKeyVaultSignerFactory in project signers by ConsenSys.
the class AzureKeyVaultSignerTest method azureSignerCanSignTwice.
@Test
public void azureSignerCanSignTwice() {
final AzureConfig config = new AzureConfig(keyVaultName, KEY_NAME, "", clientId, clientSecret, tenantId);
final AzureKeyVaultSignerFactory factory = new AzureKeyVaultSignerFactory();
final Signer signer = factory.createSigner(config);
final byte[] dataToHash = "Hello World".getBytes(UTF_8);
signer.sign(dataToHash);
signer.sign(dataToHash);
}
use of tech.pegasys.signers.secp256k1.azure.AzureKeyVaultSignerFactory in project signers by ConsenSys.
the class MultiKeySignerProvider method createSigner.
@Override
public Signer createSigner(final AzureSigningMetadataFile metadataFile) {
try {
final AzureConfig config = metadataFile.getConfig();
final AzureKeyVaultSignerFactory azureFactory = new AzureKeyVaultSignerFactory();
return azureFactory.createSigner(config);
} catch (final SignerInitializationException e) {
LOG.error("Failed to construct Azure signer from " + metadataFile.getFilename());
return null;
}
}
use of tech.pegasys.signers.secp256k1.azure.AzureKeyVaultSignerFactory in project web3signer by ConsenSys.
the class FilecoinRunner method createArtifactSignerProvider.
@Override
protected ArtifactSignerProvider createArtifactSignerProvider(final Vertx vertx, final MetricsSystem metricsSystem) {
return new DefaultArtifactSignerProvider(() -> {
final AzureKeyVaultSignerFactory azureFactory = new AzureKeyVaultSignerFactory();
final HashicorpConnectionFactory hashicorpConnectionFactory = new HashicorpConnectionFactory(vertx);
try (final InterlockKeyProvider interlockKeyProvider = new InterlockKeyProvider(vertx);
final YubiHsmOpaqueDataProvider yubiHsmOpaqueDataProvider = new YubiHsmOpaqueDataProvider();
final AwsSecretsManagerProvider awsSecretsManagerProvider = new AwsSecretsManagerProvider(AWS_CACHE_MAXIMUM_SIZE)) {
final AbstractArtifactSignerFactory blsArtifactSignerFactory = new BlsArtifactSignerFactory(config.getKeyConfigPath(), metricsSystem, hashicorpConnectionFactory, interlockKeyProvider, yubiHsmOpaqueDataProvider, awsSecretsManagerProvider, (args) -> new FcBlsArtifactSigner(args.getKeyPair(), network));
final AbstractArtifactSignerFactory secpArtifactSignerFactory = new Secp256k1ArtifactSignerFactory(hashicorpConnectionFactory, config.getKeyConfigPath(), azureFactory, interlockKeyProvider, yubiHsmOpaqueDataProvider, signer -> new FcSecpArtifactSigner(signer, network), false);
return new SignerLoader().load(config.getKeyConfigPath(), "yaml", new YamlSignerParser(List.of(blsArtifactSignerFactory, secpArtifactSignerFactory)));
}
});
}
use of tech.pegasys.signers.secp256k1.azure.AzureKeyVaultSignerFactory in project web3signer by ConsenSys.
the class Eth1Runner method createArtifactSignerProvider.
@Override
protected ArtifactSignerProvider createArtifactSignerProvider(final Vertx vertx, final MetricsSystem metricsSystem) {
return new DefaultArtifactSignerProvider(() -> {
final AzureKeyVaultSignerFactory azureFactory = new AzureKeyVaultSignerFactory();
final HashicorpConnectionFactory hashicorpConnectionFactory = new HashicorpConnectionFactory(vertx);
try (final InterlockKeyProvider interlockKeyProvider = new InterlockKeyProvider(vertx);
final YubiHsmOpaqueDataProvider yubiHsmOpaqueDataProvider = new YubiHsmOpaqueDataProvider()) {
final Secp256k1ArtifactSignerFactory ethSecpArtifactSignerFactory = new Secp256k1ArtifactSignerFactory(hashicorpConnectionFactory, config.getKeyConfigPath(), azureFactory, interlockKeyProvider, yubiHsmOpaqueDataProvider, EthSecpArtifactSigner::new, true);
return new SignerLoader().load(config.getKeyConfigPath(), "yaml", new YamlSignerParser(List.of(ethSecpArtifactSignerFactory)));
}
});
}
Aggregations