/[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.1.1.1 by polak, Thu Jan 30 10:41:05 2003 UTC revision 1.2 by gray, Thu Feb 20 09:13:52 2003 UTC
# Line 24  Line 24 
24    
25  #include "headers.h"  #include "headers.h"
26  #include "extern.h"  #include "extern.h"
27    #include "rcfile.h"
28    
29  #ifdef HAVE_GPG  #ifdef HAVE_GPG
30  #include <gpgme.h>  #include <gpgme.h>
# Line 354  check_gpg(void) Line 355  check_gpg(void)
355          return;          return;
356  }  }
357    
358    #define KW_GPG_PASSPHRASE         1
359    #define KW_GPG_ENCRYPT            2
360    #define KW_GPG_SIGN               3
361    #define KW_RM_GPG                 4
362    #define KW_GPG_HOME               5
363    
364    int
365    gpg_parser(int method, int key, char *arg,
366               void *inv_data, void *func_data, char *line)
367    {
368            switch (key) {
369            case KW_GPG_PASSPHRASE:
370                    if (gpg.passphrase) {
371                            memset(gpg.passphrase, 0, strlen(gpg.passphrase));
372                            xfree(gpg.passphrase);
373                    }
374                    gpg.passphrase = allocbuf(arg, 0);
375                    mopt |= M_GPG_PASSPHRASE;
376                    break;
377                    
378            case KW_GPG_ENCRYPT:
379                    xfree(gpg.keys);
380                    gpg.keys = allocbuf(arg, 0);
381                    gpg.keys = xrealloc(gpg.keys, strlen(gpg.keys) + 2);
382                    strcat(gpg.keys, ",");
383                    mopt |= M_GPG_ENCRYPT;
384                    break;
385                    
386            case KW_GPG_SIGN:              
387                    if (strcmp(arg, "yes")
388                        || !(mopt & M_GPG_PASSPHRASE)) {
389                            if (gpg.passphrase) {
390                                    memset(gpg.passphrase, 0,
391                                           strlen(gpg.passphrase));
392                                    xfree(gpg.passphrase);
393                            }
394                            gpg.passphrase = allocbuf(arg, 0);
395                    }
396                    mopt |= M_GPG_SIGN;
397                    break;
398                    
399            case KW_RM_GPG:
400                    xfree(gpg.rm_key);
401                    gpg.rm_key = allocbuf(arg, 0);
402                    mopt |= M_RMGPG;
403                    break;
404    
405            case KW_GPG_HOME:
406                    setenv("GNUPGHOME", arg, 1);
407                    break;
408                    
409            default:
410                    return RC_KW_UNKNOWN;
411            }
412            return RC_KW_HANDLED;
413    }
414    
415    
416    struct rc_kwdef gpg_kw[] = {
417            { "gpg-passphrase",          KW_GPG_PASSPHRASE },          
418            { "gpg-encrypt",             KW_GPG_ENCRYPT },            
419            { "gpg-sign",                KW_GPG_SIGN },                
420            { "rm-gpg",                  KW_RM_GPG },
421            { "gpg-home",                KW_GPG_HOME },
422            { NULL },
423    };
424    
425    static struct rc_secdef_child gpg_sect_child = {
426            NULL,
427            CF_CLIENT,
428            gpg_kw,
429            gpg_parser,
430            NULL
431    };
432    
433    void
434    gpg_section_init()
435    {
436            struct rc_secdef *sp = anubis_add_section("ALL");
437    
438            rc_secdef_add_child(sp, &gpg_sect_child);
439    
440            sp = anubis_add_section("RULE");
441            rc_secdef_add_child(sp, &gpg_sect_child);
442    }      
443    
444  #endif /* HAVE_GPG */  #endif /* HAVE_GPG */
445    
446  /* EOF */  /* EOF */

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.2

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