File: client_side_encryption_operations.rb

package info (click to toggle)
ruby-mongo 2.21.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 14,764 kB
  • sloc: ruby: 108,806; makefile: 5; sh: 2
file content (83 lines) | stat: -rw-r--r-- 2,448 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# frozen_string_literal: true
# rubocop:todo all

module Unified
  module ClientSideEncryptionOperations
    def create_data_key(op)
      client_encryption = entities.get(:clientEncryption, op.use!('object'))
      use_arguments(op) do |args|
        opts = Utils.shallow_snakeize_hash(args.use('opts')) || {}
        opts[:master_key] = Utils.shallow_snakeize_hash(opts[:master_key]) if opts[:master_key]
        opts[:key_material] = opts[:key_material].data if opts[:key_material]
        client_encryption.create_data_key(
          args.use!('kmsProvider'),
          opts,
        )
      end
    end

    def add_key_alt_name(op)
      client_encryption = entities.get(:clientEncryption, op.use!('object'))
      use_arguments(op) do |args|
        client_encryption.add_key_alt_name(
          args.use!('id'),
          args.use!('keyAltName')
        )
      end
    end

    def delete_key(op)
      client_encryption = entities.get(:clientEncryption, op.use!('object'))
      use_arguments(op) do |args|
        client_encryption.delete_key(
          args.use!('id')
        )
      end
    end

    def get_key(op)
      client_encryption = entities.get(:clientEncryption, op.use!('object'))
      use_arguments(op) do |args|
        client_encryption.get_key(
          args.use!('id')
        )
      end
    end

    def get_key_by_alt_name(op)
      client_encryption = entities.get(:clientEncryption, op.use!('object'))
      use_arguments(op) do |args|
        client_encryption.get_key_by_alt_name(
          args.use!('keyAltName')
        )
      end
    end

    def get_keys(op)
      client_encryption = entities.get(:clientEncryption, op.use!('object'))
      client_encryption.get_keys.to_a
    end

    def remove_key_alt_name(op)
      client_encryption = entities.get(:clientEncryption, op.use!('object'))
      use_arguments(op) do |args|
        client_encryption.remove_key_alt_name(
          args.use!('id'),
          args.use!('keyAltName')
        )
      end
    end

    def rewrap_many_data_key(op)
      client_encryption = entities.get(:clientEncryption, op.use!('object'))
      use_arguments(op) do |args|
        opts = Utils.shallow_snakeize_hash(args.use('opts')) || {}
        opts[:master_key] = Utils.shallow_snakeize_hash(opts[:master_key]) if opts[:master_key]
        client_encryption.rewrap_many_data_key(
          args.use!('filter'),
          opts
        )
      end
    end
  end
end