akeyless 3.3.4 → 3.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -1
  3. data/docs/CertificateTemplateInfo.md +32 -0
  4. data/docs/CreateClassicKey.md +16 -0
  5. data/docs/CreateDFCKey.md +16 -0
  6. data/docs/CreateKey.md +16 -0
  7. data/docs/DSProducerDetails.md +8 -2
  8. data/docs/DeriveKey.md +40 -0
  9. data/docs/DeriveKeyOutput.md +20 -0
  10. data/docs/EventAction.md +26 -0
  11. data/docs/GatewayCreateProducerCertificateAutomation.md +6 -4
  12. data/docs/GatewayUpdateProducerCertificateAutomation.md +6 -4
  13. data/docs/ItemGeneralInfo.md +2 -0
  14. data/docs/TargetTypeDetailsInput.md +8 -2
  15. data/docs/V2Api.md +126 -0
  16. data/lib/akeyless/api/v2_api.rb +128 -0
  17. data/lib/akeyless/models/certificate_template_info.rb +282 -0
  18. data/lib/akeyless/models/create_classic_key.rb +81 -1
  19. data/lib/akeyless/models/create_dfc_key.rb +81 -1
  20. data/lib/akeyless/models/create_key.rb +81 -1
  21. data/lib/akeyless/models/derive_key.rb +362 -0
  22. data/lib/akeyless/models/derive_key_output.rb +228 -0
  23. data/lib/akeyless/models/ds_producer_details.rb +30 -1
  24. data/lib/akeyless/models/event_action.rb +272 -0
  25. data/lib/akeyless/models/gateway_create_producer_certificate_automation.rb +30 -18
  26. data/lib/akeyless/models/gateway_update_producer_certificate_automation.rb +30 -18
  27. data/lib/akeyless/models/item_general_info.rb +10 -1
  28. data/lib/akeyless/models/target_type_details_input.rb +30 -1
  29. data/lib/akeyless/version.rb +1 -1
  30. data/lib/akeyless.rb +4 -0
  31. data/spec/models/certificate_template_info_spec.rb +76 -0
  32. data/spec/models/derive_key_output_spec.rb +40 -0
  33. data/spec/models/derive_key_spec.rb +100 -0
  34. data/spec/models/event_action_spec.rb +58 -0
  35. metadata +18 -2
@@ -4371,6 +4371,70 @@ module Akeyless
4371
4371
  return data, status_code, headers
4372
4372
  end
4373
4373
 
4374
+ # @param body [DeriveKey]
4375
+ # @param [Hash] opts the optional parameters
4376
+ # @return [DeriveKeyOutput]
4377
+ def derive_key(body, opts = {})
4378
+ data, _status_code, _headers = derive_key_with_http_info(body, opts)
4379
+ data
4380
+ end
4381
+
4382
+ # @param body [DeriveKey]
4383
+ # @param [Hash] opts the optional parameters
4384
+ # @return [Array<(DeriveKeyOutput, Integer, Hash)>] DeriveKeyOutput data, response status code and response headers
4385
+ def derive_key_with_http_info(body, opts = {})
4386
+ if @api_client.config.debugging
4387
+ @api_client.config.logger.debug 'Calling API: V2Api.derive_key ...'
4388
+ end
4389
+ # verify the required parameter 'body' is set
4390
+ if @api_client.config.client_side_validation && body.nil?
4391
+ fail ArgumentError, "Missing the required parameter 'body' when calling V2Api.derive_key"
4392
+ end
4393
+ # resource path
4394
+ local_var_path = '/derive-key'
4395
+
4396
+ # query parameters
4397
+ query_params = opts[:query_params] || {}
4398
+
4399
+ # header parameters
4400
+ header_params = opts[:header_params] || {}
4401
+ # HTTP header 'Accept' (if needed)
4402
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
4403
+ # HTTP header 'Content-Type'
4404
+ content_type = @api_client.select_header_content_type(['application/json'])
4405
+ if !content_type.nil?
4406
+ header_params['Content-Type'] = content_type
4407
+ end
4408
+
4409
+ # form parameters
4410
+ form_params = opts[:form_params] || {}
4411
+
4412
+ # http body (model)
4413
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(body)
4414
+
4415
+ # return_type
4416
+ return_type = opts[:debug_return_type] || 'DeriveKeyOutput'
4417
+
4418
+ # auth_names
4419
+ auth_names = opts[:debug_auth_names] || []
4420
+
4421
+ new_options = opts.merge(
4422
+ :operation => :"V2Api.derive_key",
4423
+ :header_params => header_params,
4424
+ :query_params => query_params,
4425
+ :form_params => form_params,
4426
+ :body => post_body,
4427
+ :auth_names => auth_names,
4428
+ :return_type => return_type
4429
+ )
4430
+
4431
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
4432
+ if @api_client.config.debugging
4433
+ @api_client.config.logger.debug "API called: V2Api#derive_key\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
4434
+ end
4435
+ return data, status_code, headers
4436
+ end
4437
+
4374
4438
  # @param body [DescribeAssoc]
