34 |
#include "wptW32API.h" |
#include "wptW32API.h" |
35 |
#include "wptGPG.h" |
#include "wptGPG.h" |
36 |
#include "wptErrors.h" |
#include "wptErrors.h" |
37 |
|
#include "wptUTF8.h" |
38 |
|
|
39 |
|
|
40 |
/* Parse the colon status information of @line and store |
/* Parse the colon status information of @line and store |
75 |
if (pend == NULL) |
if (pend == NULL) |
76 |
break; |
break; |
77 |
switch (field) { |
switch (field) { |
78 |
case 4: r->pubkey_algo = (gpgme_pubkey_algo_t)atol (pend); break; |
case 4: |
79 |
case 10: strncpy (r->fpr, pend, 40); r->fpr[40] = 0; break; |
r->pubkey_algo = (gpgme_pubkey_algo_t)atol (pend); |
80 |
|
break; |
81 |
|
|
82 |
|
case 10: |
83 |
|
strncpy (r->fpr, pend, 40); |
84 |
|
r->fpr[40] = 0; |
85 |
|
break; |
86 |
} |
} |
87 |
} |
} |
88 |
if (p) |
if (p) |
99 |
{ |
{ |
100 |
gpg_uid_info_t i, t; |
gpg_uid_info_t i, t; |
101 |
char *p, *pend; |
char *p, *pend; |
102 |
|
char *name; |
103 |
int field = 0, len = 0; |
int field = 0, len = 0; |
104 |
|
|
105 |
if (!line || strlen (line) < 3 || strncmp (line, "uid", 3)) |
if (!line || strlen (line) < 3 || strncmp (line, "uid", 3)) |
130 |
break; |
break; |
131 |
|
|
132 |
case 10: /* user ID */ |
case 10: /* user ID */ |
133 |
i->name = (char *)calloc (1, strlen (pend)+1); |
name = (char *)calloc (1, strlen (pend)+1); |
134 |
if (!i->name) |
if (!name) |
135 |
return gpg_error (GPG_ERR_ENOMEM);; |
return gpg_error (GPG_ERR_ENOMEM);; |
136 |
gpg_decode_c_string (pend, &i->name, strlen (pend)+ 1); |
gpg_decode_c_string (pend, &name, strlen (pend)+ 1); |
137 |
|
i->name = utf8_to_native (name); |
138 |
|
safe_free (name); |
139 |
if (strchr (pend, '<') != NULL && strchr (pend, '>') != NULL) { |
if (strchr (pend, '<') != NULL && strchr (pend, '>') != NULL) { |
140 |
int pos = strchr (i->name, '<')- i->name + 1; |
int pos = strchr (i->name, '<')- i->name + 1; |
141 |
int end = strchr (i->name, '>') - i->name; |
int end = strchr (i->name, '>') - i->name; |
148 |
|
|
149 |
case 13: /* preferences */ |
case 13: /* preferences */ |
150 |
if (strstr (pend, "mdc")) { |
if (strstr (pend, "mdc")) { |
151 |
|
const char *s = "no-ks-modify"; |
152 |
len = strlen (pend) - 4; /* ,mdc */ |
len = strlen (pend) - 4; /* ,mdc */ |
153 |
if (strstr (pend, "no-ks-modify")) { |
if (strstr (pend, s)) { |
154 |
i->flags.no_ks_modify = 1; |
i->flags.no_ks_modify = 1; |
155 |
len -= 13; /* ,no-ks-modify */ |
len -= strlen (s)+1; /* ',' + s */ |
156 |
} |
} |
157 |
i->prefs = (char*)calloc (1, len+1); |
i->prefs = (char*)calloc (1, len+1); |
158 |
if (!i->prefs) |
if (!i->prefs) |
170 |
break; |
break; |
171 |
|
|
172 |
case 14: /* index/flags */ |
case 14: /* index/flags */ |
173 |
i->index = atol (pend); |
i->index = atoi (pend); |
174 |
if (strchr (pend, 'r')) |
if (strchr (pend, 'r')) |
175 |
i->flags.revoked = 1; |
i->flags.revoked = 1; |
176 |
if (strchr (pend, 'p')) |
if (strchr (pend, 'p')) |
385 |
{ |
{ |
386 |
cmd_sent = 0; |
cmd_sent = 0; |
387 |
cnt = 0; |
cnt = 0; |
|
//resval = 0; |
|
388 |
} |
} |
389 |
|
|
390 |
|
|
805 |
} |
} |
806 |
|
|
807 |
|
|
808 |
|
/* Remove unusable parts and all signatures from a key. */ |
809 |
|
gpgme_error_t |
810 |
|
GpgKeyEdit::minimizeKey (void) |
811 |
|
{ |
812 |
|
if (!this->key) |
813 |
|
return gpg_error (GPG_ERR_INV_OBJ); |
814 |
|
type = GPG_EDITKEY_MINIMIZE; |
815 |
|
return gpg_editkey (this->ctx, this->key, this); |
816 |
|
} |
817 |
|
|
818 |
|
|
819 |
/* Remove unusable parts from a key. */ |
/* Remove unusable parts from a key. */ |
820 |
gpgme_error_t |
gpgme_error_t |
821 |
GpgKeyEdit::cleanKey (void) |
GpgKeyEdit::cleanKey (void) |
831 |
index @uid_index to the prefs given in @new_prefs. |
index @uid_index to the prefs given in @new_prefs. |
832 |
Return value: 0 on success. */ |
Return value: 0 on success. */ |
833 |
gpgme_error_t |
gpgme_error_t |
834 |
GpgKeyEdit::setUseridPreferences (int _uid_index, const char *new_prefs) |
GpgKeyEdit::setUseridPreferences (int _uid_index, const char *_new_prefs) |
835 |
{ |
{ |
836 |
if (!this->key) |
if (!this->key) |
837 |
return gpg_error (GPG_ERR_INV_OBJ); |
return gpg_error (GPG_ERR_INV_OBJ); |
838 |
if (key_has_passwd && !this->pass) |
if (key_has_passwd && !this->pass) |
839 |
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
return gpg_error (GPG_ERR_INV_PASSPHRASE); |
840 |
return 0; |
type = GPG_EDITKEY_SETPREF; |
841 |
|
this->uid_index = _uid_index; |
842 |
|
this->new_prefs = _new_prefs; |
843 |
|
return gpg_editkey (this->ctx, this->key, this); |
844 |
} |
} |
845 |
|
|
846 |
|
|