kjaggann opened a new issue #6834:
URL: https://github.com/apache/pulsar/issues/6834
Trying to send encrypted messages from producer
but got this exception:
------------------------------------------------------------------------------------------
org.apache.pulsar.client.api.PulsarClientException:
java.util.concurrent.ExecutionException:
org.apache.pulsar.client.api.PulsarClientException:
java.lang.NoSuchMethodError: 'org.apache.pulsar.shade.io.netty.buffer.ByteBuf
org.apache.pulsar.client.api.MessageCrypto.encrypt(java.util.Set,
org.apache.pulsar.client.api.CryptoKeyReader, java.util.function.Supplier,
org.apache.pulsar.shade.io.netty.buffer.ByteBuf)'
at
org.apache.pulsar.client.api.PulsarClientException.unwrap(PulsarClientException.java:719)
at
org.apache.pulsar.client.impl.ProducerBase.send(ProducerBase.java:117)
at
org.apache.pulsar.client.impl.TypedMessageBuilderImpl.send(TypedMessageBuilderImpl.java:89)
at org.apache.pulsar.client.impl.ProducerBase.send(ProducerBase.java:63)
at com.vz.vmb.PulsarProducer.main(PulsarProducer.java:59)
Caused by: java.util.concurrent.ExecutionException:
org.apache.pulsar.client.api.PulsarClientException:
java.lang.NoSuchMethodError: 'org.apache.pulsar.shade.io.netty.buffer.ByteBuf
org.apache.pulsar.client.api.MessageCrypto.encrypt(java.util.Set,
org.apache.pulsar.client.api.CryptoKeyReader, java.util.function.Supplier,
org.apache.pulsar.shade.io.netty.buffer.ByteBuf)'
at
java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
at
java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
at
org.apache.pulsar.client.impl.ProducerBase.send(ProducerBase.java:115)
... 3 more
Caused by: org.apache.pulsar.client.api.PulsarClientException:
java.lang.NoSuchMethodError: 'org.apache.pulsar.shade.io.netty.buffer.ByteBuf
org.apache.pulsar.client.api.MessageCrypto.encrypt(java.util.Set,
org.apache.pulsar.client.api.CryptoKeyReader, java.util.function.Supplier,
org.apache.pulsar.shade.io.netty.buffer.ByteBuf)'
at
org.apache.pulsar.client.impl.ProducerImpl.sendAsync(ProducerImpl.java:477)
at
org.apache.pulsar.client.impl.ProducerImpl.internalSendAsync(ProducerImpl.java:269)
at
org.apache.pulsar.client.impl.ProducerBase.send(ProducerBase.java:108)
... 3 more
Caused by: java.lang.NoSuchMethodError:
'org.apache.pulsar.shade.io.netty.buffer.ByteBuf
org.apache.pulsar.client.api.MessageCrypto.encrypt(java.util.Set,
org.apache.pulsar.client.api.CryptoKeyReader, java.util.function.Supplier,
org.apache.pulsar.shade.io.netty.buffer.ByteBuf)'
at
org.apache.pulsar.client.impl.ProducerImpl.encryptMessage(ProducerImpl.java:567)
at
org.apache.pulsar.client.impl.ProducerImpl.sendAsync(ProducerImpl.java:446)
... 5 more
--------------------------------------------------------------------------------------------------
Followed the Encryption from the apache pulsar documentation and the
sampleProducerConsumerTest class from pulsar client.
Generated a public key and the private key
created a Pulsarclient object
--------------------------------------------------------------------------------------------------
client = PulsarClient.builder()
.serviceUrl("pulsar+ssl:xxxxxxxxxxxxxxxxx:6651/")
.tlsTrustCertsFilePath("src/main/resources/ca.cert.pem")
.enableTls(true)
.authentication("org.apache.pulsar.client.impl.auth.AuthenticationTls",
authParams).build();
Producer<byte[]> producer = client.newProducer()
.topic("persistent://tenant/namespace/nonprod-topic-1")
.cryptoKeyReader(new
RawFileKeyReader("src/main/resources/test_ecdsa_pubkey.pem",
"src/main/resources/test_ecdsa_privkey.pem"))
.addEncryptionKey("src/main/resources/test_ecdsa_pubkey.pem")
.enableBatching(false)
.create();
String message = "Test Messages";
int i = 2;
while(true) {
i = i + 1;
message = message + " Mesage # " + i;
producer.send(message.getBytes());
System.out.println("Printing the Messages " +
message);
producer.flush();
if (i == 100) {
break;
}
}
producer.close();
client.close();
**To Reproduce**
Steps to reproduce the behavior:
1. Go to ' create a producer class in java. add the serviceUrl, generate
public key, generate private key, use certificates for tls authentication, and
make the topic as encryption enabled'
2. Click on ' run the sample producer'
3. Scroll down to ' console'
4. See error
'org.apache.pulsar.client.api.PulsarClientException:
java.util.concurrent.ExecutionException:
org.apache.pulsar.client.api.PulsarClientException:
java.lang.NoSuchMethodError: 'org.apache.pulsar.shade.io.netty.buffer.ByteBuf
org.apache.pulsar.client.api.MessageCrypto.encrypt(java.util.Set,
org.apache.pulsar.client.api.CryptoKeyReader, java.util.function.Supplier,
org.apache.pulsar.shade.io.netty.buffer.ByteBuf)'
**Expected behavior**
send message encrypted messages using ecdsa public key and private key,
**Desktop (please complete the following information):**
- OS: [e.g. iOS] : I am using macOs Mojave version(10.14.6)
-Pulsar-client version: 2.5.1
**Additional context**
here are my dependecies i used
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-io-netty</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-client-messagecrypto-bc</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-client</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-client-admin</artifactId>
<version>2.5.1</version>
</dependency>
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]