From: Pekka Riikonen Date: Thu, 3 May 2001 17:41:18 +0000 (+0000) Subject: updates. X-Git-Tag: SILC.0.2.2~3 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=e01bf4d1ce7e5f11d57238118e1b9c2810579b56 updates. --- diff --git a/CHANGES b/CHANGES index 9985c831..896dfd00 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,13 @@ Thu May 3 21:23:50 EEST 2001 Pekka Riikonen * 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 * Register default ciphers and stuff when using -C option with diff --git a/apps/silcd/protocol.c b/apps/silcd/protocol.c index 19d521a3..6069caaf 100644 --- a/apps/silcd/protocol.c +++ b/apps/silcd/protocol.c @@ -146,7 +146,7 @@ SilcSKEStatus silc_ske_check_version(SilcSKE ske, unsigned char *version, { 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)); @@ -191,10 +191,8 @@ SilcSKEStatus silc_ske_check_version(SilcSKE ske, unsigned char *version, if (maj != maj2) status = SILC_SKE_STATUS_BAD_VERSION; -#if 0 if (min < min2) status = SILC_SKE_STATUS_BAD_VERSION; -#endif return status; } diff --git a/apps/silcd/silcd.c b/apps/silcd/silcd.c index 482df6b4..fad379c5 100644 --- a/apps/silcd/silcd.c +++ b/apps/silcd/silcd.c @@ -49,6 +49,7 @@ static struct option long_opts[] = { "create-key-pair", 1, NULL, 'C' }, { "pkcs", 1, NULL, 10 }, { "bits", 1, NULL, 11 }, + { "identifier", 1, NULL, 12 }, { NULL, 0, NULL, 0 } }; @@ -57,6 +58,7 @@ static struct option long_opts[] = 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 */ @@ -76,6 +78,19 @@ Usage: silcd [options]\n\ -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=, HN=, RN=, E=,\n\ + O=, C=\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); } @@ -128,6 +143,10 @@ int main(int argc, char **argv) if (optarg) opt_bits = atoi(optarg); break; + case 12: + if (optarg) + opt_identifier = strdup(optarg); + break; default: silc_usage(); @@ -143,7 +162,7 @@ int main(int argc, char **argv) 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); } diff --git a/lib/silcclient/protocol.c b/lib/silcclient/protocol.c index 988620d8..d4cfae97 100644 --- a/lib/silcclient/protocol.c +++ b/lib/silcclient/protocol.c @@ -145,7 +145,7 @@ SilcSKEStatus silc_ske_check_version(SilcSKE ske, unsigned char *version, 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-")) @@ -183,10 +183,8 @@ SilcSKEStatus silc_ske_check_version(SilcSKE ske, unsigned char *version, 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, diff --git a/lib/silccrypt/silcpkcs.c b/lib/silccrypt/silcpkcs.c index 43ee60f3..80ff59ba 100644 --- a/lib/silccrypt/silcpkcs.c +++ b/lib/silccrypt/silcpkcs.c @@ -446,8 +446,12 @@ SilcPublicKeyIdentifier silc_pkcs_decode_identifier(char *identifier) 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));