/[anubis]/anubis/src/gpg.c
ViewVC logotype

Diff of /anubis/src/gpg.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by gray, Wed Feb 26 16:52:46 2003 UTC revision 1.4 by gray, Fri Feb 28 15:27:49 2003 UTC
# Line 30  Line 30 
30  #include <gpgme.h>  #include <gpgme.h>
31    
32  struct gpg_struct {  struct gpg_struct {
33            int inited;
34          char *keys;          char *keys;
35          char *passphrase;          char *passphrase;
36  };  };
# Line 76  gpgme_init(void) Line 77  gpgme_init(void)
77                  anubis_error(HARD, _("GPGME: failed. %s."), gpgme_strerror(err));                  anubis_error(HARD, _("GPGME: failed. %s."), gpgme_strerror(err));
78                  return -1;                  return -1;
79          }          }
80            gpg.inited = 1;
81          if (options.termlevel == DEBUG)          if (options.termlevel == DEBUG)
82                  puts(gpgme_get_engine_info());                  puts(gpgme_get_engine_info());
83          return 0;          return 0;
# Line 95  gpg_sign(char *gpg_data) Line 97  gpg_sign(char *gpg_data)
97          GpgmeCtx ctx;          GpgmeCtx ctx;
98          GpgmeError err = 0;          GpgmeError err = 0;
99          GpgmeData in, out;          GpgmeData in, out;
100            GpgmeKey key;
101            
102          char buf[256];          char buf[256];
103          char *signed_data;          char *signed_data;
104          int size;          int size;
# Line 104  gpg_sign(char *gpg_data) Line 108  gpg_sign(char *gpg_data)
108          signed_data = (char *)xmalloc(size);          signed_data = (char *)xmalloc(size);
109          memset(buf, 0, sizeof(buf));          memset(buf, 0, sizeof(buf));
110          fail_if_err(gpgme_new(&ctx));          fail_if_err(gpgme_new(&ctx));
111    
112            if (gpg.keys) {
113                    err = gpgme_op_keylist_start(ctx, gpg.keys, 0);
114                    if (!err) {
115                            while ((err = gpgme_op_keylist_next(ctx, &key)) == 0)
116                                    err = gpgme_signers_add(ctx, key);
117                    }
118                    if (err && err != GPGME_EOF) {
119                            anubis_error(HARD, _("GPGME: cannot list keys: %s"),
120                                         gpgme_strerror(err));
121                            topt |= T_ERROR;
122                    }
123            }
124          gpgme_set_passphrase_cb(ctx, (GpgmePassphraseCb)passphrase_cb, 0);          gpgme_set_passphrase_cb(ctx, (GpgmePassphraseCb)passphrase_cb, 0);
125          gpgme_set_textmode(ctx, 1);          gpgme_set_textmode(ctx, 1);
126          gpgme_set_armor(ctx, 1);          gpgme_set_armor(ctx, 1);
# Line 262  gpg_parser(int method, int key, char *ar Line 279  gpg_parser(int method, int key, char *ar
279  {  {
280          switch (key) {          switch (key) {
281          case KW_GPG_PASSPHRASE:          case KW_GPG_PASSPHRASE:
282                  gpg.passphrase = arg;                  free(gpg.passphrase);
283                  gpgme_init();                  gpg.passphrase = strdup(arg);
                 memset(gpg.passphrase, 0, strlen(gpg.passphrase));  
284                  break;                  break;
285                                    
286          case KW_GPG_ENCRYPT:          case KW_GPG_ENCRYPT:
# Line 272  gpg_parser(int method, int key, char *ar Line 288  gpg_parser(int method, int key, char *ar
288                  gpg.keys = allocbuf(arg, 0);                  gpg.keys = allocbuf(arg, 0);
289                  gpg.keys = xrealloc(gpg.keys, strlen(gpg.keys) + 2);                  gpg.keys = xrealloc(gpg.keys, strlen(gpg.keys) + 2);
290                  strcat(gpg.keys, ",");                  strcat(gpg.keys, ",");
291                    if (gpg.inited == 0 && gpgme_init())
292                            break;
293                  gpg_proc(msg, gpg_encrypt_to_users);                  gpg_proc(msg, gpg_encrypt_to_users);
294                  break;                  break;
295                                    
296          case KW_GPG_SIGN:                        case KW_GPG_SIGN:
297                  if (strcmp(arg, "yes") == 0)                  if (strcmp(arg, "no")) {
298                            xfree(gpg.keys);
299                            if (strcmp(arg, "yes"))
300                                    gpg.keys = strdup(arg);
301                            if (gpg.inited == 0 && gpgme_init())
302                                    break;
303                          gpg_proc(msg, gpg_sign);                          gpg_proc(msg, gpg_sign);
304                    }
305                  break;                  break;
306                                    
307          case KW_GPG_HOME:          case KW_GPG_HOME:

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26