Create a proof for fulfilling a corresponding proof request
        :param source_id: Tag associated by user of sdk
        :param proof_request: Proof Request data sent by requestor.
        Example:
        source_id = 'sourceId'
        request = {
            "@topic": {
            "mid": 9,
            "tid": 1
            },
            "@type": {
                "name": "PROOF_REQUEST",
                "version":"1.0"
            },
            "msg_ref_id": "ymy5nth",
            "proof_request_data": {
                "name": "Account Certificate",
                "nonce": "838186471541979035208225",
                "requested_attributes": {
                    "business_2": {
                        "name": "business"
                    },
                    "email_1": {
                        "name": "email"
                    },
                    "name_0": {
                        "name": "name"
                    }
                },
                "requested_predicates": {},
                "version": "0.1"
            }
        }
        disclosed_proof = await DisclosedProof.create(source_id, request)
        :return: Disclosed Proof Object

async def create(source_id: str, proof_request: str):
        """
        Create a proof for fulfilling a corresponding proof request
        :param source_id: Tag associated by user of sdk
        :param proof_request: Proof Request data sent by requestor.
        Example:
        source_id = 'sourceId'
        request = {
            "@topic": {
            "mid": 9,
            "tid": 1
            },
            "@type": {
                "name": "PROOF_REQUEST",
                "version":"1.0"
            },
            "msg_ref_id": "ymy5nth",
            "proof_request_data": {
                "name": "Account Certificate",
                "nonce": "838186471541979035208225",
                "requested_attributes": {
                    "business_2": {
                        "name": "business"
                    },
                    "email_1": {
                        "name": "email"
                    },
                    "name_0": {
                        "name": "name"
                    }
                },
                "requested_predicates": {},
                "version": "0.1"
            }
        }
        disclosed_proof = await DisclosedProof.create(source_id, request)
        :return: Disclosed Proof Object
        """
        constructor_params = (source_id,)

        c_source_id = c_char_p(source_id.encode('utf-8'))
        c_proof_request = c_char_p(json.dumps(proof_request).encode('utf-8'))
        c_params = (c_source_id, c_proof_request, )

        return await DisclosedProof._create("vcx_disclosed_proof_create_with_request",
                                   constructor_params,
                                   c_params)