[BACK]Return to key.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/Attic/key.c between version 1.55.2.1 and 1.55.2.2

version 1.55.2.1, 2004/08/19 04:13:26 version 1.55.2.2, 2005/03/10 17:15:04
Line 681 
Line 681 
 key_from_blob(const u_char *blob, u_int blen)  key_from_blob(const u_char *blob, u_int blen)
 {  {
         Buffer b;          Buffer b;
         char *ktype;  
         int rlen, type;          int rlen, type;
           char *ktype = NULL;
         Key *key = NULL;          Key *key = NULL;
   
 #ifdef DEBUG_PK  #ifdef DEBUG_PK
Line 690 
Line 690 
 #endif  #endif
         buffer_init(&b);          buffer_init(&b);
         buffer_append(&b, blob, blen);          buffer_append(&b, blob, blen);
         ktype = buffer_get_string(&b, NULL);          if ((ktype = buffer_get_string_ret(&b, NULL)) == NULL) {
                   error("key_from_blob: can't read key type");
                   goto out;
           }
   
         type = key_type_from_name(ktype);          type = key_type_from_name(ktype);
   
         switch (type) {          switch (type) {
         case KEY_RSA:          case KEY_RSA:
                 key = key_new(type);                  key = key_new(type);
                 buffer_get_bignum2(&b, key->rsa->e);                  if (buffer_get_bignum2_ret(&b, key->rsa->e) == -1 ||
                 buffer_get_bignum2(&b, key->rsa->n);                      buffer_get_bignum2_ret(&b, key->rsa->n) == -1) {
                           error("key_from_blob: can't read rsa key");
                           key_free(key);
                           key = NULL;
                           goto out;
                   }
 #ifdef DEBUG_PK  #ifdef DEBUG_PK
                 RSA_print_fp(stderr, key->rsa, 8);                  RSA_print_fp(stderr, key->rsa, 8);
 #endif  #endif
                 break;                  break;
         case KEY_DSA:          case KEY_DSA:
                 key = key_new(type);                  key = key_new(type);
                 buffer_get_bignum2(&b, key->dsa->p);                  if (buffer_get_bignum2_ret(&b, key->dsa->p) == -1 ||
                 buffer_get_bignum2(&b, key->dsa->q);                      buffer_get_bignum2_ret(&b, key->dsa->q) == -1 ||
                 buffer_get_bignum2(&b, key->dsa->g);                      buffer_get_bignum2_ret(&b, key->dsa->g) == -1 ||
                 buffer_get_bignum2(&b, key->dsa->pub_key);                      buffer_get_bignum2_ret(&b, key->dsa->pub_key) == -1) {
                           error("key_from_blob: can't read dsa key");
                           key_free(key);
                           key = NULL;
                           goto out;
                   }
 #ifdef DEBUG_PK  #ifdef DEBUG_PK
                 DSA_print_fp(stderr, key->dsa, 8);                  DSA_print_fp(stderr, key->dsa, 8);
 #endif  #endif
Line 717 
Line 731 
                 break;                  break;
         default:          default:
                 error("key_from_blob: cannot handle type %s", ktype);                  error("key_from_blob: cannot handle type %s", ktype);
                 break;                  goto out;
         }          }
         rlen = buffer_len(&b);          rlen = buffer_len(&b);
         if (key != NULL && rlen != 0)          if (key != NULL && rlen != 0)
                 error("key_from_blob: remaining bytes in key blob %d", rlen);                  error("key_from_blob: remaining bytes in key blob %d", rlen);
         xfree(ktype);   out:
           if (ktype != NULL)
                   xfree(ktype);
         buffer_free(&b);          buffer_free(&b);
         return key;          return key;
 }  }

Legend:
Removed from v.1.55.2.1  
changed lines
  Added in v.1.55.2.2