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]


Reply via email to