X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcapputil%2Fsilcapputil.c;h=573d4585e17a9f0ba439658351165effe749702f;hb=1ea936cbf1bb3b19bd55839b904ef59ada84b8b5;hp=833f40e29b4d230eeb1d1b24120b43d2fb746b13;hpb=52e57c880aba9c5e89f59d962eb9af75670b76e0;p=silc.git diff --git a/lib/silcapputil/silcapputil.c b/lib/silcapputil/silcapputil.c index 833f40e2..573d4585 100644 --- a/lib/silcapputil/silcapputil.c +++ b/lib/silcapputil/silcapputil.c @@ -31,18 +31,22 @@ static char *silc_create_pk_identifier(void) /* Get hostname */ hostname = silc_net_localhost(); - if (!hostname) + if (!hostname) { + fprintf(stderr, "Could not resolve local hostname/IP address"); return NULL; + } /* Get username (mandatory) */ username = silc_get_username(); - if (!username) + if (!username) { + fprintf(stderr, "Could not determine username"); return NULL; + } /* Create default email address, whether it is right or not */ silc_snprintf(email, sizeof(email), "%s@%s", username, hostname); - ident = silc_pkcs_silc_encode_identifier(username, hostname, realname, + ident = silc_pkcs_silc_encode_identifier(NULL, username, hostname, realname, email, NULL, NULL, NULL); if (realname) silc_free(realname); @@ -136,8 +140,7 @@ New pair of keys will be created. Please, answer to following questions.\n\ } } else { if (!def) { - fprintf(stderr, "Could not create public key identifier: %s\n", - strerror(errno)); + fprintf(stderr, "Could not create public key identifier\n"); return FALSE; } identifier = strdup(def); @@ -257,7 +260,8 @@ SilcBool silc_load_key_pair(const char *pub_filename, SILC_LOG_DEBUG(("Loading public and private keys")); - if (!silc_pkcs_load_public_key(pub_filename, return_public_key)) { + if (!silc_pkcs_load_public_key(pub_filename, + SILC_PKCS_ANY, return_public_key)) { if (pass) memset(pass, 0, strlen(pass)); silc_free(pass); @@ -272,6 +276,7 @@ SilcBool silc_load_key_pair(const char *pub_filename, if (!silc_pkcs_load_private_key(prv_filename, (const unsigned char *)pass, strlen(pass), + SILC_PKCS_ANY, return_private_key)) { silc_pkcs_public_key_free(*return_public_key); *return_public_key = NULL; @@ -296,13 +301,13 @@ SilcBool silc_show_public_key(SilcPublicKey public_key) SilcUInt32 pk_len; SilcUInt32 key_len = 0; - silc_pubkey = silc_pkcs_get_context(SILC_PKCS_SILC, public_key); + silc_pubkey = silc_pkcs_public_key_get_pkcs(SILC_PKCS_SILC, public_key); if (!silc_pubkey) return FALSE; ident = &silc_pubkey->identifier; key_len = silc_pkcs_public_key_get_len(public_key); - pk = silc_pkcs_public_key_encode(public_key, &pk_len); + pk = silc_pkcs_public_key_encode(NULL, public_key, &pk_len); if (!pk) return FALSE; fingerprint = silc_hash_fingerprint(NULL, pk, pk_len); @@ -344,7 +349,8 @@ SilcBool silc_show_public_key_file(const char *pub_filename) SilcPublicKey public_key; SilcBool ret; - if (!silc_pkcs_load_public_key((char *)pub_filename, &public_key)) { + if (!silc_pkcs_load_public_key((char *)pub_filename, + SILC_PKCS_ANY, &public_key)) { fprintf(stderr, "Could not load public key file `%s'\n", pub_filename); return FALSE; } @@ -375,6 +381,7 @@ SilcBool silc_change_private_key_passphrase(const char *prv_filename, if (!silc_pkcs_load_private_key(prv_filename, (const unsigned char *)pass, strlen(pass), + SILC_PKCS_ANY, &private_key)) { memset(pass, 0, strlen(pass)); silc_free(pass); @@ -977,33 +984,19 @@ char *silc_id_render(void *id, SilcIdType id_type) { char tmp[100]; unsigned char tmps[2]; - char *cp; memset(rid, 0, sizeof(rid)); switch(id_type) { case SILC_ID_SERVER: { SilcServerID *server_id = (SilcServerID *)id; - if (server_id->ip.data_len > 4) { -#ifdef HAVE_IPV6 - struct sockaddr_in6 ipv6; - memset(&ipv6, 0, sizeof(ipv6)); - ipv6.sin6_family = AF_INET6; - memmove(&ipv6.sin6_addr, server_id->ip.data, sizeof(ipv6.sin6_addr)); - if (!getnameinfo((struct sockaddr *)&ipv6, sizeof(ipv6), - tmp, sizeof(tmp) - 1, NULL, 0, NI_NUMERICHOST)) - _PUT_STRING(rid, tmp); -#endif - } else { - struct in_addr ipv4; - memmove(&ipv4.s_addr, server_id->ip.data, 4); - cp = inet_ntoa(ipv4); - if (cp) - _PUT_STRING(rid, cp); - } + + if (!silc_net_bin2addr(server_id->ip.data, server_id->ip.data_len, + tmp, sizeof(tmp))) + return NULL; memset(tmp, 0, sizeof(tmp)); - silc_snprintf(tmp, sizeof(tmp) - 1, ",%d,", ntohs(server_id->port)); + silc_snprintf(tmp, sizeof(tmp) - 1, ",%d,", silc_ntohs(server_id->port)); _PUT_STRING(rid, tmp); SILC_PUT16_MSB(server_id->rnd, tmps); memset(tmp, 0, sizeof(tmp)); @@ -1014,23 +1007,10 @@ char *silc_id_render(void *id, SilcIdType id_type) case SILC_ID_CLIENT: { SilcClientID *client_id = (SilcClientID *)id; - if (client_id->ip.data_len > 4) { -#ifdef HAVE_IPV6 - struct sockaddr_in6 ipv6; - memset(&ipv6, 0, sizeof(ipv6)); - ipv6.sin6_family = AF_INET6; - memmove(&ipv6.sin6_addr, client_id->ip.data, sizeof(ipv6.sin6_addr)); - if (!getnameinfo((struct sockaddr *)&ipv6, sizeof(ipv6), - tmp, sizeof(tmp) - 1, NULL, 0, NI_NUMERICHOST)) - _PUT_STRING(rid, tmp); -#endif - } else { - struct in_addr ipv4; - memmove(&ipv4.s_addr, client_id->ip.data, 4); - cp = inet_ntoa(ipv4); - if (cp) - _PUT_STRING(rid, cp); - } + + if (!silc_net_bin2addr(client_id->ip.data, client_id->ip.data_len, + tmp, sizeof(tmp))) + return NULL; memset(tmp, 0, sizeof(tmp)); silc_snprintf(tmp, sizeof(tmp) - 1, ",%02x,", client_id->rnd); @@ -1045,26 +1025,14 @@ char *silc_id_render(void *id, SilcIdType id_type) case SILC_ID_CHANNEL: { SilcChannelID *channel_id = (SilcChannelID *)id; - if (channel_id->ip.data_len > 4) { -#ifdef HAVE_IPV6 - struct sockaddr_in6 ipv6; - memset(&ipv6, 0, sizeof(ipv6)); - ipv6.sin6_family = AF_INET6; - memmove(&ipv6.sin6_addr, channel_id->ip.data, sizeof(ipv6.sin6_addr)); - if (!getnameinfo((struct sockaddr *)&ipv6, sizeof(ipv6), - tmp, sizeof(tmp) - 1, NULL, 0, NI_NUMERICHOST)) - _PUT_STRING(rid, tmp); -#endif - } else { - struct in_addr ipv4; - memmove(&ipv4.s_addr, channel_id->ip.data, 4); - cp = inet_ntoa(ipv4); - if (cp) - _PUT_STRING(rid, cp); - } + + if (!silc_net_bin2addr(channel_id->ip.data, channel_id->ip.data_len, + tmp, sizeof(tmp))) + return NULL; memset(tmp, 0, sizeof(tmp)); - silc_snprintf(tmp, sizeof(tmp) - 1, ",%d,", ntohs(channel_id->port)); + silc_snprintf(tmp, sizeof(tmp) - 1, ",%d,", + silc_ntohs(channel_id->port)); _PUT_STRING(rid, tmp); SILC_PUT16_MSB(channel_id->rnd, tmps); memset(tmp, 0, sizeof(tmp));