def aes_cbc_no_padding_decrypt(key, data, iv):
if len(key) not in [<NUM_LIT:16>, <NUM_LIT>, <NUM_LIT:32>]:<EOL><INDENT>raise ValueError(pretty_message(<EOL>'''<STR_LIT>''',<EOL>len(key)<EOL>))<EOL><DEDENT>if len(iv) != <NUM_LIT:16>:<EOL><INDENT>raise ValueError(pretty_message(<EOL>'''<STR_LIT>''',<EOL>len(iv)<EOL>))<EOL><DEDENT>return _decrypt('<STR_LIT>', key, data, iv, False)<EOL>
Decrypts AES ciphertext in CBC mode using a 128, 192 or 256 bit key and no
padding.

:param key:
    The encryption key - a byte string either 16, 24 or 32 bytes long

:param data:
    The ciphertext - a byte string

:param iv:
    The initialization vector - a byte string 16-bytes long

:raises:
    ValueError - when any of the parameters contain an invalid value
    TypeError - when any of the parameters are of the wrong type
    OSError - when an error is returned by the OS crypto library

:return:
    A byte string of the plaintext