예제 #1
0
    def test_functions(self):
        self.assertIsInstance(Security.CMSEncoderGetTypeID(), int)

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

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

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

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

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

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

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

        self.assertFalse(
            hasattr(Security, "CMSEncoderSetEncapsulatedContentType"))

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

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

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

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

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

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

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

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

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

        self.assertFalse(hasattr(Security, "CMSEncode"))

        self.assertResultHasType(Security.CMSEncodeContent, objc._C_INT)
        self.assertArgHasType(Security.CMSEncodeContent, 0, objc._C_ID)
        self.assertArgHasType(Security.CMSEncodeContent, 1, objc._C_ID)
        self.assertArgHasType(Security.CMSEncodeContent, 2, objc._C_ID)
        self.assertArgHasType(Security.CMSEncodeContent, 3, objc._C_NSBOOL)
        self.assertArgHasType(Security.CMSEncodeContent, 4, objc._C_UINT)
        self.assertArgHasType(Security.CMSEncodeContent, 5,
                              objc._C_IN + objc._C_PTR + objc._C_VOID)
        self.assertArgSizeInArg(Security.CMSEncodeContent, 5, 6)
        self.assertArgHasType(Security.CMSEncodeContent, 6, objc._C_ULNG)
        self.assertArgHasType(Security.CMSEncodeContent, 7,
                              objc._C_OUT + objc._C_PTR + objc._C_ID)
        self.assertArgIsCFRetained(Security.CMSEncodeContent, 7)

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