rv = DSA_SignDigest((DSAPrivateKey *)ctx, &signature, &digest);
rv = DSA_SignDigest(&(key->u.dsa), &signature, &digest);
nsc_DSA_Sign_Stub(void *ctx, CK_BYTE_PTR pSignature,			    CK_ULONG_PTR ulSignatureLen, CK_ULONG maxulSignatureLen,			    CK_BYTE_PTR pData, CK_ULONG ulDataLen){    SECItem signature = { 0 }, digest;    SECStatus rv;    (void)SECITEM_AllocItem(NULL, &signature, maxulSignatureLen);    digest.data = pData;    digest.len = ulDataLen;    rv = DSA_SignDigest((DSAPrivateKey *)ctx, &signature, &digest);    *ulSignatureLen = signature.len;    PORT_Memcpy(pSignature, signature.data, signature.len);    SECITEM_FreeItem(&signature, PR_FALSE);    return rv;}