Skip to content

Commit 8cf353f

Browse files
authored
[improve][client] Support load RSA PKCS#8 private key (apache#24582)
1 parent b2f277d commit 8cf353f

File tree

4 files changed

+51
-2
lines changed

4 files changed

+51
-2
lines changed

pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerTest.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2854,6 +2854,11 @@ public EncryptionKeyInfo getPrivateKey(String keyName, Map<String, String> keyMe
28542854
.addEncryptionKey("client-rsa.pem").cryptoKeyReader(new EncKeyReader()).create();
28552855
Producer<byte[]> producer2 = pulsarClient.newProducer().topic("persistent://my-property/my-ns/myrsa-topic1")
28562856
.addEncryptionKey("client-rsa.pem").cryptoKeyReader(new EncKeyReader()).create();
2857+
Producer<byte[]> producer3 = pulsarClient.newProducer()
2858+
.topic("persistent://my-property/my-ns/myrsa-topic1")
2859+
.addEncryptionKey("client-rsa-pkcs8.pem")
2860+
.cryptoKeyReader(new EncKeyReader())
2861+
.create();
28572862

28582863
for (int i = 0; i < totalMsg; i++) {
28592864
String message = "my-message-" + i;
@@ -2863,20 +2868,24 @@ public EncryptionKeyInfo getPrivateKey(String keyName, Map<String, String> keyMe
28632868
String message = "my-message-" + i;
28642869
producer2.send(message.getBytes());
28652870
}
2871+
for (int i = totalMsg * 2; i < totalMsg * 3; i++) {
2872+
String message = "my-message-" + i;
2873+
producer3.send(message.getBytes());
2874+
}
28662875

28672876
MessageImpl<byte[]> msg;
28682877

28692878
msg = (MessageImpl<byte[]>) normalConsumer.receive(RECEIVE_TIMEOUT_MEDIUM_MILLIS, TimeUnit.MILLISECONDS);
28702879
// should not able to read message using normal message.
28712880
assertNull(msg);
28722881

2873-
for (int i = 0; i < totalMsg * 2; i++) {
2882+
for (int i = 0; i < totalMsg * 3; i++) {
28742883
msg = (MessageImpl<byte[]>) consumer.receive(RECEIVE_TIMEOUT_SECONDS, TimeUnit.SECONDS);
28752884
// verify that encrypted message contains encryption-context
28762885
msg.getEncryptionCtx()
28772886
.orElseThrow(() -> new IllegalStateException("encryption-ctx not present for encrypted message"));
28782887
String receivedMessage = new String(msg.getData());
2879-
log.debug("Received message: [{}]", receivedMessage);
2888+
log.info("Received message: [{}]", receivedMessage);
28802889
String expectedMessage = "my-message-" + i;
28812890
testMessageOrderAndDuplicates(messageSet, receivedMessage, expectedMessage);
28822891
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC3xJ0urDHj3X4n
3+
Ul7j8ovzHMUK74hmRIy+n1VuPbUcfaHYXx6lpebAsrFzgvqvNUywXGWEXZ+zlPpD
4+
DfMupZ0KW2rGAlOQhGWI8384PtBINi06jY0Wa1Apc2EJ43rP9lHR/XkZRHaPDRNR
5+
Fer3uwlb1hhxyliNRH1GZrfryX3FW1/z9chG+ouc9AvP+/NJYO2Un8klPxsswEDO
6+
krTgZbdAXwA0jYafViIv+ea7xses+YgOaZ6cv8JpD1rBF0TwO1U2anQRyZ7jVnlZ
7+
eQMEM4TimCm3i6egHpUnbw0BsSvoUKOrkpXnurCTpfx05sy3yFumFCm8ytditHB5
8+
3mBEtdd3AgMBAAECggEAPJJEYulkCmDr34ches3r/iaJ9hhM47SNlZlMHemeBDWO
9+
vpRftCbSP8rGfbX67fxJ+kmCNpZreNROhwKWmNYCxLKsJ3cF1zkkhHcKBF6D5YFh
10+
+A5HJlAZ3IfIwOsnhFuCzY3YOBFeaLldGBl62MvgAlK3vO3+sRWVmzppPgEsgPuU
11+
KEGFB4EX2JRY001rQcfQ4Oh2VcR5st13/JAXw6aMfJAtYAHAt5rpiYQZyH/t25+a
12+
aqVTp5Q/oyx/+hNajU0gasvAaRtUGi1HipUkcZ80RTTMFKsMn/gM1kyPJTQMejcC
13+
o74/xhyGdGQ1hLFijXLMn8JclifIOUDBrVySZagJ1QKBgQD8kwvzhlehBZ2dQkjJ
14+
T+S2suuuE6UPJDSJiq+7gjy4F11p+NAZv2QhLzIGRlX0WmR0BU0Nt1X50uWIUnwM
15+
NJuz5JWIWIxcyBoCRD3BFHzq1yGBbP03iHyiYW864+VZy2INJmz0Oww4kC55kzdH
16+
aB9IVQRjCyC5po38zwHdKJAVXQKBgQC6QqrgATeVWDwKbabbIJY5uqsK8VVphCTi
17+
4ezRhA5XldaTA3zODg5fo+oa3Yge0CHx7moM5odCqjm8dBPdE0D9vaZ/dEsIVqcZ
18+
H6oEV+xuLePTXsFDcX80EwtIB/DJs5sqFIcqUYyrPBPHrY9dsfXnohBGlYysd+T5
19+
yLwgSxoe4wKBgQCmjBQyZeC8piZTf1TdolgPfRXZuMx7moUmORQ+EdgWEBoh+dbH
20+
U6QkGanj51dghIZ+1swDgmQoE0AVz0ZLChmt2sobmUAdIjm8SuFpwyfH90n5vTOP
21+
/ekpbhRZgdNHjcw/HZp0xcb+OVzcAA5QgME4Ag+de8X9hW1VSe9RtSClZQKBgHPO
22+
98eHejPVRJ+HRfOA82a5dZe8LcsJapXWuxQZ84DpnRyTUoobmzxEAk7p5rSh3Dk8
23+
b5vNydPdW0CdO6x9SC98N4WPnQd2OTcZxPAmas6mobzOcYOpkdmi7aS/qyr+DT/A
24+
u7nIMppVJEdG1pj/CVIYJd59JZYmhav471900qzZAoGBAKP5f1vSQtcN9PNMUidy
25+
c3rNF3jVnGmV6LXIeMk0dwlMMANT2X3CzXTUU9y80AXThHEltJtdHD5xjJjRTODv
26+
rWxAAZRnLDCfv/4meD+3YRWXw8oy6hG81vz4v81ypE5jD37/kwTIfbpSVGxo699J
27+
c3KEpMHolMtHSTl9WWz3SJwM
28+
-----END PRIVATE KEY-----
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-----BEGIN PUBLIC KEY-----
2+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt8SdLqwx491+J1Je4/KL
3+
8xzFCu+IZkSMvp9Vbj21HH2h2F8epaXmwLKxc4L6rzVMsFxlhF2fs5T6Qw3zLqWd
4+
CltqxgJTkIRliPN/OD7QSDYtOo2NFmtQKXNhCeN6z/ZR0f15GUR2jw0TURXq97sJ
5+
W9YYccpYjUR9Rma368l9xVtf8/XIRvqLnPQLz/vzSWDtlJ/JJT8bLMBAzpK04GW3
6+
QF8ANI2Gn1YiL/nmu8bHrPmIDmmenL/CaQ9awRdE8DtVNmp0Ecme41Z5WXkDBDOE
7+
4pgpt4unoB6VJ28NAbEr6FCjq5KV57qwk6X8dObMt8hbphQpvMrXYrRwed5gRLXX
8+
dwIDAQAB
9+
-----END PUBLIC KEY-----

pulsar-client-messagecrypto-bc/src/main/java/org/apache/pulsar/client/impl/crypto/MessageCryptoBc.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,9 @@ private PrivateKey loadPrivateKey(byte[] keyBytes) throws Exception {
273273
JcaPEMKeyConverter pemConverter = new JcaPEMKeyConverter();
274274
privateKey = pemConverter.getPrivateKey(pKeyInfo);
275275

276+
} else if (pemObj instanceof PrivateKeyInfo) {
277+
JcaPEMKeyConverter pemConverter = new JcaPEMKeyConverter();
278+
privateKey = pemConverter.getPrivateKey((PrivateKeyInfo) pemObj);
276279
}
277280

278281
// if our private key is EC type and we have parameters specified

0 commit comments

Comments
 (0)