Changed SILC code to use new SRT and SCT APIs.
[silc.git] / lib / silcapputil / silcapputil.c
index 833f40e29b4d230eeb1d1b24120b43d2fb746b13..573d4585e17a9f0ba439658351165effe749702f 100644 (file)
@@ -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));