X509_get_subject_name(ctx->current_cert),buf,256);
X509_get_subject_name(ctx->current_cert),buf, sizeof buf);
static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx)	{	char buf[256];	if (!ok)		{		X509_NAME_oneline(				X509_get_subject_name(ctx->current_cert),buf,256);		printf("%s\n",buf);		printf("error %d at %d depth lookup:%s\n",ctx->error,			ctx->error_depth,			X509_verify_cert_error_string(ctx->error));		if (ctx->error == X509_V_ERR_CERT_HAS_EXPIRED) ok=1;		/* since we are just checking the certificates, it is		 * ok if they are self signed. But we should still warn		 * the user. 		 */		if (ctx->error == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT) ok=1;		/* Continue after extension errors too */		if (ctx->error == X509_V_ERR_INVALID_CA) ok=1;		if (ctx->error == X509_V_ERR_PATH_LENGTH_EXCEEDED) ok=1;		if (ctx->error == X509_V_ERR_INVALID_PURPOSE) ok=1;		if (ctx->error == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT) ok=1;		if (ctx->error == X509_V_ERR_CRL_HAS_EXPIRED) ok=1;		if (ctx->error == X509_V_ERR_CRL_NOT_YET_VALID) ok=1;		if (ctx->error == X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION) ok=1;		}	if (!v_verbose)		ERR_clear_error();	return(ok);	}