<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_key(self, name, convergent_encryption=False, derived=False, exportable=False, allow_plaintext_backup=False, key_type="aes256-gcm96", mount_point=DEFAULT_MOUNT_POINT):
 """Create a new named encryption key of the specified type. The values set here cannot be changed after key creation. Supported methods: POST: /{mount_point}/keys/{name}. Produces: 204 (empty body) :param name: Specifies the name of the encryption key to create. This is specified as part of the URL. :type name: str | unicode :param convergent_encryption: If enabled, the key will support convergent encryption, where the same plaintext creates the same ciphertext. This requires derived to be set to true. When enabled, each encryption(/decryption/rewrap/datakey) operation will derive a nonce value rather than randomly generate it. :type convergent_encryption: bool :param derived: Specifies if key derivation is to be used. If enabled, all encrypt/decrypt requests to this named key must provide a context which is used for key derivation. :type derived: bool :param exportable: Enables keys to be exportable. This allows for all the valid keys in the key ring to be exported. Once set, this cannot be disabled. :type exportable: bool :param allow_plaintext_backup: If set, enables taking backup of named key in the plaintext format. Once set, this cannot be disabled. :type allow_plaintext_backup: bool :param key_type: Specifies the type of key to create. The currently-supported types are: * **aes256-gcm96**: AES-256 wrapped with GCM using a 96-bit nonce size AEAD * **chacha20-poly1305**: ChaCha20-Poly1305 AEAD (symmetric, supports derivation and convergent encryption) * **ed25519**: ED25519 (asymmetric, supports derivation). * **ecdsa-p256**: ECDSA using the P-256 elliptic curve (asymmetric) * **rsa-2048**: RSA with bit size of 2048 (asymmetric) * **rsa-4096**: RSA with bit size of 4096 (asymmetric) :type key_type: str | unicode :param mount_point: The "path" the method/backend was mounted on. :type mount_point: str | unicode :return: The response of the request. :rtype: requests.Response """

        if convergent_encryption and not derived:
            raise exceptions.ParamValidationError('derived must be set to True when convergent_encryption is True')
        if key_type not in transit_constants.ALLOWED_KEY_TYPES:
            error_msg = 'invalid key_type argument provided "{arg}", supported types: "{allowed_types}"'
            raise exceptions.ParamValidationError(error_msg.format(
                arg=key_type,
                allowed_types=', '.join(transit_constants.ALLOWED_KEY_TYPES),
            ))
        params = {
            'convergent_encryption': convergent_encryption,
            'derived': derived,
            'exportable': exportable,
            'allow_plaintext_backup': allow_plaintext_backup,
            'type': key_type,
        }
        api_path = '/v1/{mount_point}/keys/{name}'.format(
            mount_point=mount_point,
            name=name,
        )
        return self._adapter.post(
            url=api_path,
            json=params,
        )