lib/v20190118/models.rb



# frozen_string_literal: true

# Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

module TencentCloud
  module Kms
    module V20190118
      # 算法的名称 和 标识
      class AlgorithmInfo < TencentCloud::Common::AbstractModel
        # @param KeyUsage: 算法的标识
        # @type KeyUsage: String
        # @param Algorithm: 算法的名称
        # @type Algorithm: String

        attr_accessor :KeyUsage, :Algorithm

        def initialize(keyusage=nil, algorithm=nil)
          @KeyUsage = keyusage
          @Algorithm = algorithm
        end

        def deserialize(params)
          @KeyUsage = params['KeyUsage']
          @Algorithm = params['Algorithm']
        end
      end

      # ArchiveKey请求参数结构体
      class ArchiveKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # ArchiveKey返回参数结构体
      class ArchiveKeyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # AsymmetricRsaDecrypt请求参数结构体
      class AsymmetricRsaDecryptRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的唯一标识
        # @type KeyId: String
        # @param Ciphertext: 使用PublicKey加密的密文,Base64编码
        # @type Ciphertext: String
        # @param Algorithm: 在使用公钥加密时对应的算法:当前支持RSAES_PKCS1_V1_5、RSAES_OAEP_SHA_1、RSAES_OAEP_SHA_256
        # @type Algorithm: String

        attr_accessor :KeyId, :Ciphertext, :Algorithm

        def initialize(keyid=nil, ciphertext=nil, algorithm=nil)
          @KeyId = keyid
          @Ciphertext = ciphertext
          @Algorithm = algorithm
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @Ciphertext = params['Ciphertext']
          @Algorithm = params['Algorithm']
        end
      end

      # AsymmetricRsaDecrypt返回参数结构体
      class AsymmetricRsaDecryptResponse < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的唯一标识
        # @type KeyId: String
        # @param Plaintext: 解密后的明文,base64编码
        # @type Plaintext: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyId, :Plaintext, :RequestId

        def initialize(keyid=nil, plaintext=nil, requestid=nil)
          @KeyId = keyid
          @Plaintext = plaintext
          @RequestId = requestid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @Plaintext = params['Plaintext']
          @RequestId = params['RequestId']
        end
      end

      # AsymmetricSm2Decrypt请求参数结构体
      class AsymmetricSm2DecryptRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的唯一标识
        # @type KeyId: String
        # @param Ciphertext: 使用PublicKey加密的密文,Base64编码,原始密文格式需要为C1C3C2_ASN1。原始密文长度不能超过256字节。
        # @type Ciphertext: String

        attr_accessor :KeyId, :Ciphertext

        def initialize(keyid=nil, ciphertext=nil)
          @KeyId = keyid
          @Ciphertext = ciphertext
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @Ciphertext = params['Ciphertext']
        end
      end

      # AsymmetricSm2Decrypt返回参数结构体
      class AsymmetricSm2DecryptResponse < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的唯一标识
        # @type KeyId: String
        # @param Plaintext: 解密后的明文,base64编码
        # @type Plaintext: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyId, :Plaintext, :RequestId

        def initialize(keyid=nil, plaintext=nil, requestid=nil)
          @KeyId = keyid
          @Plaintext = plaintext
          @RequestId = requestid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @Plaintext = params['Plaintext']
          @RequestId = params['RequestId']
        end
      end

      # BindCloudResource请求参数结构体
      class BindCloudResourceRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: cmk的ID
        # @type KeyId: String
        # @param ProductId: 云产品的唯一性标识符
        # @type ProductId: String
        # @param ResourceId: 资源/实例ID,由调用方根据自己的云产品特征来定义,以字符串形式做存储。
        # @type ResourceId: String

        attr_accessor :KeyId, :ProductId, :ResourceId

        def initialize(keyid=nil, productid=nil, resourceid=nil)
          @KeyId = keyid
          @ProductId = productid
          @ResourceId = resourceid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @ProductId = params['ProductId']
          @ResourceId = params['ResourceId']
        end
      end

      # BindCloudResource返回参数结构体
      class BindCloudResourceResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # CancelKeyArchive请求参数结构体
      class CancelKeyArchiveRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # CancelKeyArchive返回参数结构体
      class CancelKeyArchiveResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # CancelKeyDeletion请求参数结构体
      class CancelKeyDeletionRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 需要被取消删除的CMK的唯一标志
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # CancelKeyDeletion返回参数结构体
      class CancelKeyDeletionResponse < TencentCloud::Common::AbstractModel
        # @param KeyId: 唯一标志被取消删除的CMK。
        # @type KeyId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyId, :RequestId

        def initialize(keyid=nil, requestid=nil)
          @KeyId = keyid
          @RequestId = requestid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @RequestId = params['RequestId']
        end
      end

      # CreateKey请求参数结构体
      class CreateKeyRequest < TencentCloud::Common::AbstractModel
        # @param Alias: 作为密钥更容易辨识,更容易被人看懂的别名, 不可为空,1-60个字母数字 - _ 的组合,首字符必须为字母或者数字。以 kms- 作为前缀的用于云产品使用,Alias 不可重复。
        # @type Alias: String
        # @param Description: CMK 的描述,最大1024字节
        # @type Description: String
        # @param KeyUsage: 指定key的用途,默认为  "ENCRYPT_DECRYPT" 表示创建对称加解密密钥,其它支持用途 “ASYMMETRIC_DECRYPT_RSA_2048” 表示创建用于加解密的RSA2048非对称密钥,“ASYMMETRIC_DECRYPT_SM2” 表示创建用于加解密的SM2非对称密钥,“ASYMMETRIC_SIGN_VERIFY_SM2” 表示创建用于签名验签的SM2非对称密钥,“ASYMMETRIC_SIGN_VERIFY_ECC” 表示创建用于签名验签的ECC非对称密钥,“ASYMMETRIC_SIGN_VERIFY_RSA_2048” 表示创建用于签名验签的RSA_2048非对称密钥,“ASYMMETRIC_SIGN_VERIFY_ECDSA384”表示创建用于签名验签的 ECDSA384 非对称秘钥。完整的秘钥用途与算法支持列表可通过 ListAlgorithms 接口获取。
        # @type KeyUsage: String
        # @param Type: 指定key类型,默认为1,1表示默认类型,由KMS创建CMK密钥,2 表示EXTERNAL 类型,该类型需要用户导入密钥材料,参考 GetParametersForImport 和 ImportKeyMaterial 接口
        # @type Type: Integer
        # @param Tags: 标签列表
        # @type Tags: Array
        # @param HsmClusterId: KMS 高级版对应的 HSM 集群 ID(仅对 KMS 独占版/托管版服务实例有效)。
        # @type HsmClusterId: String

        attr_accessor :Alias, :Description, :KeyUsage, :Type, :Tags, :HsmClusterId

        def initialize(_alias=nil, description=nil, keyusage=nil, type=nil, tags=nil, hsmclusterid=nil)
          @Alias = _alias
          @Description = description
          @KeyUsage = keyusage
          @Type = type
          @Tags = tags
          @HsmClusterId = hsmclusterid
        end

        def deserialize(params)
          @Alias = params['Alias']
          @Description = params['Description']
          @KeyUsage = params['KeyUsage']
          @Type = params['Type']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @HsmClusterId = params['HsmClusterId']
        end
      end

      # CreateKey返回参数结构体
      class CreateKeyResponse < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的全局唯一标识符
        # @type KeyId: String
        # @param Alias: 作为密钥更容易辨识,更容易被人看懂的别名
        # @type Alias: String
        # @param CreateTime: 密钥创建时间,unix时间戳
        # @type CreateTime: Integer
        # @param Description: CMK的描述
        # @type Description: String
        # @param KeyState: CMK的状态
        # @type KeyState: String
        # @param KeyUsage: CMK的用途
        # @type KeyUsage: String
        # @param TagCode: 标签操作的返回码. 0: 成功;1: 内部错误;2: 业务处理错误
        # @type TagCode: Integer
        # @param TagMsg: 标签操作的返回信息
        # @type TagMsg: String
        # @param HsmClusterId: HSM 集群 ID(仅对 KMS 独占版/托管版服务实例有效)
        # @type HsmClusterId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyId, :Alias, :CreateTime, :Description, :KeyState, :KeyUsage, :TagCode, :TagMsg, :HsmClusterId, :RequestId

        def initialize(keyid=nil, _alias=nil, createtime=nil, description=nil, keystate=nil, keyusage=nil, tagcode=nil, tagmsg=nil, hsmclusterid=nil, requestid=nil)
          @KeyId = keyid
          @Alias = _alias
          @CreateTime = createtime
          @Description = description
          @KeyState = keystate
          @KeyUsage = keyusage
          @TagCode = tagcode
          @TagMsg = tagmsg
          @HsmClusterId = hsmclusterid
          @RequestId = requestid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @Alias = params['Alias']
          @CreateTime = params['CreateTime']
          @Description = params['Description']
          @KeyState = params['KeyState']
          @KeyUsage = params['KeyUsage']
          @TagCode = params['TagCode']
          @TagMsg = params['TagMsg']
          @HsmClusterId = params['HsmClusterId']
          @RequestId = params['RequestId']
        end
      end

      # CreateWhiteBoxKey请求参数结构体
      class CreateWhiteBoxKeyRequest < TencentCloud::Common::AbstractModel
        # @param Alias: 作为密钥更容易辨识,更容易被人看懂的别名, 不可为空,1-60个字母数字 - _ 的组合,首字符必须为字母或者数字。Alias不可重复。
        # @type Alias: String
        # @param Algorithm: 创建密钥所有的算法类型,支持的取值:AES_256,SM4
        # @type Algorithm: String
        # @param Description: 密钥的描述,最大1024字节
        # @type Description: String
        # @param Tags: 标签列表
        # @type Tags: Array

        attr_accessor :Alias, :Algorithm, :Description, :Tags

        def initialize(_alias=nil, algorithm=nil, description=nil, tags=nil)
          @Alias = _alias
          @Algorithm = algorithm
          @Description = description
          @Tags = tags
        end

        def deserialize(params)
          @Alias = params['Alias']
          @Algorithm = params['Algorithm']
          @Description = params['Description']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
        end
      end

      # CreateWhiteBoxKey返回参数结构体
      class CreateWhiteBoxKeyResponse < TencentCloud::Common::AbstractModel
        # @param EncryptKey: 用于加密的密钥,base64编码
        # @type EncryptKey: String
        # @param DecryptKey: 用于解密的密钥,base64编码
        # @type DecryptKey: String
        # @param KeyId: 白盒密钥的全局唯一标识符
        # @type KeyId: String
        # @param TagCode: 标签操作的返回码. 0: 成功;1: 内部错误;2: 业务处理错误
        # @type TagCode: Integer
        # @param TagMsg: 标签操作的返回信息
        # @type TagMsg: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :EncryptKey, :DecryptKey, :KeyId, :TagCode, :TagMsg, :RequestId

        def initialize(encryptkey=nil, decryptkey=nil, keyid=nil, tagcode=nil, tagmsg=nil, requestid=nil)
          @EncryptKey = encryptkey
          @DecryptKey = decryptkey
          @KeyId = keyid
          @TagCode = tagcode
          @TagMsg = tagmsg
          @RequestId = requestid
        end

        def deserialize(params)
          @EncryptKey = params['EncryptKey']
          @DecryptKey = params['DecryptKey']
          @KeyId = params['KeyId']
          @TagCode = params['TagCode']
          @TagMsg = params['TagMsg']
          @RequestId = params['RequestId']
        end
      end

      # Decrypt请求参数结构体
      class DecryptRequest < TencentCloud::Common::AbstractModel
        # @param CiphertextBlob: 待解密的密文数据
        # @type CiphertextBlob: String
        # @param EncryptionContext: key/value对的json字符串,如果Encrypt指定了该参数,则在调用Decrypt API时需要提供同样的参数,最大支持1024字符
        # @type EncryptionContext: String
        # @param EncryptionPublicKey: PEM 格式公钥字符串,支持 RSA2048 和 SM2 公钥,用于对返回数据中的 Plaintext 值进行加密。若为空,则不对 Plaintext 值加密。
        # @type EncryptionPublicKey: String
        # @param EncryptionAlgorithm: 非对称加密算法,配合 EncryptionPublicKey 对返回数据进行加密。目前支持:SM2(以 C1C3C2 格式返回密文),SM2_C1C3C2_ASN1 (以 C1C3C2 ASN1 格式返回密文),RSAES_PKCS1_V1_5,RSAES_OAEP_SHA_1,RSAES_OAEP_SHA_256。若为空,则默认为 SM2。
        # @type EncryptionAlgorithm: String

        attr_accessor :CiphertextBlob, :EncryptionContext, :EncryptionPublicKey, :EncryptionAlgorithm

        def initialize(ciphertextblob=nil, encryptioncontext=nil, encryptionpublickey=nil, encryptionalgorithm=nil)
          @CiphertextBlob = ciphertextblob
          @EncryptionContext = encryptioncontext
          @EncryptionPublicKey = encryptionpublickey
          @EncryptionAlgorithm = encryptionalgorithm
        end

        def deserialize(params)
          @CiphertextBlob = params['CiphertextBlob']
          @EncryptionContext = params['EncryptionContext']
          @EncryptionPublicKey = params['EncryptionPublicKey']
          @EncryptionAlgorithm = params['EncryptionAlgorithm']
        end
      end

      # Decrypt返回参数结构体
      class DecryptResponse < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的全局唯一标识
        # @type KeyId: String
        # @param Plaintext: 若调用时未提供 EncryptionPublicKey,该字段值为 Base64 编码的明文,需进行 Base64 解码以获取明文。
        # 若调用时提供了 EncryptionPublicKey,则该字段值为使用 EncryptionPublicKey 公钥进行非对称加密后的 Base64 编码的密文。需在 Base64 解码后,使用用户上传的公钥对应的私钥进行进一步解密,以获取明文。
        # @type Plaintext: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyId, :Plaintext, :RequestId

        def initialize(keyid=nil, plaintext=nil, requestid=nil)
          @KeyId = keyid
          @Plaintext = plaintext
          @RequestId = requestid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @Plaintext = params['Plaintext']
          @RequestId = params['RequestId']
        end
      end

      # DeleteImportedKeyMaterial请求参数结构体
      class DeleteImportedKeyMaterialRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 指定需要删除密钥材料的EXTERNAL CMK。
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # DeleteImportedKeyMaterial返回参数结构体
      class DeleteImportedKeyMaterialResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DeleteWhiteBoxKey请求参数结构体
      class DeleteWhiteBoxKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 白盒密钥的全局唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # DeleteWhiteBoxKey返回参数结构体
      class DeleteWhiteBoxKeyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DescribeKey请求参数结构体
      class DescribeKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK全局唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # DescribeKey返回参数结构体
      class DescribeKeyResponse < TencentCloud::Common::AbstractModel
        # @param KeyMetadata: 密钥属性信息
        # @type KeyMetadata: :class:`Tencentcloud::Kms.v20190118.models.KeyMetadata`
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyMetadata, :RequestId

        def initialize(keymetadata=nil, requestid=nil)
          @KeyMetadata = keymetadata
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['KeyMetadata'].nil?
            @KeyMetadata = KeyMetadata.new
            @KeyMetadata.deserialize(params['KeyMetadata'])
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeKeys请求参数结构体
      class DescribeKeysRequest < TencentCloud::Common::AbstractModel
        # @param KeyIds: 查询CMK的ID列表,批量查询一次最多支持100个KeyId
        # @type KeyIds: Array

        attr_accessor :KeyIds

        def initialize(keyids=nil)
          @KeyIds = keyids
        end

        def deserialize(params)
          @KeyIds = params['KeyIds']
        end
      end

      # DescribeKeys返回参数结构体
      class DescribeKeysResponse < TencentCloud::Common::AbstractModel
        # @param KeyMetadatas: 返回的属性信息列表
        # @type KeyMetadatas: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyMetadatas, :RequestId

        def initialize(keymetadatas=nil, requestid=nil)
          @KeyMetadatas = keymetadatas
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['KeyMetadatas'].nil?
            @KeyMetadatas = []
            params['KeyMetadatas'].each do |i|
              keymetadata_tmp = KeyMetadata.new
              keymetadata_tmp.deserialize(i)
              @KeyMetadatas << keymetadata_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeWhiteBoxDecryptKey请求参数结构体
      class DescribeWhiteBoxDecryptKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 白盒密钥的全局唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # DescribeWhiteBoxDecryptKey返回参数结构体
      class DescribeWhiteBoxDecryptKeyResponse < TencentCloud::Common::AbstractModel
        # @param DecryptKey: 白盒解密密钥,base64编码
        # @type DecryptKey: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :DecryptKey, :RequestId

        def initialize(decryptkey=nil, requestid=nil)
          @DecryptKey = decryptkey
          @RequestId = requestid
        end

        def deserialize(params)
          @DecryptKey = params['DecryptKey']
          @RequestId = params['RequestId']
        end
      end

      # DescribeWhiteBoxDeviceFingerprints请求参数结构体
      class DescribeWhiteBoxDeviceFingerprintsRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 白盒密钥ID
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # DescribeWhiteBoxDeviceFingerprints返回参数结构体
      class DescribeWhiteBoxDeviceFingerprintsResponse < TencentCloud::Common::AbstractModel
        # @param DeviceFingerprints: 设备指纹列表
        # @type DeviceFingerprints: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :DeviceFingerprints, :RequestId

        def initialize(devicefingerprints=nil, requestid=nil)
          @DeviceFingerprints = devicefingerprints
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['DeviceFingerprints'].nil?
            @DeviceFingerprints = []
            params['DeviceFingerprints'].each do |i|
              devicefingerprint_tmp = DeviceFingerprint.new
              devicefingerprint_tmp.deserialize(i)
              @DeviceFingerprints << devicefingerprint_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeWhiteBoxKeyDetails请求参数结构体
      class DescribeWhiteBoxKeyDetailsRequest < TencentCloud::Common::AbstractModel
        # @param KeyStatus: 过滤条件:密钥的状态,0:disabled,1:enabled
        # @type KeyStatus: Integer
        # @param Offset: 含义跟 SQL 查询的 Offset 一致,表示本次获取从按一定顺序排列数组的第 Offset 个元素开始,缺省为0
        # @type Offset: Integer
        # @param Limit: 含义跟 SQL 查询的 Limit 一致,表示本次最多获取 Limit 个元素。缺省值为0, 表示不分页
        # @type Limit: Integer
        # @param TagFilters: 标签过滤条件
        # @type TagFilters: Array

        attr_accessor :KeyStatus, :Offset, :Limit, :TagFilters

        def initialize(keystatus=nil, offset=nil, limit=nil, tagfilters=nil)
          @KeyStatus = keystatus
          @Offset = offset
          @Limit = limit
          @TagFilters = tagfilters
        end

        def deserialize(params)
          @KeyStatus = params['KeyStatus']
          @Offset = params['Offset']
          @Limit = params['Limit']
          unless params['TagFilters'].nil?
            @TagFilters = []
            params['TagFilters'].each do |i|
              tagfilter_tmp = TagFilter.new
              tagfilter_tmp.deserialize(i)
              @TagFilters << tagfilter_tmp
            end
          end
        end
      end

      # DescribeWhiteBoxKeyDetails返回参数结构体
      class DescribeWhiteBoxKeyDetailsResponse < TencentCloud::Common::AbstractModel
        # @param KeyInfos: 白盒密钥信息列表。
        # @type KeyInfos: Array
        # @param TotalCount: 白盒密钥总数。
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyInfos, :TotalCount, :RequestId

        def initialize(keyinfos=nil, totalcount=nil, requestid=nil)
          @KeyInfos = keyinfos
          @TotalCount = totalcount
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['KeyInfos'].nil?
            @KeyInfos = []
            params['KeyInfos'].each do |i|
              whiteboxkeyinfo_tmp = WhiteboxKeyInfo.new
              whiteboxkeyinfo_tmp.deserialize(i)
              @KeyInfos << whiteboxkeyinfo_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @RequestId = params['RequestId']
        end
      end

      # DescribeWhiteBoxKey请求参数结构体
      class DescribeWhiteBoxKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 白盒密钥的全局唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # DescribeWhiteBoxKey返回参数结构体
      class DescribeWhiteBoxKeyResponse < TencentCloud::Common::AbstractModel
        # @param KeyInfo: 白盒密钥信息
        # @type KeyInfo: :class:`Tencentcloud::Kms.v20190118.models.WhiteboxKeyInfo`
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyInfo, :RequestId

        def initialize(keyinfo=nil, requestid=nil)
          @KeyInfo = keyinfo
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['KeyInfo'].nil?
            @KeyInfo = WhiteboxKeyInfo.new
            @KeyInfo.deserialize(params['KeyInfo'])
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeWhiteBoxServiceStatus请求参数结构体
      class DescribeWhiteBoxServiceStatusRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # DescribeWhiteBoxServiceStatus返回参数结构体
      class DescribeWhiteBoxServiceStatusResponse < TencentCloud::Common::AbstractModel
        # @param ServiceEnabled: 用户的白盒密钥服务是否可用
        # @type ServiceEnabled: Boolean
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ServiceEnabled, :RequestId

        def initialize(serviceenabled=nil, requestid=nil)
          @ServiceEnabled = serviceenabled
          @RequestId = requestid
        end

        def deserialize(params)
          @ServiceEnabled = params['ServiceEnabled']
          @RequestId = params['RequestId']
        end
      end

      # 设备指纹
      class DeviceFingerprint < TencentCloud::Common::AbstractModel
        # @param Identity: 指纹信息,由设备指纹采集工具采集获得,格式满足正则表达式:^[0-9a-f]{8}[\-][0-9a-f]{14}[\-][0-9a-f]{14}[\-][0-9a-f]{14}[\-][0-9a-f]{16}$
        # @type Identity: String
        # @param Description: 描述信息,如:IP,设备名称等,最大1024字节
        # @type Description: String

        attr_accessor :Identity, :Description

        def initialize(identity=nil, description=nil)
          @Identity = identity
          @Description = description
        end

        def deserialize(params)
          @Identity = params['Identity']
          @Description = params['Description']
        end
      end

      # DisableKey请求参数结构体
      class DisableKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # DisableKey返回参数结构体
      class DisableKeyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DisableKeyRotation请求参数结构体
      class DisableKeyRotationRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # DisableKeyRotation返回参数结构体
      class DisableKeyRotationResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DisableKeys请求参数结构体
      class DisableKeysRequest < TencentCloud::Common::AbstractModel
        # @param KeyIds: 需要批量禁用的CMK Id 列表,CMK数量最大支持100
        # @type KeyIds: Array

        attr_accessor :KeyIds

        def initialize(keyids=nil)
          @KeyIds = keyids
        end

        def deserialize(params)
          @KeyIds = params['KeyIds']
        end
      end

      # DisableKeys返回参数结构体
      class DisableKeysResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DisableWhiteBoxKey请求参数结构体
      class DisableWhiteBoxKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 白盒密钥的全局唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # DisableWhiteBoxKey返回参数结构体
      class DisableWhiteBoxKeyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DisableWhiteBoxKeys请求参数结构体
      class DisableWhiteBoxKeysRequest < TencentCloud::Common::AbstractModel
        # @param KeyIds: 白盒密钥的全局唯一标识符列表。注意:要确保所有提供的KeyId是格式有效的,没有重复,个数不超过50个,并且都是有效存在的。
        # @type KeyIds: Array

        attr_accessor :KeyIds

        def initialize(keyids=nil)
          @KeyIds = keyids
        end

        def deserialize(params)
          @KeyIds = params['KeyIds']
        end
      end

      # DisableWhiteBoxKeys返回参数结构体
      class DisableWhiteBoxKeysResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # EnableKey请求参数结构体
      class EnableKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # EnableKey返回参数结构体
      class EnableKeyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # EnableKeyRotation请求参数结构体
      class EnableKeyRotationRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK唯一标识符
        # @type KeyId: String
        # @param RotateDays: 密钥轮转周期,单位天,允许范围 7 ~ 365,默认值 365。
        # @type RotateDays: Integer

        attr_accessor :KeyId, :RotateDays

        def initialize(keyid=nil, rotatedays=nil)
          @KeyId = keyid
          @RotateDays = rotatedays
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @RotateDays = params['RotateDays']
        end
      end

      # EnableKeyRotation返回参数结构体
      class EnableKeyRotationResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # EnableKeys请求参数结构体
      class EnableKeysRequest < TencentCloud::Common::AbstractModel
        # @param KeyIds: 需要批量启用的CMK Id 列表, CMK数量最大支持100
        # @type KeyIds: Array

        attr_accessor :KeyIds

        def initialize(keyids=nil)
          @KeyIds = keyids
        end

        def deserialize(params)
          @KeyIds = params['KeyIds']
        end
      end

      # EnableKeys返回参数结构体
      class EnableKeysResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # EnableWhiteBoxKey请求参数结构体
      class EnableWhiteBoxKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 白盒密钥的全局唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # EnableWhiteBoxKey返回参数结构体
      class EnableWhiteBoxKeyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # EnableWhiteBoxKeys请求参数结构体
      class EnableWhiteBoxKeysRequest < TencentCloud::Common::AbstractModel
        # @param KeyIds: 白盒密钥的全局唯一标识符列表。注意:要确保所有提供的KeyId是格式有效的,没有重复,个数不超过50个,并且都是有效存在的。
        # @type KeyIds: Array

        attr_accessor :KeyIds

        def initialize(keyids=nil)
          @KeyIds = keyids
        end

        def deserialize(params)
          @KeyIds = params['KeyIds']
        end
      end

      # EnableWhiteBoxKeys返回参数结构体
      class EnableWhiteBoxKeysResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # EncryptByWhiteBox请求参数结构体
      class EncryptByWhiteBoxRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 白盒密钥的全局唯一标识符
        # @type KeyId: String
        # @param PlainText: 待加密的文本, base64编码,文本的原始长度最大不超过4KB
        # @type PlainText: String
        # @param InitializationVector: 初始化向量,大小为 16 Bytes,加密算法会使用到, base64编码;如果不传,则由后端服务随机生成。用户需要自行保存该值,作为解密的参数。
        # @type InitializationVector: String

        attr_accessor :KeyId, :PlainText, :InitializationVector

        def initialize(keyid=nil, plaintext=nil, initializationvector=nil)
          @KeyId = keyid
          @PlainText = plaintext
          @InitializationVector = initializationvector
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @PlainText = params['PlainText']
          @InitializationVector = params['InitializationVector']
        end
      end

      # EncryptByWhiteBox返回参数结构体
      class EncryptByWhiteBoxResponse < TencentCloud::Common::AbstractModel
        # @param InitializationVector: 初始化向量,加密算法会使用到, base64编码。如果由调用方在入参中传入,则原样返回。如果调用方没有传入,则后端服务随机生成,并返回
        # @type InitializationVector: String
        # @param CipherText: 加密后的密文,base64编码
        # @type CipherText: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :InitializationVector, :CipherText, :RequestId

        def initialize(initializationvector=nil, ciphertext=nil, requestid=nil)
          @InitializationVector = initializationvector
          @CipherText = ciphertext
          @RequestId = requestid
        end

        def deserialize(params)
          @InitializationVector = params['InitializationVector']
          @CipherText = params['CipherText']
          @RequestId = params['RequestId']
        end
      end

      # Encrypt请求参数结构体
      class EncryptRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 调用CreateKey生成的CMK全局唯一标识符
        # @type KeyId: String
        # @param Plaintext: 被加密的明文数据,该字段必须使用base64编码,原文最大长度支持4K
        # @type Plaintext: String
        # @param EncryptionContext: key/value对的json字符串,如果指定了该参数,则在调用Decrypt API时需要提供同样的参数,最大支持1024个字符
        # @type EncryptionContext: String

        attr_accessor :KeyId, :Plaintext, :EncryptionContext

        def initialize(keyid=nil, plaintext=nil, encryptioncontext=nil)
          @KeyId = keyid
          @Plaintext = plaintext
          @EncryptionContext = encryptioncontext
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @Plaintext = params['Plaintext']
          @EncryptionContext = params['EncryptionContext']
        end
      end

      # Encrypt返回参数结构体
      class EncryptResponse < TencentCloud::Common::AbstractModel
        # @param CiphertextBlob: 加密后的密文,base64编码。注意:本字段中打包了密文和密钥的相关信息,不是对明文的直接加密结果,只有将该字段作为Decrypt接口的输入参数,才可以解密出原文。
        # @type CiphertextBlob: String
        # @param KeyId: 加密使用的CMK的全局唯一标识
        # @type KeyId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :CiphertextBlob, :KeyId, :RequestId

        def initialize(ciphertextblob=nil, keyid=nil, requestid=nil)
          @CiphertextBlob = ciphertextblob
          @KeyId = keyid
          @RequestId = requestid
        end

        def deserialize(params)
          @CiphertextBlob = params['CiphertextBlob']
          @KeyId = params['KeyId']
          @RequestId = params['RequestId']
        end
      end

      # GenerateDataKey请求参数结构体
      class GenerateDataKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK全局唯一标识符
        # @type KeyId: String
        # @param KeySpec: 指定生成Datakey的加密算法以及Datakey大小,AES_128或者AES_256。KeySpec 和 NumberOfBytes 必须指定一个
        # @type KeySpec: String
        # @param NumberOfBytes: 生成的DataKey的长度,同时指定NumberOfBytes和KeySpec时,以NumberOfBytes为准。最小值为1, 最大值为1024。KeySpec 和 NumberOfBytes 必须指定一个
        # @type NumberOfBytes: Integer
        # @param EncryptionContext: key/value对的json字符串,如果使用该字段,则返回的DataKey在解密时需要填入相同的字符串
        # @type EncryptionContext: String
        # @param EncryptionPublicKey: PEM 格式公钥字符串,支持 RSA2048 和 SM2 公钥,用于对返回数据中的 Plaintext 值进行加密。若为空,则不对 Plaintext 值加密。
        # @type EncryptionPublicKey: String
        # @param EncryptionAlgorithm: 非对称加密算法,配合 EncryptionPublicKey 对返回数据进行加密。目前支持:SM2(以 C1C3C2 格式返回密文),SM2_C1C3C2_ASN1 (以 C1C3C2 ASN1 格式返回密文),RSAES_PKCS1_V1_5,RSAES_OAEP_SHA_1,RSAES_OAEP_SHA_256。若为空,则默认为 SM2。
        # @type EncryptionAlgorithm: String

        attr_accessor :KeyId, :KeySpec, :NumberOfBytes, :EncryptionContext, :EncryptionPublicKey, :EncryptionAlgorithm

        def initialize(keyid=nil, keyspec=nil, numberofbytes=nil, encryptioncontext=nil, encryptionpublickey=nil, encryptionalgorithm=nil)
          @KeyId = keyid
          @KeySpec = keyspec
          @NumberOfBytes = numberofbytes
          @EncryptionContext = encryptioncontext
          @EncryptionPublicKey = encryptionpublickey
          @EncryptionAlgorithm = encryptionalgorithm
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @KeySpec = params['KeySpec']
          @NumberOfBytes = params['NumberOfBytes']
          @EncryptionContext = params['EncryptionContext']
          @EncryptionPublicKey = params['EncryptionPublicKey']
          @EncryptionAlgorithm = params['EncryptionAlgorithm']
        end
      end

      # GenerateDataKey返回参数结构体
      class GenerateDataKeyResponse < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的全局唯一标识
        # @type KeyId: String
        # @param Plaintext: 若调用时未提供 EncryptionPublicKey,该字段值为生成的数据密钥 DataKey 的 Base64 编码的明文,需进行 Base64 解码以获取 DataKey 明文。
        # 若调用时提供了 EncryptionPublicKey,则该字段值为使用 EncryptionPublicKey 公钥进行非对称加密后的 Base64 编码的密文。需在 Base64 解码后,使用用户上传的公钥对应的私钥进行进一步解密,以获取 DataKey 明文。
        # @type Plaintext: String
        # @param CiphertextBlob: 数据密钥DataKey加密后的密文,用户需要自行保存该密文,KMS不托管用户的数据密钥。可以通过Decrypt接口从CiphertextBlob中获取数据密钥DataKey明文
        # @type CiphertextBlob: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyId, :Plaintext, :CiphertextBlob, :RequestId

        def initialize(keyid=nil, plaintext=nil, ciphertextblob=nil, requestid=nil)
          @KeyId = keyid
          @Plaintext = plaintext
          @CiphertextBlob = ciphertextblob
          @RequestId = requestid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @Plaintext = params['Plaintext']
          @CiphertextBlob = params['CiphertextBlob']
          @RequestId = params['RequestId']
        end
      end

      # GenerateRandom请求参数结构体
      class GenerateRandomRequest < TencentCloud::Common::AbstractModel
        # @param NumberOfBytes: 生成的随机数的长度。最小值为1, 最大值为1024。
        # @type NumberOfBytes: Integer

        attr_accessor :NumberOfBytes

        def initialize(numberofbytes=nil)
          @NumberOfBytes = numberofbytes
        end

        def deserialize(params)
          @NumberOfBytes = params['NumberOfBytes']
        end
      end

      # GenerateRandom返回参数结构体
      class GenerateRandomResponse < TencentCloud::Common::AbstractModel
        # @param Plaintext: 生成的随机数的明文,该明文使用base64编码,用户需要使用base64解码得到明文。
        # @type Plaintext: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Plaintext, :RequestId

        def initialize(plaintext=nil, requestid=nil)
          @Plaintext = plaintext
          @RequestId = requestid
        end

        def deserialize(params)
          @Plaintext = params['Plaintext']
          @RequestId = params['RequestId']
        end
      end

      # GetKeyRotationStatus请求参数结构体
      class GetKeyRotationStatusRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK唯一标识符
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # GetKeyRotationStatus返回参数结构体
      class GetKeyRotationStatusResponse < TencentCloud::Common::AbstractModel
        # @param KeyRotationEnabled: 密钥轮换是否开启
        # @type KeyRotationEnabled: Boolean
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyRotationEnabled, :RequestId

        def initialize(keyrotationenabled=nil, requestid=nil)
          @KeyRotationEnabled = keyrotationenabled
          @RequestId = requestid
        end

        def deserialize(params)
          @KeyRotationEnabled = params['KeyRotationEnabled']
          @RequestId = params['RequestId']
        end
      end

      # GetParametersForImport请求参数结构体
      class GetParametersForImportRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的唯一标识,获取密钥参数的CMK必须是EXTERNAL类型,即在CreateKey时指定Type=2 类型的CMK。
        # @type KeyId: String
        # @param WrappingAlgorithm: 指定加密密钥材料的算法,目前支持RSAES_PKCS1_V1_5、RSAES_OAEP_SHA_1、RSAES_OAEP_SHA_256
        # @type WrappingAlgorithm: String
        # @param WrappingKeySpec: 指定加密密钥材料的类型,目前只支持RSA_2048
        # @type WrappingKeySpec: String

        attr_accessor :KeyId, :WrappingAlgorithm, :WrappingKeySpec

        def initialize(keyid=nil, wrappingalgorithm=nil, wrappingkeyspec=nil)
          @KeyId = keyid
          @WrappingAlgorithm = wrappingalgorithm
          @WrappingKeySpec = wrappingkeyspec
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @WrappingAlgorithm = params['WrappingAlgorithm']
          @WrappingKeySpec = params['WrappingKeySpec']
        end
      end

      # GetParametersForImport返回参数结构体
      class GetParametersForImportResponse < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的唯一标识,用于指定目标导入密钥材料的CMK。
        # @type KeyId: String
        # @param ImportToken: 导入密钥材料需要的token,用于作为 ImportKeyMaterial 的参数。
        # @type ImportToken: String
        # @param PublicKey: 用于加密密钥材料的RSA公钥,base64编码。使用PublicKey base64解码后的公钥将导入密钥进行加密后作为 ImportKeyMaterial 的参数。
        # @type PublicKey: String
        # @param ParametersValidTo: 该导出token和公钥的有效期,超过该时间后无法导入,需要重新调用GetParametersForImport获取。
        # @type ParametersValidTo: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyId, :ImportToken, :PublicKey, :ParametersValidTo, :RequestId

        def initialize(keyid=nil, importtoken=nil, publickey=nil, parametersvalidto=nil, requestid=nil)
          @KeyId = keyid
          @ImportToken = importtoken
          @PublicKey = publickey
          @ParametersValidTo = parametersvalidto
          @RequestId = requestid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @ImportToken = params['ImportToken']
          @PublicKey = params['PublicKey']
          @ParametersValidTo = params['ParametersValidTo']
          @RequestId = params['RequestId']
        end
      end

      # GetPublicKey请求参数结构体
      class GetPublicKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的唯一标识。
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # GetPublicKey返回参数结构体
      class GetPublicKeyResponse < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的唯一标识。
        # @type KeyId: String
        # @param PublicKey: 经过base64编码的公钥内容。
        # @type PublicKey: String
        # @param PublicKeyPem: PEM格式的公钥内容。
        # @type PublicKeyPem: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyId, :PublicKey, :PublicKeyPem, :RequestId

        def initialize(keyid=nil, publickey=nil, publickeypem=nil, requestid=nil)
          @KeyId = keyid
          @PublicKey = publickey
          @PublicKeyPem = publickeypem
          @RequestId = requestid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @PublicKey = params['PublicKey']
          @PublicKeyPem = params['PublicKeyPem']
          @RequestId = params['RequestId']
        end
      end

      # GetRegions请求参数结构体
      class GetRegionsRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # GetRegions返回参数结构体
      class GetRegionsResponse < TencentCloud::Common::AbstractModel
        # @param Regions: 可用region列表
        # @type Regions: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Regions, :RequestId

        def initialize(regions=nil, requestid=nil)
          @Regions = regions
          @RequestId = requestid
        end

        def deserialize(params)
          @Regions = params['Regions']
          @RequestId = params['RequestId']
        end
      end

      # GetServiceStatus请求参数结构体
      class GetServiceStatusRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # GetServiceStatus返回参数结构体
      class GetServiceStatusResponse < TencentCloud::Common::AbstractModel
        # @param ServiceEnabled: KMS服务是否开通, true 表示已开通
        # @type ServiceEnabled: Boolean
        # @param InvalidType: 服务不可用类型: 0-未购买,1-正常, 2-欠费停服, 3-资源释放
        # @type InvalidType: Integer
        # @param UserLevel: 0-普通版,1-旗舰版
        # @type UserLevel: Integer
        # @param ProExpireTime: 旗舰版到期时间(Epoch Unix Timestamp)。
        # @type ProExpireTime: Integer
        # @param ProRenewFlag: 旗舰版是否自动续费:0-不自动续费,1-自动续费
        # @type ProRenewFlag: Integer
        # @param ProResourceId: 旗舰版购买记录的唯一性标识。如果为开通旗舰版,则返回值为空
        # @type ProResourceId: String
        # @param ExclusiveVSMEnabled: 是否开通 KMS 托管版
        # @type ExclusiveVSMEnabled: Boolean
        # @param ExclusiveHSMEnabled: 是否开通 KMS 独享版
        # @type ExclusiveHSMEnabled: Boolean
        # @param SubscriptionInfo: KMS 订阅信息。
        # @type SubscriptionInfo: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ServiceEnabled, :InvalidType, :UserLevel, :ProExpireTime, :ProRenewFlag, :ProResourceId, :ExclusiveVSMEnabled, :ExclusiveHSMEnabled, :SubscriptionInfo, :RequestId

        def initialize(serviceenabled=nil, invalidtype=nil, userlevel=nil, proexpiretime=nil, prorenewflag=nil, proresourceid=nil, exclusivevsmenabled=nil, exclusivehsmenabled=nil, subscriptioninfo=nil, requestid=nil)
          @ServiceEnabled = serviceenabled
          @InvalidType = invalidtype
          @UserLevel = userlevel
          @ProExpireTime = proexpiretime
          @ProRenewFlag = prorenewflag
          @ProResourceId = proresourceid
          @ExclusiveVSMEnabled = exclusivevsmenabled
          @ExclusiveHSMEnabled = exclusivehsmenabled
          @SubscriptionInfo = subscriptioninfo
          @RequestId = requestid
        end

        def deserialize(params)
          @ServiceEnabled = params['ServiceEnabled']
          @InvalidType = params['InvalidType']
          @UserLevel = params['UserLevel']
          @ProExpireTime = params['ProExpireTime']
          @ProRenewFlag = params['ProRenewFlag']
          @ProResourceId = params['ProResourceId']
          @ExclusiveVSMEnabled = params['ExclusiveVSMEnabled']
          @ExclusiveHSMEnabled = params['ExclusiveHSMEnabled']
          @SubscriptionInfo = params['SubscriptionInfo']
          @RequestId = params['RequestId']
        end
      end

      # ImportKeyMaterial请求参数结构体
      class ImportKeyMaterialRequest < TencentCloud::Common::AbstractModel
        # @param EncryptedKeyMaterial: 使用GetParametersForImport 返回的PublicKey加密后的密钥材料base64编码。对于国密版本region的KMS,导入的密钥材料长度要求为 128 bit,FIPS版本region的KMS, 导入的密钥材料长度要求为 256 bit。
        # @type EncryptedKeyMaterial: String
        # @param ImportToken: 通过调用GetParametersForImport获得的导入令牌。
        # @type ImportToken: String
        # @param KeyId: 指定导入密钥材料的CMK,需要和GetParametersForImport 指定的CMK相同。
        # @type KeyId: String
        # @param ValidTo: 密钥材料过期时间 unix 时间戳,不指定或者 0 表示密钥材料不会过期,若指定过期时间,需要大于当前时间点,最大支持 2147443200。
        # @type ValidTo: Integer

        attr_accessor :EncryptedKeyMaterial, :ImportToken, :KeyId, :ValidTo

        def initialize(encryptedkeymaterial=nil, importtoken=nil, keyid=nil, validto=nil)
          @EncryptedKeyMaterial = encryptedkeymaterial
          @ImportToken = importtoken
          @KeyId = keyid
          @ValidTo = validto
        end

        def deserialize(params)
          @EncryptedKeyMaterial = params['EncryptedKeyMaterial']
          @ImportToken = params['ImportToken']
          @KeyId = params['KeyId']
          @ValidTo = params['ValidTo']
        end
      end

      # ImportKeyMaterial返回参数结构体
      class ImportKeyMaterialResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 返回CMK列表信息
      class Key < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的全局唯一标识。
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # CMK属性信息
      class KeyMetadata < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的全局唯一标识
        # @type KeyId: String
        # @param Alias: 作为密钥更容易辨识,更容易被人看懂的别名
        # @type Alias: String
        # @param CreateTime: 密钥创建时间
        # @type CreateTime: Integer
        # @param Description: CMK的描述
        # @type Description: String
        # @param KeyState: CMK的状态, 取值为:Enabled | Disabled | PendingDelete | PendingImport | Archived
        # @type KeyState: String
        # @param KeyUsage: CMK用途,取值为: ENCRYPT_DECRYPT | ASYMMETRIC_DECRYPT_RSA_2048 | ASYMMETRIC_DECRYPT_SM2 | ASYMMETRIC_SIGN_VERIFY_SM2 | ASYMMETRIC_SIGN_VERIFY_RSA_2048 | ASYMMETRIC_SIGN_VERIFY_ECC
        # @type KeyUsage: String
        # @param Type: CMK类型,2 表示符合FIPS标准,4表示符合国密标准
        # @type Type: Integer
        # @param CreatorUin: 创建者
        # @type CreatorUin: Integer
        # @param KeyRotationEnabled: 是否开启了密钥轮换功能
        # @type KeyRotationEnabled: Boolean
        # @param Owner: CMK的创建者,用户创建的为 user,授权各云产品自动创建的为对应的产品名
        # @type Owner: String
        # @param NextRotateTime: 在密钥轮换开启状态下,下次轮换的时间
        # @type NextRotateTime: Integer
        # @param DeletionDate: 计划删除的时间
        # @type DeletionDate: Integer
        # @param Origin: CMK 密钥材料类型,由KMS创建的为: TENCENT_KMS, 由用户导入的类型为:EXTERNAL
        # @type Origin: String
        # @param ValidTo: 在Origin为  EXTERNAL 时有效,表示密钥材料的有效日期, 0 表示不过期
        # @type ValidTo: Integer
        # @param ResourceId: 资源ID,格式:creatorUin/$creatorUin/$keyId
        # @type ResourceId: String
        # @param HsmClusterId: HSM 集群 ID(仅对 KMS 独占版/托管版服务实例有效)
        # @type HsmClusterId: String
        # @param RotateDays: 密钥轮转周期(天)
        # @type RotateDays: Integer
        # @param LastRotateTime: 上次乱转时间(Unix timestamp)
        # @type LastRotateTime: Integer

        attr_accessor :KeyId, :Alias, :CreateTime, :Description, :KeyState, :KeyUsage, :Type, :CreatorUin, :KeyRotationEnabled, :Owner, :NextRotateTime, :DeletionDate, :Origin, :ValidTo, :ResourceId, :HsmClusterId, :RotateDays, :LastRotateTime

        def initialize(keyid=nil, _alias=nil, createtime=nil, description=nil, keystate=nil, keyusage=nil, type=nil, creatoruin=nil, keyrotationenabled=nil, owner=nil, nextrotatetime=nil, deletiondate=nil, origin=nil, validto=nil, resourceid=nil, hsmclusterid=nil, rotatedays=nil, lastrotatetime=nil)
          @KeyId = keyid
          @Alias = _alias
          @CreateTime = createtime
          @Description = description
          @KeyState = keystate
          @KeyUsage = keyusage
          @Type = type
          @CreatorUin = creatoruin
          @KeyRotationEnabled = keyrotationenabled
          @Owner = owner
          @NextRotateTime = nextrotatetime
          @DeletionDate = deletiondate
          @Origin = origin
          @ValidTo = validto
          @ResourceId = resourceid
          @HsmClusterId = hsmclusterid
          @RotateDays = rotatedays
          @LastRotateTime = lastrotatetime
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @Alias = params['Alias']
          @CreateTime = params['CreateTime']
          @Description = params['Description']
          @KeyState = params['KeyState']
          @KeyUsage = params['KeyUsage']
          @Type = params['Type']
          @CreatorUin = params['CreatorUin']
          @KeyRotationEnabled = params['KeyRotationEnabled']
          @Owner = params['Owner']
          @NextRotateTime = params['NextRotateTime']
          @DeletionDate = params['DeletionDate']
          @Origin = params['Origin']
          @ValidTo = params['ValidTo']
          @ResourceId = params['ResourceId']
          @HsmClusterId = params['HsmClusterId']
          @RotateDays = params['RotateDays']
          @LastRotateTime = params['LastRotateTime']
        end
      end

      # ListAlgorithms请求参数结构体
      class ListAlgorithmsRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # ListAlgorithms返回参数结构体
      class ListAlgorithmsResponse < TencentCloud::Common::AbstractModel
        # @param SymmetricAlgorithms: 本地区支持的对称加密算法
        # @type SymmetricAlgorithms: Array
        # @param AsymmetricAlgorithms: 本地区支持的非对称加密算法
        # @type AsymmetricAlgorithms: Array
        # @param AsymmetricSignVerifyAlgorithms: 本地区支持的非对称签名验签算法
        # @type AsymmetricSignVerifyAlgorithms: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :SymmetricAlgorithms, :AsymmetricAlgorithms, :AsymmetricSignVerifyAlgorithms, :RequestId

        def initialize(symmetricalgorithms=nil, asymmetricalgorithms=nil, asymmetricsignverifyalgorithms=nil, requestid=nil)
          @SymmetricAlgorithms = symmetricalgorithms
          @AsymmetricAlgorithms = asymmetricalgorithms
          @AsymmetricSignVerifyAlgorithms = asymmetricsignverifyalgorithms
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['SymmetricAlgorithms'].nil?
            @SymmetricAlgorithms = []
            params['SymmetricAlgorithms'].each do |i|
              algorithminfo_tmp = AlgorithmInfo.new
              algorithminfo_tmp.deserialize(i)
              @SymmetricAlgorithms << algorithminfo_tmp
            end
          end
          unless params['AsymmetricAlgorithms'].nil?
            @AsymmetricAlgorithms = []
            params['AsymmetricAlgorithms'].each do |i|
              algorithminfo_tmp = AlgorithmInfo.new
              algorithminfo_tmp.deserialize(i)
              @AsymmetricAlgorithms << algorithminfo_tmp
            end
          end
          unless params['AsymmetricSignVerifyAlgorithms'].nil?
            @AsymmetricSignVerifyAlgorithms = []
            params['AsymmetricSignVerifyAlgorithms'].each do |i|
              algorithminfo_tmp = AlgorithmInfo.new
              algorithminfo_tmp.deserialize(i)
              @AsymmetricSignVerifyAlgorithms << algorithminfo_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # ListKeyDetail请求参数结构体
      class ListKeyDetailRequest < TencentCloud::Common::AbstractModel
        # @param Offset: 含义跟 SQL 查询的 Offset 一致,表示本次获取从按一定顺序排列数组的第 Offset 个元素开始,缺省为0
        # @type Offset: Integer
        # @param Limit: 含义跟 SQL 查询的 Limit 一致,表示本次最多获取 Limit 个元素。缺省值为10,最大值为200
        # @type Limit: Integer
        # @param Role: 根据创建者角色筛选,默认 0 表示用户自己创建的cmk, 1 表示授权其它云产品自动创建的cmk
        # @type Role: Integer
        # @param OrderType: 根据CMK创建时间排序, 0 表示按照降序排序,1表示按照升序排序
        # @type OrderType: Integer
        # @param KeyState: 根据CMK状态筛选, 0表示全部CMK, 1 表示仅查询Enabled CMK, 2 表示仅查询Disabled CMK,3 表示查询PendingDelete 状态的CMK(处于计划删除状态的Key),4 表示查询 PendingImport 状态的CMK,5 表示查询 Archived 状态的 CMK
        # @type KeyState: Integer
        # @param SearchKeyAlias: 根据KeyId或者Alias进行模糊匹配查询
        # @type SearchKeyAlias: String
        # @param Origin: 根据CMK类型筛选, "TENCENT_KMS" 表示筛选密钥材料由KMS创建的CMK, "EXTERNAL" 表示筛选密钥材料需要用户导入的 EXTERNAL类型CMK,"ALL" 或者不设置表示两种类型都查询,大小写敏感。
        # @type Origin: String
        # @param KeyUsage: 根据CMK的KeyUsage筛选,ALL表示筛选全部,可使用的参数为:ALL 或 ENCRYPT_DECRYPT 或 ASYMMETRIC_DECRYPT_RSA_2048 或 ASYMMETRIC_DECRYPT_SM2 或 ASYMMETRIC_SIGN_VERIFY_SM2 或 ASYMMETRIC_SIGN_VERIFY_RSA_2048 或 ASYMMETRIC_SIGN_VERIFY_ECC,为空则默认筛选ENCRYPT_DECRYPT类型
        # @type KeyUsage: String
        # @param TagFilters: 标签过滤条件
        # @type TagFilters: Array
        # @param HsmClusterId: KMS 高级版对应的 HSM 集群 ID(仅对 KMS 独占版/托管版服务实例有效)。
        # @type HsmClusterId: String

        attr_accessor :Offset, :Limit, :Role, :OrderType, :KeyState, :SearchKeyAlias, :Origin, :KeyUsage, :TagFilters, :HsmClusterId

        def initialize(offset=nil, limit=nil, role=nil, ordertype=nil, keystate=nil, searchkeyalias=nil, origin=nil, keyusage=nil, tagfilters=nil, hsmclusterid=nil)
          @Offset = offset
          @Limit = limit
          @Role = role
          @OrderType = ordertype
          @KeyState = keystate
          @SearchKeyAlias = searchkeyalias
          @Origin = origin
          @KeyUsage = keyusage
          @TagFilters = tagfilters
          @HsmClusterId = hsmclusterid
        end

        def deserialize(params)
          @Offset = params['Offset']
          @Limit = params['Limit']
          @Role = params['Role']
          @OrderType = params['OrderType']
          @KeyState = params['KeyState']
          @SearchKeyAlias = params['SearchKeyAlias']
          @Origin = params['Origin']
          @KeyUsage = params['KeyUsage']
          unless params['TagFilters'].nil?
            @TagFilters = []
            params['TagFilters'].each do |i|
              tagfilter_tmp = TagFilter.new
              tagfilter_tmp.deserialize(i)
              @TagFilters << tagfilter_tmp
            end
          end
          @HsmClusterId = params['HsmClusterId']
        end
      end

      # ListKeyDetail返回参数结构体
      class ListKeyDetailResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: CMK的总数量
        # @type TotalCount: Integer
        # @param KeyMetadatas: 返回的属性信息列表。
        # @type KeyMetadatas: Array
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :KeyMetadatas, :RequestId

        def initialize(totalcount=nil, keymetadatas=nil, requestid=nil)
          @TotalCount = totalcount
          @KeyMetadatas = keymetadatas
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['KeyMetadatas'].nil?
            @KeyMetadatas = []
            params['KeyMetadatas'].each do |i|
              keymetadata_tmp = KeyMetadata.new
              keymetadata_tmp.deserialize(i)
              @KeyMetadatas << keymetadata_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # ListKeys请求参数结构体
      class ListKeysRequest < TencentCloud::Common::AbstractModel
        # @param Offset: 含义跟 SQL 查询的 Offset 一致,表示本次获取从按一定顺序排列数组的第 Offset 个元素开始,缺省为0
        # @type Offset: Integer
        # @param Limit: 含义跟 SQL 查询的 Limit 一致,表示本次获最多获取 Limit 个元素。缺省值为10,最大值为200
        # @type Limit: Integer
        # @param Role: 根据创建者角色筛选,默认 0 表示用户自己创建的cmk, 1 表示授权其它云产品自动创建的cmk
        # @type Role: Integer
        # @param HsmClusterId: KMS 高级版对应的 HSM 集群 ID(仅对 KMS 独占版/托管版服务实例有效)。
        # @type HsmClusterId: String

        attr_accessor :Offset, :Limit, :Role, :HsmClusterId

        def initialize(offset=nil, limit=nil, role=nil, hsmclusterid=nil)
          @Offset = offset
          @Limit = limit
          @Role = role
          @HsmClusterId = hsmclusterid
        end

        def deserialize(params)
          @Offset = params['Offset']
          @Limit = params['Limit']
          @Role = params['Role']
          @HsmClusterId = params['HsmClusterId']
        end
      end

      # ListKeys返回参数结构体
      class ListKeysResponse < TencentCloud::Common::AbstractModel
        # @param Keys: CMK列表数组
        # @type Keys: Array
        # @param TotalCount: CMK的总数量
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Keys, :TotalCount, :RequestId

        def initialize(keys=nil, totalcount=nil, requestid=nil)
          @Keys = keys
          @TotalCount = totalcount
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Keys'].nil?
            @Keys = []
            params['Keys'].each do |i|
              key_tmp = Key.new
              key_tmp.deserialize(i)
              @Keys << key_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @RequestId = params['RequestId']
        end
      end

      # OverwriteWhiteBoxDeviceFingerprints请求参数结构体
      class OverwriteWhiteBoxDeviceFingerprintsRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 白盒密钥ID
        # @type KeyId: String
        # @param DeviceFingerprints: 设备指纹列表,如果列表为空,则表示删除该密钥对应的所有指纹信息。列表最大长度不超过200。
        # @type DeviceFingerprints: Array

        attr_accessor :KeyId, :DeviceFingerprints

        def initialize(keyid=nil, devicefingerprints=nil)
          @KeyId = keyid
          @DeviceFingerprints = devicefingerprints
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          unless params['DeviceFingerprints'].nil?
            @DeviceFingerprints = []
            params['DeviceFingerprints'].each do |i|
              devicefingerprint_tmp = DeviceFingerprint.new
              devicefingerprint_tmp.deserialize(i)
              @DeviceFingerprints << devicefingerprint_tmp
            end
          end
        end
      end

      # OverwriteWhiteBoxDeviceFingerprints返回参数结构体
      class OverwriteWhiteBoxDeviceFingerprintsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # PostQuantumCryptoDecrypt请求参数结构体
      class PostQuantumCryptoDecryptRequest < TencentCloud::Common::AbstractModel
        # @param CiphertextBlob: 待解密的密文数据
        # @type CiphertextBlob: String
        # @param EncryptionPublicKey: PEM 格式公钥字符串,支持 RSA2048 和 SM2 公钥,用于对返回数据中的 Plaintext 值进行加密。若为空,则不对 Plaintext 值加密。
        # @type EncryptionPublicKey: String
        # @param EncryptionAlgorithm: 非对称加密算法,配合 EncryptionPublicKey 对返回数据进行加密。目前支持:SM2(以 C1C3C2 格式返回密文),SM2_C1C3C2_ASN1 (以 C1C3C2 ASN1 格式返回密文),RSAES_PKCS1_V1_5,RSAES_OAEP_SHA_1,RSAES_OAEP_SHA_256。若为空,则默认为 SM2。
        # @type EncryptionAlgorithm: String

        attr_accessor :CiphertextBlob, :EncryptionPublicKey, :EncryptionAlgorithm

        def initialize(ciphertextblob=nil, encryptionpublickey=nil, encryptionalgorithm=nil)
          @CiphertextBlob = ciphertextblob
          @EncryptionPublicKey = encryptionpublickey
          @EncryptionAlgorithm = encryptionalgorithm
        end

        def deserialize(params)
          @CiphertextBlob = params['CiphertextBlob']
          @EncryptionPublicKey = params['EncryptionPublicKey']
          @EncryptionAlgorithm = params['EncryptionAlgorithm']
        end
      end

      # PostQuantumCryptoDecrypt返回参数结构体
      class PostQuantumCryptoDecryptResponse < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的全局唯一标识
        # @type KeyId: String
        # @param PlainText: 若调用时未提供 EncryptionPublicKey,该字段值为 Base64 编码的明文,需进行 Base64 解码以获取明文。
        # 若调用时提供了 EncryptionPublicKey,则该字段值为使用 EncryptionPublicKey 公钥进行非对称加密后的 Base64 编码的密文。需在 Base64 解码后,使用用户上传的公钥对应的私钥进行进一步解密,以获取明文。
        # @type PlainText: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :KeyId, :PlainText, :RequestId

        def initialize(keyid=nil, plaintext=nil, requestid=nil)
          @KeyId = keyid
          @PlainText = plaintext
          @RequestId = requestid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @PlainText = params['PlainText']
          @RequestId = params['RequestId']
        end
      end

      # PostQuantumCryptoEncrypt请求参数结构体
      class PostQuantumCryptoEncryptRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 调用CreateKey生成的CMK全局唯一标识符
        # @type KeyId: String
        # @param PlainText: 被加密的明文数据,该字段必须使用base64编码,原文最大长度支持4K
        # @type PlainText: String

        attr_accessor :KeyId, :PlainText

        def initialize(keyid=nil, plaintext=nil)
          @KeyId = keyid
          @PlainText = plaintext
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @PlainText = params['PlainText']
        end
      end

      # PostQuantumCryptoEncrypt返回参数结构体
      class PostQuantumCryptoEncryptResponse < TencentCloud::Common::AbstractModel
        # @param CiphertextBlob: 加密后的密文,base64编码。注意:本字段中打包了密文和密钥的相关信息,不是对明文的直接加密结果,只有将该字段作为PostQuantumCryptoDecrypt接口的输入参数,才可以解密出原文。
        # @type CiphertextBlob: String
        # @param KeyId: 加密使用的CMK的全局唯一标识
        # @type KeyId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :CiphertextBlob, :KeyId, :RequestId

        def initialize(ciphertextblob=nil, keyid=nil, requestid=nil)
          @CiphertextBlob = ciphertextblob
          @KeyId = keyid
          @RequestId = requestid
        end

        def deserialize(params)
          @CiphertextBlob = params['CiphertextBlob']
          @KeyId = params['KeyId']
          @RequestId = params['RequestId']
        end
      end

      # PostQuantumCryptoSign请求参数结构体
      class PostQuantumCryptoSignRequest < TencentCloud::Common::AbstractModel
        # @param Message: Base64 编码的消息原文。消息原文的长度(Base64编码前的长度)不超过4096字节。
        # @type Message: String
        # @param KeyId: 密钥的唯一标识
        # @type KeyId: String

        attr_accessor :Message, :KeyId

        def initialize(message=nil, keyid=nil)
          @Message = message
          @KeyId = keyid
        end

        def deserialize(params)
          @Message = params['Message']
          @KeyId = params['KeyId']
        end
      end

      # PostQuantumCryptoSign返回参数结构体
      class PostQuantumCryptoSignResponse < TencentCloud::Common::AbstractModel
        # @param Signature: 签名值,Base64编码。可使用 PostQuantumCryptoVerify接口对签名值进行验证。
        # @type Signature: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Signature, :RequestId

        def initialize(signature=nil, requestid=nil)
          @Signature = signature
          @RequestId = requestid
        end

        def deserialize(params)
          @Signature = params['Signature']
          @RequestId = params['RequestId']
        end
      end

      # PostQuantumCryptoVerify请求参数结构体
      class PostQuantumCryptoVerifyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 密钥的唯一标识
        # @type KeyId: String
        # @param SignatureValue: 签名值,通过调用KMS PostQuantumCryptoSign签名接口生成
        # @type SignatureValue: String
        # @param Message: Base64 编码的消息原文,消息原文的长度(Base64编码前的长度)不超过4096字节。
        # @type Message: String

        attr_accessor :KeyId, :SignatureValue, :Message

        def initialize(keyid=nil, signaturevalue=nil, message=nil)
          @KeyId = keyid
          @SignatureValue = signaturevalue
          @Message = message
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @SignatureValue = params['SignatureValue']
          @Message = params['Message']
        end
      end

      # PostQuantumCryptoVerify返回参数结构体
      class PostQuantumCryptoVerifyResponse < TencentCloud::Common::AbstractModel
        # @param SignatureValid: 签名是否有效。true:签名有效,false:签名无效。
        # @type SignatureValid: Boolean
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :SignatureValid, :RequestId

        def initialize(signaturevalid=nil, requestid=nil)
          @SignatureValid = signaturevalid
          @RequestId = requestid
        end

        def deserialize(params)
          @SignatureValid = params['SignatureValid']
          @RequestId = params['RequestId']
        end
      end

      # ReEncrypt请求参数结构体
      class ReEncryptRequest < TencentCloud::Common::AbstractModel
        # @param CiphertextBlob: 需要重新加密的密文
        # @type CiphertextBlob: String
        # @param DestinationKeyId: 重新加密使用的CMK,如果为空,则使用密文原有的CMK重新加密(若密钥没有轮换则密文不会刷新)
        # @type DestinationKeyId: String
        # @param SourceEncryptionContext: CiphertextBlob 密文加密时使用的key/value对的json字符串。如果加密时未使用,则为空
        # @type SourceEncryptionContext: String
        # @param DestinationEncryptionContext: 重新加密使用的key/value对的json字符串,如果使用该字段,则返回的新密文在解密时需要填入相同的字符串
        # @type DestinationEncryptionContext: String

        attr_accessor :CiphertextBlob, :DestinationKeyId, :SourceEncryptionContext, :DestinationEncryptionContext

        def initialize(ciphertextblob=nil, destinationkeyid=nil, sourceencryptioncontext=nil, destinationencryptioncontext=nil)
          @CiphertextBlob = ciphertextblob
          @DestinationKeyId = destinationkeyid
          @SourceEncryptionContext = sourceencryptioncontext
          @DestinationEncryptionContext = destinationencryptioncontext
        end

        def deserialize(params)
          @CiphertextBlob = params['CiphertextBlob']
          @DestinationKeyId = params['DestinationKeyId']
          @SourceEncryptionContext = params['SourceEncryptionContext']
          @DestinationEncryptionContext = params['DestinationEncryptionContext']
        end
      end

      # ReEncrypt返回参数结构体
      class ReEncryptResponse < TencentCloud::Common::AbstractModel
        # @param CiphertextBlob: 重新加密后的密文
        # @type CiphertextBlob: String
        # @param KeyId: 重新加密使用的CMK
        # @type KeyId: String
        # @param SourceKeyId: 重新加密前密文使用的CMK
        # @type SourceKeyId: String
        # @param ReEncrypted: true表示密文已经重新加密。同一个CMK进行重加密,在密钥没有发生轮换的情况下不会进行实际重新加密操作,返回原密文
        # @type ReEncrypted: Boolean
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :CiphertextBlob, :KeyId, :SourceKeyId, :ReEncrypted, :RequestId

        def initialize(ciphertextblob=nil, keyid=nil, sourcekeyid=nil, reencrypted=nil, requestid=nil)
          @CiphertextBlob = ciphertextblob
          @KeyId = keyid
          @SourceKeyId = sourcekeyid
          @ReEncrypted = reencrypted
          @RequestId = requestid
        end

        def deserialize(params)
          @CiphertextBlob = params['CiphertextBlob']
          @KeyId = params['KeyId']
          @SourceKeyId = params['SourceKeyId']
          @ReEncrypted = params['ReEncrypted']
          @RequestId = params['RequestId']
        end
      end

      # ScheduleKeyDeletion请求参数结构体
      class ScheduleKeyDeletionRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: CMK的唯一标志
        # @type KeyId: String
        # @param PendingWindowInDays: 计划删除时间区间[7,30]
        # @type PendingWindowInDays: Integer

        attr_accessor :KeyId, :PendingWindowInDays

        def initialize(keyid=nil, pendingwindowindays=nil)
          @KeyId = keyid
          @PendingWindowInDays = pendingwindowindays
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @PendingWindowInDays = params['PendingWindowInDays']
        end
      end

      # ScheduleKeyDeletion返回参数结构体
      class ScheduleKeyDeletionResponse < TencentCloud::Common::AbstractModel
        # @param DeletionDate: 计划删除执行时间
        # @type DeletionDate: Integer
        # @param KeyId: 唯一标志被计划删除的CMK
        # @type KeyId: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :DeletionDate, :KeyId, :RequestId

        def initialize(deletiondate=nil, keyid=nil, requestid=nil)
          @DeletionDate = deletiondate
          @KeyId = keyid
          @RequestId = requestid
        end

        def deserialize(params)
          @DeletionDate = params['DeletionDate']
          @KeyId = params['KeyId']
          @RequestId = params['RequestId']
        end
      end

      # SignByAsymmetricKey请求参数结构体
      class SignByAsymmetricKeyRequest < TencentCloud::Common::AbstractModel
        # @param Algorithm: 签名算法,支持的算法:SM2DSA,ECC_P256_R1,RSA_PSS_SHA_256,RSA_PKCS1_SHA_256 等。更多支持的算法可通过 ListAlgorithms 接口进行查询。
        # @type Algorithm: String
        # @param Message: 消息原文或消息摘要。如果提供的是消息原文,则消息原文的长度(Base64编码前的长度)不超过4096字节。如果提供的是消息摘要,消息摘要长度(Base64编码前的长度)必须等于32字节
        # @type Message: String
        # @param KeyId: 密钥的唯一标识
        # @type KeyId: String
        # @param MessageType: 消息类型:RAW,DIGEST,如果不传,默认为RAW,表示消息原文。
        # @type MessageType: String

        attr_accessor :Algorithm, :Message, :KeyId, :MessageType

        def initialize(algorithm=nil, message=nil, keyid=nil, messagetype=nil)
          @Algorithm = algorithm
          @Message = message
          @KeyId = keyid
          @MessageType = messagetype
        end

        def deserialize(params)
          @Algorithm = params['Algorithm']
          @Message = params['Message']
          @KeyId = params['KeyId']
          @MessageType = params['MessageType']
        end
      end

      # SignByAsymmetricKey返回参数结构体
      class SignByAsymmetricKeyResponse < TencentCloud::Common::AbstractModel
        # @param Signature: 签名,Base64编码
        # @type Signature: String
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Signature, :RequestId

        def initialize(signature=nil, requestid=nil)
          @Signature = signature
          @RequestId = requestid
        end

        def deserialize(params)
          @Signature = params['Signature']
          @RequestId = params['RequestId']
        end
      end

      # 标签键和标签值
      class Tag < TencentCloud::Common::AbstractModel
        # @param TagKey: 标签键
        # @type TagKey: String
        # @param TagValue: 标签值
        # @type TagValue: String

        attr_accessor :TagKey, :TagValue

        def initialize(tagkey=nil, tagvalue=nil)
          @TagKey = tagkey
          @TagValue = tagvalue
        end

        def deserialize(params)
          @TagKey = params['TagKey']
          @TagValue = params['TagValue']
        end
      end

      # 标签过滤器
      class TagFilter < TencentCloud::Common::AbstractModel
        # @param TagKey: 标签键
        # @type TagKey: String
        # @param TagValue: 标签值
        # @type TagValue: Array

        attr_accessor :TagKey, :TagValue

        def initialize(tagkey=nil, tagvalue=nil)
          @TagKey = tagkey
          @TagValue = tagvalue
        end

        def deserialize(params)
          @TagKey = params['TagKey']
          @TagValue = params['TagValue']
        end
      end

      # UnbindCloudResource请求参数结构体
      class UnbindCloudResourceRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: cmk的ID
        # @type KeyId: String
        # @param ProductId: 云产品的唯一性标识符
        # @type ProductId: String
        # @param ResourceId: 资源/实例ID,由调用方根据自己的云产品特征来定义,以字符串形式做存储。
        # @type ResourceId: String

        attr_accessor :KeyId, :ProductId, :ResourceId

        def initialize(keyid=nil, productid=nil, resourceid=nil)
          @KeyId = keyid
          @ProductId = productid
          @ResourceId = resourceid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @ProductId = params['ProductId']
          @ResourceId = params['ResourceId']
        end
      end

      # UnbindCloudResource返回参数结构体
      class UnbindCloudResourceResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # UpdateAlias请求参数结构体
      class UpdateAliasRequest < TencentCloud::Common::AbstractModel
        # @param Alias: 新的别名,1-60个字符或数字的组合
        # @type Alias: String
        # @param KeyId: CMK的全局唯一标识符
        # @type KeyId: String

        attr_accessor :Alias, :KeyId

        def initialize(_alias=nil, keyid=nil)
          @Alias = _alias
          @KeyId = keyid
        end

        def deserialize(params)
          @Alias = params['Alias']
          @KeyId = params['KeyId']
        end
      end

      # UpdateAlias返回参数结构体
      class UpdateAliasResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # UpdateKeyDescription请求参数结构体
      class UpdateKeyDescriptionRequest < TencentCloud::Common::AbstractModel
        # @param Description: 新的描述信息,最大支持1024字节
        # @type Description: String
        # @param KeyId: 需要修改描述信息的CMK ID
        # @type KeyId: String

        attr_accessor :Description, :KeyId

        def initialize(description=nil, keyid=nil)
          @Description = description
          @KeyId = keyid
        end

        def deserialize(params)
          @Description = params['Description']
          @KeyId = params['KeyId']
        end
      end

      # UpdateKeyDescription返回参数结构体
      class UpdateKeyDescriptionResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # VerifyByAsymmetricKey请求参数结构体
      class VerifyByAsymmetricKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 密钥的唯一标识
        # @type KeyId: String
        # @param SignatureValue: 签名值,通过调用KMS签名接口生成
        # @type SignatureValue: String
        # @param Message: 消息原文或消息摘要。如果提供的是消息原文,则消息原文的长度(Base64编码前的长度)不超过4096字节。如果提供的是消息摘要,则消息摘要长度(Base64编码前的长度)必须等于32字节
        # @type Message: String
        # @param Algorithm: 签名算法,支持的算法:SM2DSA,ECC_P256_R1,RSA_PSS_SHA_256,RSA_PKCS1_SHA_256 等。更多支持的算法可通过 ListAlgorithms 接口进行查询。
        # @type Algorithm: String
        # @param MessageType: 消息类型:RAW,DIGEST,如果不传,默认为RAW,表示消息原文。
        # @type MessageType: String

        attr_accessor :KeyId, :SignatureValue, :Message, :Algorithm, :MessageType

        def initialize(keyid=nil, signaturevalue=nil, message=nil, algorithm=nil, messagetype=nil)
          @KeyId = keyid
          @SignatureValue = signaturevalue
          @Message = message
          @Algorithm = algorithm
          @MessageType = messagetype
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @SignatureValue = params['SignatureValue']
          @Message = params['Message']
          @Algorithm = params['Algorithm']
          @MessageType = params['MessageType']
        end
      end

      # VerifyByAsymmetricKey返回参数结构体
      class VerifyByAsymmetricKeyResponse < TencentCloud::Common::AbstractModel
        # @param SignatureValid: 签名是否有效。true:签名有效,false:签名无效。
        # @type SignatureValid: Boolean
        # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :SignatureValid, :RequestId

        def initialize(signaturevalid=nil, requestid=nil)
          @SignatureValid = signaturevalid
          @RequestId = requestid
        end

        def deserialize(params)
          @SignatureValid = params['SignatureValid']
          @RequestId = params['RequestId']
        end
      end

      # 白盒密钥信息
      class WhiteboxKeyInfo < TencentCloud::Common::AbstractModel
        # @param KeyId: 白盒密钥的全局唯一标识符
        # @type KeyId: String
        # @param Alias: 作为密钥更容易辨识,更容易被人看懂的别名, 不可为空,1-60个字母数字 - _ 的组合,首字符必须为字母或者数字. 不可重复
        # @type Alias: String
        # @param CreatorUin: 创建者
        # @type CreatorUin: Integer
        # @param Description: 密钥的描述信息
        # @type Description: String
        # @param CreateTime: 密钥创建时间,Unix时间戳
        # @type CreateTime: Integer
        # @param Status: 白盒密钥的状态, 取值为:Enabled | Disabled
        # @type Status: String
        # @param OwnerUin: 创建者
        # @type OwnerUin: Integer
        # @param Algorithm: 密钥所用的算法类型
        # @type Algorithm: String
        # @param EncryptKey: 白盒加密密钥,base64编码
        # @type EncryptKey: String
        # @param DecryptKey: 白盒解密密钥,base64编码
        # @type DecryptKey: String
        # @param ResourceId: 资源ID,格式:creatorUin/$creatorUin/$keyId
        # @type ResourceId: String
        # @param DeviceFingerprintBind: 是否有设备指纹与当前密钥绑定
        # @type DeviceFingerprintBind: Boolean

        attr_accessor :KeyId, :Alias, :CreatorUin, :Description, :CreateTime, :Status, :OwnerUin, :Algorithm, :EncryptKey, :DecryptKey, :ResourceId, :DeviceFingerprintBind

        def initialize(keyid=nil, _alias=nil, creatoruin=nil, description=nil, createtime=nil, status=nil, owneruin=nil, algorithm=nil, encryptkey=nil, decryptkey=nil, resourceid=nil, devicefingerprintbind=nil)
          @KeyId = keyid
          @Alias = _alias
          @CreatorUin = creatoruin
          @Description = description
          @CreateTime = createtime
          @Status = status
          @OwnerUin = owneruin
          @Algorithm = algorithm
          @EncryptKey = encryptkey
          @DecryptKey = decryptkey
          @ResourceId = resourceid
          @DeviceFingerprintBind = devicefingerprintbind
        end

        def deserialize(params)
          @KeyId = params['KeyId']
          @Alias = params['Alias']
          @CreatorUin = params['CreatorUin']
          @Description = params['Description']
          @CreateTime = params['CreateTime']
          @Status = params['Status']
          @OwnerUin = params['OwnerUin']
          @Algorithm = params['Algorithm']
          @EncryptKey = params['EncryptKey']
          @DecryptKey = params['DecryptKey']
          @ResourceId = params['ResourceId']
          @DeviceFingerprintBind = params['DeviceFingerprintBind']
        end
      end

    end
  end
end