351
 
    fprintf(stderr, "Attempting to use OpenPGP certificate %s"
 
352
 
            " and keyfile %s as GnuTLS credentials\n", pubkeyfilename,
 
 
351
    fprintf(stderr, "Attempting to use OpenPGP public key %s and"
 
 
352
            " secret key %s as GnuTLS credentials\n", pubkeyfilename,
 
 
361
361
            "Error[%d] while reading the OpenPGP key pair ('%s',"
 
362
362
            " '%s')\n", ret, pubkeyfilename, seckeyfilename);
 
363
 
    fprintf(stdout, "The GnuTLS error is: %s\n",
 
 
363
    fprintf(stderr, "The GnuTLS error is: %s\n",
 
364
364
            safer_gnutls_strerror(ret));
 
 
774
773
    const char *pubkeyname = "pubkey.txt";
 
775
774
    const char *seckeyname = "seckey.txt";
 
776
775
    mandos_context mc = { .simple_poll = NULL, .server = NULL,
 
777
 
                          .dh_bits = 1024, .priority = "SECURE256"};
 
 
776
                          .dh_bits = 1024, .priority = "SECURE256"
 
 
777
                          ":!CTYPE-X.509:+CTYPE-OPENPGP" };
 
778
778
    bool gnutls_initalized = false;
 
 
782
782
        { .name = "debug", .key = 128,
 
783
783
          .doc = "Debug mode", .group = 3 },
 
784
784
        { .name = "connect", .key = 'c',
 
786
 
          .doc = "Connect directly to a sepcified mandos server",
 
 
785
          .arg = "ADDRESS:PORT",
 
 
786
          .doc = "Connect directly to a specific Mandos server",
 
788
788
        { .name = "interface", .key = 'i',
 
790
 
          .doc = "Interface that Avahi will conntect through",
 
 
790
          .doc = "Interface that will be used to search for Mandos"
 
792
793
        { .name = "keydir", .key = 'd',
 
794
 
          .doc = "Directory where the openpgp keyring is",
 
 
795
          .doc = "Directory to read the OpenPGP key files from",
 
796
797
        { .name = "seckey", .key = 's',
 
798
 
          .doc = "Secret openpgp key for gnutls authentication",
 
 
799
          .doc = "OpenPGP secret key file base name",
 
800
801
        { .name = "pubkey", .key = 'p',
 
802
 
          .doc = "Public openpgp key for gnutls authentication",
 
 
803
          .doc = "OpenPGP public key file base name",
 
804
805
        { .name = "dh-bits", .key = 129,
 
806
 
          .doc = "dh-bits to use in gnutls communication",
 
 
807
          .doc = "Bit length of the prime number used in the"
 
 
808
          " Diffie-Hellman key exchange",
 
808
810
        { .name = "priority", .key = 130,
 
810
 
          .doc = "GNUTLS priority", .group = 1 },
 
 
812
          .doc = "GnuTLS priority string for the TLS handshake",
 
815
817
      error_t parse_opt (int key, char *arg,
 
816
818
                         struct argp_state *state) {
 
817
819
        /* Get the INPUT argument from `argp_parse', which we know is
 
818
820
           a pointer to our plugin list pointer. */
 
 
822
        case 128:               /* --debug */
 
 
825
        case 'c':               /* --connect */
 
824
826
          connect_to = arg;
 
 
828
        case 'i':               /* --interface */
 
 
831
        case 'd':               /* --keydir */
 
 
834
        case 's':               /* --seckey */
 
833
835
          seckeyname = arg;
 
 
837
        case 'p':               /* --pubkey */
 
836
838
          pubkeyname = arg;
 
 
840
        case 129:               /* --dh-bits */
 
840
842
          mc.dh_bits = (unsigned int) strtol(arg, NULL, 10);
 
 
859
861
      struct argp argp = { .options = options, .parser = parse_opt,
 
861
863
                           .doc = "Mandos client -- Get and decrypt"
 
862
 
                           " passwords from mandos server" };
 
 
864
                           " passwords from a Mandos server" };
 
863
865
      ret = argp_parse (&argp, argc, argv, 0, 0, NULL);
 
864
866
      if (ret == ARGP_ERR_UNKNOWN){
 
865
867
        fprintf(stderr, "Unknown error while parsing arguments\n");
 
 
988
990
      config.publish_addresses = 0;
 
989
991
      config.publish_workstation = 0;
 
990
992
      config.publish_domain = 0;
 
992
994
      /* Allocate a new server */
 
993
995
      mc.server = avahi_server_new(avahi_simple_poll_get
 
994
996
                                   (mc.simple_poll), &config, NULL,
 
997
999
      /* Free the Avahi configuration data */
 
998
1000
      avahi_server_config_free(&config);