File: create_key.rb

package info (click to toggle)
ruby-fog-aws 3.3.0-5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 7,816 kB
  • sloc: ruby: 68,587; makefile: 6
file content (62 lines) | stat: -rw-r--r-- 1,568 bytes parent folder | download | duplicates (5)
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
module Fog
  module AWS
    class KMS
      class Real
        DEFAULT_KEY_POLICY = <<-JSON
{
  "Version": "2012-10-17",
  "Id": "key-default-1",
  "Statement": [
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::915445820265:root"
      },
      "Action": "kms:*",
      "Resource": "*"
    }
  ]
}
        JSON

        require 'fog/aws/parsers/kms/describe_key'

        def create_key(policy = nil, description = nil, usage = "ENCRYPT_DECRYPT")
          request(
            'Action'      => 'CreateKey',
            'Description' => description,
            'KeyUsage'    => usage,
            'Policy'      => policy,
            :parser       => Fog::Parsers::AWS::KMS::DescribeKey.new
          )
        end
      end

      class Mock
        def create_key(policy = nil, description = nil, usage = "ENCRYPT_DECRYPT")
          response = Excon::Response.new
          key_id   = UUID.uuid
          key_arn  = Fog::AWS::Mock.arn("kms", self.account_id, "key/#{key_id}", @region)

          key = {
            "KeyUsage"     => usage,
            "AWSAccountId" => self.account_id,
            "KeyId"        => key_id,
            "Description"  => description,
            "CreationDate" => Time.now,
            "Arn"          => key_arn,
            "Enabled"      => true,
          }

          # @todo use default policy

          self.data[:keys][key_id] = key

          response.body = { "KeyMetadata" => key }
          response
        end
      end
    end
  end
end