Ruby - unsupported cipher algorithm (AES-256-GCM)
aes-gcm, encryption, openssl, ruby, security
Solution
What works for me is
OpenSSL::Cipher.new('aes-128-gcm')
I am not sure why you get an error with your approach.
Edit:
It might be a upper/lower case issue. This might be an actual bug.
The following works:
OpenSSL::Cipher::AES.new(128, :CBC)
because we find `"AES-128-CBC"` (all upper case) in `OpenSSL::Cipher::AES.ciphers`. `AES.new` seems to search its ciphers with upper case characters.
Thus, the following does not work:
OpenSSL::Cipher::AES.new(128, :GCM)
because it is `"aes-128-gcm"` in the ciphers list.
Problem
I'm getting the error: unsupported cipher algorithm (AES-256-GCM) (RuntimeError) But I seem to have all the requirements: Ruby version: $ ruby --version ruby 2.1.2p95 OpenSSL does list gcm: $ openssl enc -help 2>&1 | grep gcm -aes-128-ecb -aes-128-gcm -aes-128-ofb -aes-192-ecb -aes-192-gcm -aes-192-ofb -aes-256-ecb -aes-256-gcm -aes-256-ofb Ruby interpreter: $ irb 2.1.2 :001 > require 'openssl'; puts OpenSSL::VERSION 1.1.0 => nil 2.1.2 :002 > OpenSSL::Cipher.ciphers.include? "aes-128-gcm" => true And yet I'm getting errors running this code: ``` 2.1.2 :001 > require 'openssl' => true 2.1.2 :002 > cipher = OpenSSL::Cipher::AES.new(128, :GCM) RuntimeError: unsupported cipher algorithm (AES-128-GCM) from /home/m/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/openssl/cipher.rb:27:in `initialize' from /home/m/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/openssl/cipher.rb:27:in `block (3 levels) in <class:Cipher>' from (irb):2:in `new' from (irb):2 from /home/m/.rvm/rubies/ruby-2.1.2/bin/irb:11:in `<main>' ``` How do I get GCM to work in ruby?