I am currently working on a requirement where I am developing Apex REST callouts to an external data providers. Here the complexity lies within the encryption/decryption methods that they are using: Java 8 libraries.

Are there any ways we can encrypt/decrypt the request/response using their AES-GCM (A256GCM) algorithm (i.e. JCA: AES/GCM/NoPadding) in our Apex? I have tried our Apex Crypto Class methods, but that didn't really helped. If anyone have done/know something like this, can I get some insights of how to do it? Any references, articles or examples would be really appreciated.


I don't think you'll be able to do this in Apex.

Crypto is documented to use only CBC mode:

These algorithms are all industry standard Advanced Encryption Standard (AES) algorithms with different size keys. They use cipher block chaining (CBC) and PKCS5 padding.

Even though Apex does support AES-256, you won't be able to do any reasonable implementation of GCM mode in pure Apex, and it's not supported by the standard library. You might look at a connector on Heroku or something to decrypt the remote data and provide it in a format Apex can handle.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.