4375
4439
  # @param [Hash] opts the optional parameters
4376
4440
  # @return [RoleAssociationDetails]
@@ -5192,6 +5256,70 @@ module Akeyless
5192
5256
  return data, status_code, headers
5193
5257
  end
5194
5258
 
5259
+ # @param body [EventAction]
5260
+ # @param [Hash] opts the optional parameters
5261
+ # @return [Object]
5262
+ def event_action(body, opts = {})
5263
+ data, _status_code, _headers = event_action_with_http_info(body, opts)
5264
+ data
5265
+ end
5266
+
5267
+ # @param body [EventAction]
5268
+ # @param [Hash] opts the optional parameters
5269
+ # @return [Array<(Object, Integer, Hash)>] Object data, response status code and response headers
5270
+ def event_action_with_http_info(body, opts = {})
5271
+ if @api_client.config.debugging
5272
+ @api_client.config.logger.debug 'Calling API: V2Api.event_action ...'
5273
+ end
5274
+ # verify the required parameter 'body' is set
5275
+ if @api_client.config.client_side_validation && body.nil?
5276
+ fail ArgumentError, "Missing the required parameter 'body' when calling V2Api.event_action"
5277
+ end
5278
+ # resource path
5279
+ local_var_path = '/event-action'
5280
+
5281
+ # query parameters
5282
+ query_params = opts[:query_params] || {}
5283
+
5284
+ # header parameters
5285
+ header_params = opts[:header_params] || {}
5286
+ # HTTP header 'Accept' (if needed)
5287
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
5288
+ # HTTP header 'Content-Type'
5289
+ content_type = @api_client.select_header_content_type(['application/json'])
5290
+ if !content_type.nil?
5291
+ header_params['Content-Type'] = content_type
5292
+ end
5293
+
5294
+ # form parameters
5295
+ form_params = opts[:form_params] || {}
5296
+
5297
+ # http body (model)
5298
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(body)
5299
+
5300
+ # return_type
5301
+ return_type = opts[:debug_return_type] || 'Object'
5302
+
5303
+ # auth_names
5304
+ auth_names = opts[:debug_auth_names] || []
5305
+
5306
+ new_options = opts.merge(
5307
+ :operation => :"V2Api.event_action",
5308
+ :header_params => header_params,
5309
+ :query_params => query_params,
5310
+ :form_params => form_params,
5311
+ :body => post_body,
5312
+ :auth_names => auth_names,
5313
+ :return_type => return_type
5314
+ )
5315
+
5316
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
5317
+ if @api_client.config.debugging
5318
+ @api_client.config.logger.debug "API called: V2Api#event_action\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
5319
+ end
5320
+ return data, status_code, headers
5321
+ end
5322
+
5195
5323
  # @param body [ExportClassicKey]
5196
5324
  # @param [Hash] opts the optional parameters
5197
5325
  # @return [ExportClassicKeyOutput]
