Пример #1
0
    def test_functions(self):
        self.assertIsInstance(Security.SSLContextGetTypeID(), int)

        self.assertFalse(hasattr(Security, "SSLNewContext"))
        self.assertFalse(hasattr(Security, "SSLDisposeContext"))

        self.assertResultHasType(Security.SSLGetSessionState, objc._C_INT)
        self.assertArgHasType(Security.SSLGetSessionState, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLGetSessionState, 1,
                              objc._C_OUT + objc._C_PTR + objc._C_INT)

        self.assertResultHasType(Security.SSLSetIOFuncs, objc._C_INT)
        self.assertArgHasType(Security.SSLSetIOFuncs, 0, objc._C_ID)
        self.assertArgIsFunction(Security.SSLSetIOFuncs, 1, SSLReadFunc, True)
        self.assertArgIsFunction(Security.SSLSetIOFuncs, 2, SSLWriteFunc, True)

        self.assertResultHasType(Security.SSLSetCertificate, objc._C_INT)
        self.assertArgHasType(Security.SSLSetCertificate, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLSetCertificate, 1, objc._C_ID)

        self.assertResultHasType(Security.SSLSetConnection, objc._C_INT)
        self.assertArgHasType(Security.SSLSetConnection, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLSetConnection, 1, objc._C_ID)

        self.assertResultHasType(Security.SSLGetConnection, objc._C_INT)
        self.assertArgHasType(Security.SSLGetConnection, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLGetConnection, 1,
                              objc._C_OUT + objc._C_PTR + objc._C_ID)

        self.assertResultHasType(Security.SSLSetPeerDomainName, objc._C_INT)
        self.assertArgHasType(Security.SSLSetPeerDomainName, 0, objc._C_ID)
        self.assertArgHasType(
            Security.SSLSetPeerDomainName,
            1,
            objc._C_IN + objc._C_PTR + objc._C_CHAR_AS_TEXT,
        )
        self.assertArgSizeInArg(Security.SSLSetPeerDomainName, 1, 2)
        self.assertArgHasType(Security.SSLSetPeerDomainName, 2, objc._C_ULNG)

        self.assertResultHasType(Security.SSLGetPeerDomainNameLength,
                                 objc._C_INT)
        self.assertArgHasType(Security.SSLGetPeerDomainNameLength, 0,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SSLGetPeerDomainNameLength,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_ULNG,
        )

        self.assertResultHasType(Security.SSLGetPeerDomainName, objc._C_INT)
        self.assertArgHasType(Security.SSLGetPeerDomainName, 0, objc._C_ID)
        self.assertArgHasType(
            Security.SSLGetPeerDomainName,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_CHAR_AS_TEXT,
        )
        self.assertArgSizeInArg(Security.SSLGetPeerDomainName, 1, 2)
        self.assertArgHasType(Security.SSLGetPeerDomainName, 2,
                              objc._C_INOUT + objc._C_PTR + objc._C_ULNG)

        self.assertResultHasType(Security.SSLGetNegotiatedProtocolVersion,
                                 objc._C_INT)
        self.assertArgHasType(Security.SSLGetNegotiatedProtocolVersion, 0,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SSLGetNegotiatedProtocolVersion,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_INT,
        )

        self.assertResultHasType(Security.SSLGetNumberSupportedCiphers,
                                 objc._C_INT)
        self.assertArgHasType(Security.SSLGetNumberSupportedCiphers, 0,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SSLGetNumberSupportedCiphers,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_ULNG,
        )

        self.assertResultHasType(Security.SSLGetSupportedCiphers, objc._C_INT)
        self.assertArgHasType(Security.SSLGetSupportedCiphers, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLGetSupportedCiphers, 1,
                              objc._C_OUT + objc._C_PTR + objc._C_INT)
        self.assertArgSizeInArg(Security.SSLGetSupportedCiphers, 1, 2)
        self.assertArgHasType(
            Security.SSLGetSupportedCiphers,
            2,
            objc._C_INOUT + objc._C_PTR + objc._C_ULNG,
        )

        self.assertResultHasType(Security.SSLSetEnabledCiphers, objc._C_INT)
        self.assertArgHasType(Security.SSLSetEnabledCiphers, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLSetEnabledCiphers, 1,
                              objc._C_IN + objc._C_PTR + objc._C_INT)
        self.assertArgSizeInArg(Security.SSLSetEnabledCiphers, 1, 2)
        self.assertArgHasType(Security.SSLSetEnabledCiphers, 2, objc._C_ULNG)

        self.assertResultHasType(Security.SSLGetNumberEnabledCiphers,
                                 objc._C_INT)
        self.assertArgHasType(Security.SSLGetNumberEnabledCiphers, 0,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SSLGetNumberEnabledCiphers,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_ULNG,
        )

        self.assertResultHasType(Security.SSLGetEnabledCiphers, objc._C_INT)
        self.assertArgHasType(Security.SSLGetEnabledCiphers, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLGetEnabledCiphers, 1,
                              objc._C_OUT + objc._C_PTR + objc._C_INT)
        self.assertArgSizeInArg(Security.SSLGetEnabledCiphers, 1, 2)
        self.assertArgHasType(Security.SSLGetEnabledCiphers, 2,
                              objc._C_INOUT + objc._C_PTR + objc._C_ULNG)

        self.assertFalse(hasattr(Security, "SSLSetProtocolVersionEnabled"))
        self.assertFalse(hasattr(Security, "SSLGetProtocolVersionEnabled"))
        self.assertFalse(hasattr(Security, "SSLSetProtocolVersion"))
        self.assertFalse(hasattr(Security, "SSLGetProtocolVersion"))
        self.assertFalse(hasattr(Security, "SSLSetEnableCertVerify"))
        self.assertFalse(hasattr(Security, "SSLGetEnableCertVerify"))
        self.assertFalse(hasattr(Security, "SSLSetAllowsExpiredCerts"))
        self.assertFalse(hasattr(Security, "SSLGetAllowsExpiredCerts"))
        self.assertFalse(hasattr(Security, "SSLSetAllowsExpiredRoots"))
        self.assertFalse(hasattr(Security, "SSLGetAllowsExpiredRoots"))
        self.assertFalse(hasattr(Security, "SSLSetAllowsAnyRoot"))
        self.assertFalse(hasattr(Security, "SSLGetAllowsAnyRoot"))
        self.assertFalse(hasattr(Security, "SSLSetTrustedRoots"))
        self.assertFalse(hasattr(Security, "SSLCopyTrustedRoots"))
        self.assertFalse(hasattr(Security, "SSLCopyPeerCertificates"))

        self.assertResultHasType(Security.SSLSetPeerID, objc._C_INT)
        self.assertArgHasType(Security.SSLSetPeerID, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLSetPeerID, 1,
                              objc._C_IN + objc._C_PTR + objc._C_VOID)
        self.assertArgSizeInArg(Security.SSLSetPeerID, 1, 2)
        self.assertArgHasType(Security.SSLSetPeerID, 2, objc._C_ULNG)

        self.assertResultHasType(Security.SSLGetPeerID, objc._C_INT)
        self.assertArgHasType(Security.SSLGetPeerID, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLGetPeerID, 1,
                              objc._C_OUT + objc._C_PTR + objc._C_VOID)
        self.assertArgSizeInArg(Security.SSLGetPeerID, 1, 2)
        self.assertArgHasType(Security.SSLGetPeerID, 2,
                              objc._C_INOUT + objc._C_PTR + objc._C_ULNG)

        self.assertResultHasType(Security.SSLGetNegotiatedCipher, objc._C_INT)
        self.assertArgHasType(Security.SSLGetNegotiatedCipher, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLGetNegotiatedCipher, 1,
                              objc._C_OUT + objc._C_PTR + objc._C_INT)

        self.assertResultHasType(Security.SSLSetClientSideAuthenticate,
                                 objc._C_INT)
        self.assertArgHasType(Security.SSLSetClientSideAuthenticate, 0,
                              objc._C_ID)
        self.assertArgHasType(Security.SSLSetClientSideAuthenticate, 1,
                              objc._C_INT)

        self.assertResultHasType(Security.SSLAddDistinguishedName, objc._C_INT)
        self.assertArgHasType(Security.SSLAddDistinguishedName, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLAddDistinguishedName, 1,
                              objc._C_IN + objc._C_PTR + objc._C_VOID)
        self.assertArgSizeInArg(Security.SSLAddDistinguishedName, 1, 2)
        self.assertArgHasType(Security.SSLAddDistinguishedName, 2,
                              objc._C_ULNG)

        self.assertResultHasType(Security.SSLSetCertificateAuthorities,
                                 objc._C_INT)
        self.assertArgHasType(Security.SSLSetCertificateAuthorities, 0,
                              objc._C_ID)
        self.assertArgHasType(Security.SSLSetCertificateAuthorities, 1,
                              objc._C_ID)
        self.assertArgHasType(Security.SSLSetCertificateAuthorities, 2,
                              objc._C_NSBOOL)

        self.assertResultHasType(Security.SSLCopyCertificateAuthorities,
                                 objc._C_INT)
        self.assertArgHasType(Security.SSLCopyCertificateAuthorities, 0,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SSLCopyCertificateAuthorities,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_ID,
        )
        self.assertArgIsCFRetained(Security.SSLCopyCertificateAuthorities, 1)

        self.assertResultHasType(Security.SSLCopyDistinguishedNames,
                                 objc._C_INT)
        self.assertArgHasType(Security.SSLCopyDistinguishedNames, 0,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SSLCopyDistinguishedNames,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_ID,
        )
        self.assertArgIsCFRetained(Security.SSLCopyDistinguishedNames, 1)

        self.assertResultHasType(Security.SSLGetClientCertificateState,
                                 objc._C_INT)
        self.assertArgHasType(Security.SSLGetClientCertificateState, 0,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SSLGetClientCertificateState,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_INT,
        )

        self.assertResultHasType(Security.SSLSetDiffieHellmanParams,
                                 objc._C_INT)
        self.assertArgHasType(Security.SSLSetDiffieHellmanParams, 0,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SSLSetDiffieHellmanParams,
            1,
            objc._C_IN + objc._C_PTR + objc._C_VOID,
        )
        self.assertArgSizeInArg(Security.SSLSetDiffieHellmanParams, 1, 2)
        self.assertArgHasType(Security.SSLSetDiffieHellmanParams, 2,
                              objc._C_ULNG)

        self.assertResultHasType(Security.SSLGetDiffieHellmanParams,
                                 objc._C_INT)
        self.assertArgHasType(Security.SSLGetDiffieHellmanParams, 0,
                              objc._C_ID)
        self.assertArgHasType(
            Security.SSLGetDiffieHellmanParams,
            1,
            objc._C_OUT + objc._C_PTR + objc._C_VOID,
        )
        self.assertArgSizeInArg(Security.SSLGetDiffieHellmanParams, 1, 2)
        self.assertArgHasType(
            Security.SSLGetDiffieHellmanParams,
            2,
            objc._C_INOUT + objc._C_PTR + objc._C_ULNG,
        )

        self.assertFalse(hasattr(Security, "SSLSetRsaBlinding"))
        self.assertFalse(hasattr(Security, "SSLGetRsaBlinding"))

        self.assertResultHasType(Security.SSLHandshake, objc._C_INT)
        self.assertArgHasType(Security.SSLHandshake, 0, objc._C_ID)

        self.assertResultHasType(Security.SSLWrite, objc._C_INT)
        self.assertArgHasType(Security.SSLWrite, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLWrite, 1,
                              objc._C_IN + objc._C_PTR + objc._C_VOID)
        self.assertArgSizeInArg(Security.SSLWrite, 1, 2)
        self.assertArgHasType(Security.SSLWrite, 2, objc._C_ULNG)
        self.assertArgHasType(Security.SSLWrite, 3,
                              objc._C_OUT + objc._C_PTR + objc._C_ULNG)

        self.assertResultHasType(Security.SSLRead, objc._C_INT)
        self.assertArgHasType(Security.SSLRead, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLRead, 1,
                              objc._C_OUT + objc._C_PTR + objc._C_VOID)
        self.assertArgSizeInArg(Security.SSLRead, 1, (2, 3))
        self.assertArgHasType(Security.SSLRead, 2, objc._C_ULNG)
        self.assertArgHasType(Security.SSLRead, 3,
                              objc._C_OUT + objc._C_PTR + objc._C_ULNG)

        self.assertResultHasType(Security.SSLGetBufferedReadSize, objc._C_INT)
        self.assertArgHasType(Security.SSLGetBufferedReadSize, 0, objc._C_ID)
        self.assertArgHasType(Security.SSLGetBufferedReadSize, 1,
                              objc._C_OUT + objc._C_PTR + objc._C_ULNG)

        self.assertResultHasType(Security.SSLClose, objc._C_INT)
        self.assertArgHasType(Security.SSLClose, 0, objc._C_ID)