async def create_cred_req(self, cred_offer_json: str, cd_id: str) -> (str, str):
LOGGER.debug('<STR_LIT>', cred_offer_json, cd_id)<EOL>self._assert_link_secret('<STR_LIT>')<EOL>cred_def_json = await self.get_cred_def(cd_id)<EOL>schema_seq_no = int(json.loads(cred_def_json)['<STR_LIT>'])<EOL>schema_json = await self.get_schema(schema_seq_no)<EOL>schema = json.loads(schema_json)<EOL>if not schema:<EOL><INDENT>LOGGER.debug(<EOL>'<STR_LIT>',<EOL>schema_seq_no)<EOL>raise AbsentSchema('<STR_LIT>'.format(schema_seq_no))<EOL><DEDENT>(cred_req_json, cred_req_metadata_json) = await anoncreds.prover_create_credential_req(<EOL>self.wallet.handle,<EOL>self.did,<EOL>cred_offer_json,<EOL>cred_def_json,<EOL>self._link_secret)<EOL>rv = (cred_req_json, cred_req_metadata_json)<EOL>LOGGER.debug('<STR_LIT>', rv)<EOL>return rv<EOL>
Create credential request as HolderProver and store in wallet; return credential json and metadata json.

Raise AbsentLinkSecret if link secret not set.

:param cred_offer_json: credential offer json
:param cd_id: credential definition identifier
:return: cred request json and corresponding metadata json as created and stored in wallet