@@ -0,0 +1,282 @@
1
+ =begin
2
+ #Akeyless API
3
+
4
+ #The purpose of this application is to provide access to Akeyless API.
5
+
6
+ The version of the OpenAPI document: 2.0
7
+ Contact: support@akeyless.io
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 7.0.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Akeyless
17
+ class CertificateTemplateInfo
18
+ attr_accessor :common_name
19
+
20
+ attr_accessor :country
21
+
22
+ attr_accessor :digest_algo
23
+
24
+ attr_accessor :locality
25
+
26
+ attr_accessor :organization
27
+
28
+ attr_accessor :province
29
+
30
+ attr_accessor :self_signed_enabled
31
+
32
+ attr_accessor :ttl
33
+
34
+ # Attribute mapping from ruby-style variable name to JSON key.
35
+ def self.attribute_map
36
+ {
37
+ :'common_name' => :'common_name',
38
+ :'country' => :'country',
39
+ :'digest_algo' => :'digest_algo',
40
+ :'locality' => :'locality',
41
+ :'organization' => :'organization',
42
+ :'province' => :'province',
43
+ :'self_signed_enabled' => :'self_signed_enabled',
44
+ :'ttl' => :'ttl'
45
+ }
46
+ end
47
+
48
+ # Returns all the JSON keys this model knows about
49
+ def self.acceptable_attributes
50
+ attribute_map.values
51
+ end
52
+
53
+ # Attribute type mapping.
54
+ def self.openapi_types
55
+ {
56
+ :'common_name' => :'String',
57
+ :'country' => :'String',
58
+ :'digest_algo' => :'String',
59
+ :'locality' => :'String',
60
+ :'organization' => :'String',
61
+ :'province' => :'String',
62
+ :'self_signed_enabled' => :'Boolean',
63
+ :'ttl' => :'Integer'
64
+ }
65
+ end
66
+
67
+ # List of attributes with nullable: true
68
+ def self.openapi_nullable
69
+ Set.new([
70
+ ])
71
+ end
72
+
73
+ # Initializes the object
74
+ # @param [Hash] attributes Model attributes in the form of hash
75
+ def initialize(attributes = {})
76
+ if (!attributes.is_a?(Hash))
77
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Akeyless::CertificateTemplateInfo` initialize method"
78
+ end
79
+
80
+ # check to see if the attribute exists and convert string to symbol for hash key
81
+ attributes = attributes.each_with_object({}) { |(k, v), h|
82
+ if (!self.class.attribute_map.key?(k.to_sym))
83
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Akeyless::CertificateTemplateInfo`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
84
+ end
85
+ h[k.to_sym] = v
86
+ }
87
+
88
+ if attributes.key?(:'common_name')
89
+ self.common_name = attributes[:'common_name']
90
+ end
91
+
92
+ if attributes.key?(:'country')
93
+ self.country = attributes[:'country']
94
+ end
95
+
96
+ if attributes.key?(:'digest_algo')
97
+ self.digest_algo = attributes[:'digest_algo']
98
+ end
99
+
100
+ if attributes.key?(:'locality')
101
+ self.locality = attributes[:'locality']
102
+ end
103
+
104
+ if attributes.key?(:'organization')
105
+ self.organization = attributes[:'organization']
106
+ end
107
+
108
+ if attributes.key?(:'province')
109
+ self.province = attributes[:'province']
110
+ end
111
+
112
+ if attributes.key?(:'self_signed_enabled')
113
+ self.self_signed_enabled = attributes[:'self_signed_enabled']
114
+ end
115
+
116
+ if attributes.key?(:'ttl')
117
+ self.ttl = attributes[:'ttl']
118
+ end
119
+ end
120
+
121
+ # Show invalid properties with the reasons. Usually used together with valid?
122
+ # @return Array for valid properties with the reasons
123
+ def list_invalid_properties
124
+ invalid_properties = Array.new
125
+ invalid_properties
126
+ end
127
+
128
+ # Check to see if the all the properties in the model are valid
129
+ # @return true if the model is valid
130
+ def valid?
131
+ true
132
+ end
133
+
134
+ # Checks equality by comparing each attribute.
135
+ # @param [Object] Object to be compared
136
+ def ==(o)
137
+ return true if self.equal?(o)
138
+ self.class == o.class &&
139
+ common_name == o.common_name &&
140
+ country == o.country &&
141
+ digest_algo == o.digest_algo &&
142
+ locality == o.locality &&
143
+ organization == o.organization &&
144
+ province == o.province &&
145
+ self_signed_enabled == o.self_signed_enabled &&
146
+ ttl == o.ttl
147
+ end
148
+
149
+ # @see the `==` method
150
+ # @param [Object] Object to be compared
151
+ def eql?(o)
152
+ self == o
153
+ end
154
+
155
+ # Calculates hash code according to all attributes.
156
+ # @return [Integer] Hash code
157
+ def hash
158
+ [common_name, country, digest_algo, locality, organization, province, self_signed_enabled, ttl].hash
159
+ end
160
+
161
+ # Builds the object from hash
162
+ # @param [Hash] attributes Model attributes in the form of hash
163
+ # @return [Object] Returns the model itself
164
+ def self.build_from_hash(attributes)
165
+ new.build_from_hash(attributes)
166
+ end
167
+
168
+ # Builds the object from hash
169
+ # @param [Hash] attributes Model attributes in the form of hash
170
+ # @return [Object] Returns the model itself
171
+ def build_from_hash(attributes)
172
+ return nil unless attributes.is_a?(Hash)
173
+ attributes = attributes.transform_keys(&:to_sym)
174
+ self.class.openapi_types.each_pair do |key, type|
175
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
176
+ self.send("#{key}=", nil)
177
+ elsif type =~ /\AArray<(.*)>/i
178
+ # check to ensure the input is an array given that the attribute
179
+ # is documented as an array but the input is not
180
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
181
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
182
+ end
183
+ elsif !attributes[self.class.attribute_map[key]].nil?
184
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
185
+ end
186
+ end
187
+
188
+ self
189
+ end
190
+
191
+ # Deserializes the data based on type
192
+ # @param string type Data type
193
+ # @param string value Value to be deserialized
194
+ # @return [Object] Deserialized data
195
+ def _deserialize(type, value)
196
+ case type.to_sym
197
+ when :Time
198
+ Time.parse(value)
199
+ when :Date
200
+ Date.parse(value)
201
+ when :String
202
+ value.to_s
203
+ when :Integer
204
+ value.to_i
205
+ when :Float
206
+ value.to_f
207
+ when :Boolean
208
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
209
+ true
210
+ else
211
+ false
212
+ end
213
+ when :Object
214
+ # generic object (usually a Hash), return directly
215
+ value
216
+ when /\AArray<(?<inner_type>.+)>\z/
217
+ inner_type = Regexp.last_match[:inner_type]
218
+ value.map { |v| _deserialize(inner_type, v) }
219
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
220
+ k_type = Regexp.last_match[:k_type]
221
+ v_type = Regexp.last_match[:v_type]
222
+ {}.tap do |hash|
223
+ value.each do |k, v|
224
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
225
+ end
226
+ end
227
+ else # model
228
+ # models (e.g. Pet) or oneOf
229
+ klass = Akeyless.const_get(type)
230
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
231
+ end
232
+ end
233
+
234
+ # Returns the string representation of the object
235
+ # @return [String] String presentation of the object
236
+ def to_s
237
+ to_hash.to_s
238
+ end
239
+
240
+ # to_body is an alias to to_hash (backward compatibility)
241
+ # @return [Hash] Returns the object in the form of hash
242
+ def to_body
243
+ to_hash
244
+ end
245
+
246
+ # Returns the object in the form of hash
247
+ # @return [Hash] Returns the object in the form of hash
248
+ def to_hash
249
+ hash = {}
250
+ self.class.attribute_map.each_pair do |attr, param|
251
+ value = self.send(attr)
252
+ if value.nil?
253
+ is_nullable = self.class.openapi_nullable.include?(attr)
254
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
255
+ end
256
+
257
+ hash[param] = _to_hash(value)
258
+ end
259
+ hash
260
+ end
261
+
262
+ # Outputs non-array value in the form of hash
263
+ # For object, use to_hash. Otherwise, just return the value
264
+ # @param [Object] value Any valid value
265
+ # @return [Hash] Returns the value in the form of hash
266
+ def _to_hash(value)
267
+ if value.is_a?(Array)
268
+ value.compact.map { |v| _to_hash(v) }
269
+ elsif value.is_a?(Hash)
270
+ {}.tap do |hash|
271
+ value.each { |k, v| hash[k] = _to_hash(v) }
272
+ end
273
+ elsif value.respond_to? :to_hash
274
+ value.to_hash
275
+ else
276
+ value
277
+ end
278
+ end
279
+
280
+ end
281
+
282
+ end
@@ -22,12 +22,36 @@ module Akeyless
22
22
  # Certificate in a PEM format.
