ret = RSA_verify(NID_sha1, digest, dlen, sigblob, len, key->rsa);
ret = RSA_verify(nid, digest, dlen, sigblob, len, key->rsa);
ssh_rsa_verify(    Key *key,    u_char *signature, int signaturelen,    u_char *data, int datalen){	Buffer b;	EVP_MD *evp_md = EVP_sha1();	EVP_MD_CTX md;	char *ktype;	u_char *sigblob, *digest;	u_int len, dlen;	int rlen;	int ret;	if (key == NULL || key->type != KEY_RSA || key->rsa == NULL) {		error("ssh_rsa_verify: no RSA key");		return -1;	}	if (BN_num_bits(key->rsa->n) < 768) {		error("ssh_rsa_verify: n too small: %d bits",		    BN_num_bits(key->rsa->n));		return -1;	}	buffer_init(&b);	buffer_append(&b, (char *) signature, signaturelen);	ktype = buffer_get_string(&b, NULL);	if (strcmp("ssh-rsa", ktype) != 0) {		error("ssh_rsa_verify: cannot handle type %s", ktype);		buffer_free(&b);		xfree(ktype);		return -1;	}	xfree(ktype);	sigblob = (u_char *)buffer_get_string(&b, &len);	rlen = buffer_len(&b);	buffer_free(&b);	if(rlen != 0) {		error("ssh_rsa_verify: remaining bytes in signature %d", rlen);		return -1;	}	dlen = evp_md->md_size;	digest = xmalloc(dlen);	EVP_DigestInit(&md, evp_md);	EVP_DigestUpdate(&md, data, datalen);	EVP_DigestFinal(&md, digest, NULL);	ret = RSA_verify(NID_sha1, digest, dlen, sigblob, len, key->rsa);	memset(digest, 'd', dlen);	xfree(digest);	memset(sigblob, 's', len);	xfree(sigblob);	if (ret == 0) {		int ecode = ERR_get_error();		error("ssh_rsa_verify: RSA_verify failed: %s", ERR_error_string(ecode, NULL));	}	debug("ssh_rsa_verify: signature %scorrect", (ret==0) ? "in" : "");	return ret;}