Method: Ably::Models::CipherParams#initialize
- Defined in:
- lib/ably/models/cipher_params.rb
#initialize(params = {}) ⇒ CipherParams
Returns a new instance of CipherParams.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/ably/models/cipher_params.rb', line 31 def initialize(params = {}) @attributes = IdiomaticRubyWrapper(params.clone) raise Ably::Exceptions::CipherError, ':key param is required' unless attributes[:key] raise Ably::Exceptions::CipherError, ':key param must be a base64-encoded string or byte array (ASCII_8BIT enocdede string)' unless key.kind_of?(String) attributes[:key] = decode_key(key) if key.kind_of?(String) && key.encoding != Encoding::ASCII_8BIT if attributes[:combined] match = /(?<algorithm>\w+)-(?<key_length>\d+)-(?<mode>\w+)/.match(attributes[:combined]) raise Ably::Exceptions::CipherError, "Invalid :combined param, expecting format such as AES-256-CBC" unless match attributes[:algorithm] = match[:algorithm] attributes[:key_length] = match[:key_length].to_i attributes[:mode] = match[:mode] end if attributes[:key_length] && (key_length != attributes[:key_length]) raise Ably::Exceptions::CipherError, "Incompatible :key length of #{key_length} and provided :key_length of #{attributes[:key_length]}" end if algorithm == 'aes' && mode == 'cbc' unless [128, 256].include?(key_length) raise Ably::Exceptions::CipherError, "Unsupported key length #{key_length} for aes-cbc encryption. Encryption key must be 128 or 256 bits (16 or 32 ASCII characters)" end end attributes.freeze end |