U
    ;gZ                     @   s   d dl mZmZmZmZ ddlmZ ddlmZ ddl	m
Z
mZ e dkrlddlmZmZ dd	lmZmZ n ddlmZmZ dd	lmZmZ d
dddgZddd
Zdd Zee e G dd dZdS )    )unicode_literalsdivisionabsolute_importprint_function   )ffi)null)TLSDisconnectErrorTLSGracefulDisconnectErrorZcffi   )Securityversion_info)CoreFoundation	CFHelpershandle_sec_errorosx_version_infor   SecurityConstNc                 C   s   | dkrdS | t tjtjgkr(td| tjkr:tdt| t	 }t
|}t| |dksl|dkrtd|  }|dkrt}||dS )a<  
    Checks a Security OSStatus error code and throws an exception if there is an
    error to report

    :param error:
        An OSStatus

    :param exception_class:
        The exception class to use for the exception if an error occurred

    :raises:
        OSError - when the OSStatus contains an error
    r   Nz$The remote end closed the connection zOSStatus %s)setr   errSSLClosedNoNotifyerrSSLClosedAbortr	   errSSLClosedGracefulr
   r   ZSecCopyErrorMessageStringr   r   Zcf_string_to_unicoder   Z	CFReleaseOSError)errorZexception_classZcf_error_stringoutput r   ;/tmp/pip-unpacked-wheel-x1gypflw/oscrypto/_mac/_security.pyr      s    


c                 C   s   t | }t|S )N)r   ZSecPolicyCopyPropertiesr   Zcf_dictionary_to_dict)valueZproperties_dictr   r   r   _extract_policy_properties<   s    
r   c                   @   s  e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+d Z,dZ-d!Z.d"Z/dZ0dZ1dZ2dZ3d#Z4d$Z5d%Z6d&Z7dZ8dZ9dZ:dZ;dZ<d'Z=d(Z>d)Z?dZ@d*ZAd+S ),r   r   r   r      @         iiiiiiiiiiiiiiiiiiii $i
!i!i!i*!i!s	   *Hcds	   *Hcdi iQi,iR*   +   I       N)B__name__
__module____qualname__ZkSecTrustSettingsDomainUserZkSecTrustSettingsDomainAdminZkSecTrustSettingsDomainSystemZkSecTrustResultProceedZkSecTrustResultUnspecifiedZkSecTrustOptionImplicitAnchorsZkSecFormatOpenSSLZkSecItemTypePrivateKeyZkSecItemTypePublicKeyZ"kSSLSessionOptionBreakOnServerAuthZkSSLProtocol2ZkSSLProtocol3ZkTLSProtocol1ZkTLSProtocol11ZkTLSProtocol12ZkSSLClientSideZkSSLStreamTypeZerrSSLProtocolZerrSSLWouldBlockr   r   r   ZerrSSLXCertChainInvalidZerrSSLCryptoZerrSSLInternalZerrSSLCertExpiredZerrSSLCertNotYetValidZerrSSLUnknownRootCertZerrSSLNoRootCertZerrSSLHostNameMismatchZerrSSLPeerHandshakeFailZerrSSLPeerProtocolVersionZerrSSLPeerUserCancelledZerrSSLWeakPeerEphemeralDHKeyZerrSSLServerAuthCompletedZerrSSLRecordOverflowZ!CSSMERR_APPLETP_HOSTNAME_MISMATCHZCSSMERR_TP_CERT_EXPIREDZCSSMERR_TP_CERT_NOT_VALID_YETZCSSMERR_TP_CERT_REVOKEDZCSSMERR_TP_NOT_TRUSTEDZCSSMERR_TP_CERT_SUSPENDEDZCSSM_CERT_X_509v3ZAPPLE_TP_REVOCATION_CRLZAPPLE_TP_REVOCATION_OCSPZCSSM_APPLE_TP_OCSP_OPTS_VERSIONZCSSM_TP_ACTION_OCSP_DISABLE_NETZ&CSSM_TP_ACTION_OCSP_CACHE_READ_DISABLEZCSSM_APPLE_TP_CRL_OPTS_VERSIONZerrSecVerifyFailedZerrSecNoTrustSettingsZerrSecItemNotFoundZerrSecInvalidTrustSettingsZkSecPaddingNoneZkSecPaddingPKCS1ZCSSM_KEYUSE_SIGNZCSSM_KEYUSE_VERIFYZCSSM_ALGID_DHZCSSM_ALGID_RSAZCSSM_ALGID_DSAZCSSM_ALGID_ECDSAZCSSM_KEYATTR_PERMANENTZCSSM_KEYATTR_EXTRACTABLEr   r   r   r   r   G   s~   )N)
__future__r   r   r   r   r   r   _ffir   errorsr	   r
   Z_security_cffir   r   r   Z_core_foundation_cffir   r   Z_security_ctypesZ_core_foundation_ctypes__all__r   r   Zregister_native_mappingZSecPolicyGetTypeIDr   r   r   r   r   <module>   s(   

$