Improve encryption concurrency 01/97101/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 9 Aug 2021 10:16:12 +0000 (12:16 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 9 Aug 2021 10:16:12 +0000 (12:16 +0200)
Do not perform base64-encoding under lock, allowing cipher to be used
while we process its result.

Change-Id: I804a26eab36b7a78ad3532857cf5edb949bfd81e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
aaa-encrypt-service/impl/src/main/java/org/opendaylight/aaa/encrypt/impl/AAAEncryptionServiceImpl.java

index 6cbbf8bad6e3bde521470f5441c5a477712f09b7..f7fbf81b40438d960b6626b736e38c535102403c 100644 (file)
@@ -126,16 +126,17 @@ public class AAAEncryptionServiceImpl implements AAAEncryptionService {
             LOG.warn("Encryption Key is NULL, will not encrypt data.");
             return data;
         }
+
+        final byte[] cryptobytes;
         try {
             synchronized (encryptCipher) {
-                byte[] cryptobytes = encryptCipher.doFinal(data.getBytes(Charset.defaultCharset()));
-                String cryptostring = DatatypeConverter.printBase64Binary(cryptobytes);
-                return cryptostring;
+                cryptobytes = encryptCipher.doFinal(data.getBytes(Charset.defaultCharset()));
             }
         } catch (IllegalBlockSizeException | BadPaddingException e) {
             LOG.error("Failed to encrypt data.", e);
+            return data;
         }
-        return data;
+        return DatatypeConverter.printBase64Binary(cryptobytes);
     }
 
     @Override
@@ -152,8 +153,8 @@ public class AAAEncryptionServiceImpl implements AAAEncryptionService {
             }
         } catch (IllegalBlockSizeException | BadPaddingException e) {
             LOG.error("Failed to encrypt data.", e);
+            return data;
         }
-        return data;
     }
 
     @Override