23
23
  attr_accessor :cert_file_data
24
24
 
25
+ # Common name for the generated certificate. Relevant only for generate-self-signed-certificate.
26
+ attr_accessor :certificate_common_name
27
+
28
+ # Country name for the generated certificate. Relevant only for generate-self-signed-certificate.
29
+ attr_accessor :certificate_country
30
+
31
+ # Digest algorithm to be used for the certificate key signing. Currently, we support only \"sha256\" so we hide this option for CLI.
32
+ attr_accessor :certificate_digest_algo
33
+
34
+ # Locality for the generated certificate. Relevant only for generate-self-signed-certificate.
35
+ attr_accessor :certificate_locality
36
+
37
+ # Organization name for the generated certificate. Relevant only for generate-self-signed-certificate.
38
+ attr_accessor :certificate_organization
39
+
40
+ # Province name for the generated certificate. Relevant only for generate-self-signed-certificate.
41
+ attr_accessor :certificate_province
42
+
43
+ # TTL in days for the generated certificate. Required only for generate-self-signed-certificate.
44
+ attr_accessor :certificate_ttl
45
+
25
46
  # Protection from accidental deletion of this item [true/false]
26
47
  attr_accessor :delete_protection
27
48
 
28
49
  # Description of the object
29
50
  attr_accessor :description
