class ComplexConfig::Provider

def provide_key_source(pathname, encrypt)

def provide_key_source(pathname, encrypt)
  ks =
    case encrypt
    when :random
      ComplexConfig::KeySource.new(var: new_key)
    when true
      key_source(pathname)
    when String
      if encrypt =~ /\A\h{32}\z/
        ComplexConfig::KeySource.new(var: encrypt)
      else
        raise ComplexConfig::EncryptionKeyInvalid,
          "encryption key has wrong format, has to be hex number of length "\
          "32, was #{encrypt.inspect}"
      end
    end
  ks or raise ComplexConfig::EncryptionKeyInvalid, "encryption key is missing"
end