def _decrypt(private_key, ciphertext, rsa_oaep_padding=False):
if not isinstance(private_key, PrivateKey):<EOL><INDENT>raise TypeError(pretty_message(<EOL>'''<STR_LIT>''',<EOL>type_name(private_key)<EOL>))<EOL><DEDENT>if not isinstance(ciphertext, byte_cls):<EOL><INDENT>raise TypeError(pretty_message(<EOL>'''<STR_LIT>''',<EOL>type_name(ciphertext)<EOL>))<EOL><DEDENT>if not isinstance(rsa_oaep_padding, bool):<EOL><INDENT>raise TypeError(pretty_message(<EOL>'''<STR_LIT>''',<EOL>type_name(rsa_oaep_padding)<EOL>))<EOL><DEDENT>if _backend == '<STR_LIT>':<EOL><INDENT>return _advapi32_decrypt(private_key, ciphertext, rsa_oaep_padding)<EOL><DEDENT>return _bcrypt_decrypt(private_key, ciphertext, rsa_oaep_padding)<EOL>
Encrypts a value using an RSA private key

:param private_key:
    A PrivateKey instance to decrypt with

:param ciphertext:
    A byte string of the data to decrypt

:param rsa_oaep_padding:
    If OAEP padding should be used instead of PKCS#1 v1.5

: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