Merged from silc_1_0_branch (second merge).
[silc.git] / lib / silccore / silcauth.c
index aea21a993f34f62a777a06815a3f78e2e1d4ad1b..d42dd66fb0ba747268f7a25cc28e46e11b541f2f 100644 (file)
@@ -1,6 +1,6 @@
 /*
 
-  silcauth.c
+  silcauth.c 
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
@@ -8,8 +8,7 @@
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
+  the Free Software Foundation; version 2 of the License.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -217,12 +216,7 @@ silc_auth_public_key_encode_data(SilcPublicKey public_key,
                     SILC_STR_UI_XNSTRING(pk, pk_len),
                     SILC_STR_END);
 
-  ret = silc_memdup(buf->data, buf->len);
-  if (!ret)
-    return NULL;
-
-  if (ret_len)
-    *ret_len = buf->len;
+  ret = silc_buffer_steal(buf, ret_len);
 
   silc_buffer_free(buf);
   silc_free(id_data);
@@ -241,7 +235,7 @@ SilcBuffer silc_auth_public_key_auth_generate(SilcPublicKey public_key,
                                              const void *id, SilcIdType type)
 {
   unsigned char *randomdata;
-  unsigned char auth_data[2048];
+  unsigned char auth_data[2048 + 1];
   SilcUInt32 auth_len;
   unsigned char *tmp;
   SilcUInt32 tmp_len;
@@ -265,7 +259,7 @@ SilcBuffer silc_auth_public_key_auth_generate(SilcPublicKey public_key,
     return NULL;
 
   /* Allocate PKCS object */
-  if (!silc_pkcs_alloc(public_key->name, &pkcs)) {
+  if (!silc_pkcs_alloc(private_key->name, &pkcs)) {
     memset(tmp, 0, tmp_len);
     silc_free(tmp);
     return NULL;