lib/ably/util/crypto.rb in ably-0.8.3 vs lib/ably/util/crypto.rb in ably-0.8.4

- old
+ new

@@ -35,9 +35,24 @@ def initialize(options) raise ArgumentError, ':key is required' unless options.has_key?(:key) @options = DEFAULTS.merge(options).freeze end + # Obtain a default CipherParams. This uses default algorithm, mode and + # padding and key length. A key and IV are generated using the default + # system SecureRandom; the key may be obtained from the returned CipherParams + # for out-of-band distribution to other clients. + # + # @return [Hash] CipherParam options Hash with attributes :key, :algorithn, :mode, :key_length + # + def self.get_default_params(key = nil) + params = DEFAULTS.merge(key: key) + params[:key_length] = key.unpack('b*').first.length if params[:key] + cipher_type = "#{params[:algorithm]}-#{params[:key_length]}-#{params[:mode]}" + params[:key] = OpenSSL::Cipher.new(cipher_type.upcase).random_key unless params[:key] + params + end + # Encrypt payload using configured Cipher # # @param [String] payload the payload to be encrypted # @param [Hash] encrypt_options an options Hash to configure the encrypt action # @option encrypt_options [String] :iv optionally use the provided Initialization Vector instead of a randomly generated IV