예제 #1
0
static void signkey(const char *signthis, const char *signwith,
		    const char *trustlevel)
{
	int rc;
	FILE *fp=NULL;

	int n=atoi(trustlevel);

	if (n < 0 || n > 9)
		n=0;

	if (gpgbadarg(signthis) || gpgbadarg(signwith))
		return;

	gpginiterr();


	fp=passphrasefp();

	rc=libmail_gpg_signkey(GPGDIR, signthis, signwith,
			       fp ? fileno(fp):-1, gpg_error, n, NULL);

	if (fp)
		fclose(fp);

	if (rc)
	{
		printf("<div class=\"indent\">%s\n", getarg("SIGNFAIL"));
		dump_error();
		printf("</div>\n");
	}
}
예제 #2
0
파일: gpg.c 프로젝트: zixia/wmail
void gpgcreate()
{
	int linelen;

	const struct unicode_info *u=unicode_find(sqwebmail_content_charset);
	const char *newname=cgi("newname");
	const char *newaddress=cgi("newaddress");
	const char *newcomment=cgi("newcomment");
	unsigned skl=atoi(cgi("skeylength"));
	unsigned ekl=atoi(cgi("ekeylength"));
	unsigned newexpire=atoi(cgi("newexpire"));
	char newexpirewhen=*cgi("newexpirewhen");
	const char *passphrase, *p;

	if (!u)
		u= &unicode_ISO8859_1;

	if (*newname == 0 || *newaddress == 0 || strchr(newaddress, '@') == 0
	    || gpgbadarg(newname) || gpgbadarg(newaddress) || gpgbadarg(newcomment)
	    || ekl < 512 || ekl > 2048 || skl < 512 || skl > 1024)
	{
		printf("%s\n", getarg("BADARGS"));
		return;
	}
	passphrase=cgi("passphrase");
	if (strcmp(passphrase, cgi("passphrase2")))
	{
		printf("%s\n", getarg("PASSPHRASEFAIL"));
		return;
	}

	for (p=passphrase; *p; p++)
	{
		if ((int)(unsigned char)*p < ' ')
		{
			printf("%s\n", getarg("PASSPHRASEFAIL"));
			return;
		}
	}

	printf("<PRE CLASS=\"gpgcreate\">");

	linelen=0;

	gpg_genkey(GPGDIR, u, newname, newaddress, newcomment, skl, ekl,
		   newexpire, newexpirewhen,
		   passphrase,
		   &dump_func,
		   &timeout_func,
		   &linelen);
	printf("</PRE>");
}
예제 #3
0
static void setdefault(const char *def)
{
	if (gpgbadarg(def))
		return;

	pref_setdefaultgpgkey(def);
}
예제 #4
0
static void delkey(const char *keyname, int flag)
{
	int rc;

	if (gpgbadarg(keyname))
		return;

	gpginiterr();

	rc=libmail_gpg_deletekey(GPGDIR, flag, keyname, gpg_error, NULL);

	if (rc)
	{
		printf("<div class=\"indent\">%s\n", getarg("DELETEFAIL"));
		dump_error();
		printf("</div>\n");
	}
}
예제 #5
0
파일: gpg.c 프로젝트: zixia/wmail
static void delkey(const char *keyname, int flag)
{
	int rc;

	if (gpgbadarg(keyname))
		return;

	gpginiterr();

	rc=gpg_deletekey(GPGDIR, flag, keyname, gpg_error, NULL);

	if (rc)
	{
		printf("<blockquote>%s\n", getarg("DELETEFAIL"));
		dump_error();
		printf("</blockquote>\n");
	}
}