void Certificate(pSelf,...) t_testapi_usrcreds * pSelf PPCODE: int certBinaryLen = 0; int ret = 0; char* certificate = NULL; // look for optional returnCode arg SV *rval = ST(3); InitError(items, 3, rval); if (items > 2){ certificate = SvPV_nolen(ST(1)); certBinaryLen = (int)SvIV(ST(2)); if(certificate) { /* Cert is to be set */ }else{ /* Couldn't properly read an argument */ HandleError("Certificate1", items, 3, rval, -1); XSRETURN_UNDEF; } } if(!pSelf->credStruct.lpszCertBinary){ /* The certificate data is not set. */ HandleError("Certificatefailed2", items, 3, rval, -2); XSRETURN_UNDEF; } /* Return certificate currently set */ EXTEND(SP,2); PUSHs(sv_2mortal(newSVpv(pSelf->credStruct.lpszCertBinary,0))); PUSHs(sv_2mortal(newSViv((IV)pSelf->credStruct.nCertBinaryLen ))); XSRETURN(2);