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"); } }
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>"); }
static void setdefault(const char *def) { if (gpgbadarg(def)) return; pref_setdefaultgpgkey(def); }
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"); } }
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"); } }