1717
1818import io .micrometer .core .instrument .Counter ;
1919import io .micrometer .core .instrument .MeterRegistry ;
20+ import io .micrometer .core .lang .Nullable ;
2021import io .micrometer .prometheus .PrometheusMeterRegistry ;
2122import io .rsocket .*;
2223import io .rsocket .transport .ClientTransport ;
3031import javax .crypto .KeyGenerator ;
3132import javax .crypto .SecretKey ;
3233import java .nio .ByteBuffer ;
34+ import java .nio .charset .StandardCharsets ;
3335import java .security .KeyFactory ;
3436import java .security .NoSuchAlgorithmException ;
3537import java .security .PublicKey ;
@@ -145,15 +147,21 @@ public void pushAndClose() {
145147 close ();
146148 }
147149
148- private Payload scrapePayload (PublicKey publicKey ) {
150+ private Payload scrapePayload (@ Nullable PublicKey publicKey ) {
151+ String scrape = registryAndScrape .scrape ();
152+
153+ if (publicKey == null ) {
154+ return DefaultPayload .create (scrape , "plaintext" );
155+ }
156+
149157 try {
150158 KeyGenerator generator = KeyGenerator .getInstance ("AES" );
151159 generator .init (128 );
152160 SecretKey secKey = generator .generateKey ();
153161
154162 Cipher aesCipher = Cipher .getInstance ("AES" );
155163 aesCipher .init (Cipher .ENCRYPT_MODE , secKey );
156- byte [] encryptedMetrics = aesCipher .doFinal (Snappy .compress (registryAndScrape . scrape () ));
164+ byte [] encryptedMetrics = aesCipher .doFinal (Snappy .compress (scrape ));
157165
158166 Cipher cipher = Cipher .getInstance ("RSA/ECB/OAEPWithSHA-256AndMGF1Padding" );
159167 cipher .init (Cipher .PUBLIC_KEY , publicKey );
@@ -165,10 +173,15 @@ private Payload scrapePayload(PublicKey publicKey) {
165173 }
166174 }
167175
176+ @ Nullable
168177 private PublicKey decodePublicKey (ByteBuffer encodedKeyBuffer ) {
169178 byte [] encodedKey = new byte [encodedKeyBuffer .capacity ()];
170179 encodedKeyBuffer .get (encodedKey );
171180
181+ if ("plaintext" .equals (new String (encodedKey , StandardCharsets .UTF_8 ))) {
182+ return null ;
183+ }
184+
172185 X509EncodedKeySpec keySpec = new X509EncodedKeySpec (encodedKey );
173186 try {
174187 KeyFactory keyFactory = KeyFactory .getInstance ("RSA" );
0 commit comments