jbertram commented on code in PR #6258:
URL: https://github.com/apache/artemis/pull/6258#discussion_r2874688253


##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/security/impl/SecurityStoreImpl.java:
##########
@@ -569,9 +582,26 @@ private boolean checkAuthorizationCache(final SimpleString 
dest, final String us
    }
 
    private String createAuthenticationCacheKey(String username, String 
password, RemotingConnection connection) {
+      MessageDigest md = getDigest();
+      if (username != null) {
+         md.update(username.getBytes(StandardCharsets.UTF_8));
+      }
+      md.update(CACHE_KEY_SEPARATOR);
+      if (password != null) {
+         md.update(password.getBytes(StandardCharsets.UTF_8));
+      }
+      md.update(CACHE_KEY_SEPARATOR);
+      String certSubjectDN = CertificateUtil.getCertSubjectDN(connection);
+      if (!CERT_SUBJECT_DN_UNAVAILABLE.equals(certSubjectDN)) {
+         md.update(certSubjectDN.getBytes(StandardCharsets.UTF_8));
+      }
+      return ByteUtil.bytesToHex(md.digest());
+   }
+
+   private static MessageDigest getDigest() {
       try {
-         return 
ByteUtil.bytesToHex(MessageDigest.getInstance("SHA-256").digest((username + 
password + 
CertificateUtil.getCertSubjectDN(connection)).getBytes(StandardCharsets.UTF_8)));
-      } catch (NoSuchAlgorithmException e) {
+         return (MessageDigest) SHA256.clone();
+      } catch (CloneNotSupportedException e) {

Review Comment:
   I see your point, and that's exactly what 
`org.apache.activemq.artemis.protocol.amqp.sasl.scram.ScramServerFunctionalityImpl#getDigest`
 does. I think that's fair, but this optimization is the whole point of this 
change so I think I'll add some code to log once if this fails so we know the 
optimization isn't working. I'll also make this method protected and add a test 
to ensure it works as expected.



-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to