* Check minor version as well in the SKE. Affected files are
silcd/protocol.c and lib/silcclient/protocol.c.
+ * Added --identifier option to the server so that an identifier
+ can be when creating the public key for the server. Affected
+ file is silcd/silcd.c.
+
+ * Fixed minor decoding bug in silc_pkcs_decode_identifier in
+ lib/silccrypt/silcpkcs.c.
+
Wed May 2 20:50:49 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
* Register default ciphers and stuff when using -C option with
{
SilcSKEStatus status = SILC_SKE_STATUS_OK;
char *cp;
- int maj = 0, min = 0, build = 0, maj2, min2, build2;
+ int maj = 0, min = 0, build = 0, maj2 = 0, min2 = 0, build2 = 0;
SILC_LOG_INFO(("%s (%s) is version %s", ske->sock->hostname,
ske->sock->ip, version));
if (maj != maj2)
status = SILC_SKE_STATUS_BAD_VERSION;
-#if 0
if (min < min2)
status = SILC_SKE_STATUS_BAD_VERSION;
-#endif
return status;
}
{ "create-key-pair", 1, NULL, 'C' },
{ "pkcs", 1, NULL, 10 },
{ "bits", 1, NULL, 11 },
+ { "identifier", 1, NULL, 12 },
{ NULL, 0, NULL, 0 }
};
static bool opt_create_keypair = FALSE;
static char *opt_keypath = NULL;
static char *opt_pkcs = "rsa";
+static char *opt_identifier = NULL;
static int opt_bits = 1024;
/* Prints out the usage of silc client */
-C, --create-key-pair=PATH Create new public key pair\n\
--pkcs=PKCS Set the PKCS of the public key pair\n\
--bits=VALUE Set length of the public key pair\n\
+ --identifier=IDENTIFIER Public key identifier\n\
+\n\
+ The public key identifier may be of the following format:\n\
+\n\
+ UN=<username>, HN=<hostname or IP>, RN=<real name>, E=<email>,\n\
+ O=<organization>, C=<country>\n\
+\n\
+ The UN and HN must be provided, the others are optional. If the\n\
+ --identifier option is not used an identifier will be created for\n\
+ the public key automatically.\n\
+\n\
+ Example identifier: \"UN=foobar, HN=foo.bar.com, RN=Foo T. Bar, \n\
+ E=foo@bar.com, C=FI\"\n\
\n");
exit(0);
}
if (optarg)
opt_bits = atoi(optarg);
break;
+ case 12:
+ if (optarg)
+ opt_identifier = strdup(optarg);
+ break;
default:
silc_usage();
silc_hash_register_default();
silc_hmac_register_default();
silc_server_create_key_pair(opt_pkcs, opt_bits, opt_keypath,
- NULL, NULL, NULL);
+ opt_identifier, NULL, NULL);
exit(0);
}
SilcClient client = (SilcClient)ske->user_data;
SilcSKEStatus status = SILC_SKE_STATUS_OK;
char *cp;
- int maj = 0, min = 0, build = 0, maj2, min2, build2;
+ int maj = 0, min = 0, build = 0, maj2 = 0, min2 = 0, build2 = 0;
/* Check for initial version string */
if (!strstr(version, "SILC-1.0-"))
if (maj != maj2)
status = SILC_SKE_STATUS_BAD_VERSION;
-#if 0
if (min < min2)
status = SILC_SKE_STATUS_BAD_VERSION;
-#endif
if (status != SILC_SKE_STATUS_OK)
client->ops->say(client, conn,
while (cp) {
len = strcspn(cp, ",");
if (len - 1 >= 0 && cp[len - 1] == '\\') {
- cp += len + 1;
- continue;
+ while (cp) {
+ cp += len + 1;
+ len = strcspn(cp, ",") + len;
+ if (len - 1 >= 0 && cp[len - 1] != '\\')
+ break;
+ }
}
item = silc_calloc(len + 1, sizeof(char));