30
51
 
52
+ # Whether to generate a self signed certificate with the key. If set, --certificate-ttl must be provided.
53
+ attr_accessor :generate_self_signed_certificate
54
+
31
55
  # gpg alg: Relevant only if GPG key type selected; options: [RSA1024, RSA2048, RSA3072, RSA4096, Ed25519]
32
56
  attr_accessor :gpg_alg
33
57
 
@@ -60,8 +84,16 @@ module Akeyless
60
84
  {
61
85
  :'alg' => :'alg',
62
86
  :'cert_file_data' => :'cert-file-data',
87
+ :'certificate_common_name' => :'certificate-common-name',
88
+ :'certificate_country' => :'certificate-country',
89
+ :'certificate_digest_algo' => :'certificate-digest-algo',
90
+ :'certificate_locality' => :'certificate-locality',
91
+ :'certificate_organization' => :'certificate-organization',
92
+ :'certificate_province' => :'certificate-province',
93
+ :'certificate_ttl' => :'certificate-ttl',
63
94
  :'delete_protection' => :'delete_protection',
64
95
  :'description' => :'description',
96
+ :'generate_self_signed_certificate' => :'generate-self-signed-certificate',
65
97
  :'gpg_alg' => :'gpg-alg',
66
98
  :'json' => :'json',
67
99
  :'key_data' => :'key-data',
@@ -84,8 +116,16 @@ module Akeyless
84
116
  {
85
117
  :'alg' => :'String',
86
118
  :'cert_file_data' => :'String',
119
+ :'certificate_common_name' => :'String',
120
+ :'certificate_country' => :'String',
121
+ :'certificate_digest_algo' => :'String',
122
+ :'certificate_locality' => :'String',
123
+ :'certificate_organization' => :'String',
124
+ :'certificate_province' => :'String',
125
+ :'certificate_ttl' => :'Integer',
87
126
  :'delete_protection' => :'String',
88
127
  :'description' => :'String',
128
+ :'generate_self_signed_certificate' => :'Boolean',
89
129
  :'gpg_alg' => :'String',
90
130
  :'json' => :'Boolean',
91
131
  :'key_data' => :'String',
@@ -127,6 +167,34 @@ module Akeyless
127
167
  self.cert_file_data = attributes[:'cert_file_data']
128
168
  end
129
169
 
170
+ if attributes.key?(:'certificate_common_name')
171
+ self.certificate_common_name = attributes[:'certificate_common_name']
172
+ end
173
+
174
+ if attributes.key?(:'certificate_country')
175
+ self.certificate_country = attributes[:'certificate_country']
176
+ end
177
+
178
+ if attributes.key?(:'certificate_digest_algo')
179
+ self.certificate_digest_algo = attributes[:'certificate_digest_algo']
180
+ end
181
+
182
+ if attributes.key?(:'certificate_locality')
183
+ self.certificate_locality = attributes[:'certificate_locality']
184
+ end
185
+
186
+ if attributes.key?(:'certificate_organization')
187
+ self.certificate_organization = attributes[:'certificate_organization']
188
+ end
189
+
190
+ if attributes.key?(:'certificate_province')
191
+ self.certificate_province = attributes[:'certificate_province']
192
+ end
193
+
194
+ if attributes.key?(:'certificate_ttl')
195
+ self.certificate_ttl = attributes[:'certificate_ttl']
196
+ end
197
+
130
198
  if attributes.key?(:'delete_protection')
131
199
  self.delete_protection = attributes[:'delete_protection']
132
200
  end
@@ -135,6 +203,10 @@ module Akeyless
135
203
  self.description = attributes[:'description']
136
204
  end
137
205
 
206
+ if attributes.key?(:'generate_self_signed_certificate')
207
+ self.generate_self_signed_certificate = attributes[:'generate_self_signed_certificate']
208
+ end
209
+
138
210
  if attributes.key?(:'gpg_alg')
139
211
  self.gpg_alg = attributes[:'gpg_alg']
140
212
  end
@@ -206,8 +278,16 @@ module Akeyless
206
278
  self.class == o.class &&
207
279
  alg == o.alg &&
208
280
  cert_file_data == o.cert_file_data &&
281
+ certificate_common_name == o.certificate_common_name &&
282
+ certificate_country == o.certificate_country &&
283
+ certificate_digest_algo == o.certificate_digest_algo &&
284
+ certificate_locality == o.certificate_locality &&
285
+ certificate_organization == o.certificate_organization &&
286
+ certificate_province == o.certificate_province &&
287
+ certificate_ttl == o.certificate_ttl &&
209
288
  delete_protection == o.delete_protection &&
210
289
  description == o.description &&
290
+ generate_self_signed_certificate == o.generate_self_signed_certificate &&
211
291
  gpg_alg == o.gpg_alg &&
212
292
  json == o.json &&
213
293
  key_data == o.key_data &&
@@ -228,7 +308,7 @@ module Akeyless
228
308
  # Calculates hash code according to all attributes.
229
309
  # @return [Integer] Hash code
230
310
  def hash
231
- [alg, cert_file_data, delete_protection, description, gpg_alg, json, key_data, metadata, name, protection_key_name, tags, token, uid_token].hash
311
+ [alg, cert_file_data, certificate_common_name, certificate_country, certificate_digest_algo, certificate_locality, certificate_organization, certificate_province, certificate_ttl, delete_protection, description, generate_self_signed_certificate, gpg_alg, json, key_data, metadata, name, protection_key_name, tags, token, uid_token].hash
232
312
  end
233
313
 
234
314
  # Builds the object from hash