PRStatus (*callback)(NSSToken *t, nssSession *session, CK_OBJECT_HANDLE h, void *arg),
PRStatus (*callback)(NSSCertificate *c, void *arg),
nssToken_FindCertificatesByTemplate(  NSSToken *tok,  nssSession *sessionOpt,  CK_ATTRIBUTE_PTR cktemplate,  CK_ULONG ctsize,  PRStatus (*callback)(NSSToken *t, nssSession *session,                       CK_OBJECT_HANDLE h, void *arg),  void *arg){    PRStatus *rvstack;    nssSession *session;    session = (sessionOpt) ? sessionOpt : tok->defaultSession;    nssSession_EnterMonitor(session);    /* this isn't really traversal, it's find by template ... */    rvstack = nsstoken_TraverseObjects(tok, session,                                        cktemplate, ctsize,                                        callback, arg);    nssSession_ExitMonitor(session);    if (rvstack) {	/* examine the errors */	goto loser;    }    return PR_SUCCESS;loser:    return PR_FAILURE;}