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

Diff for /src/usr.bin/ssh/ssh-pkcs11-helper.c between version 1.14 and 1.15

version 1.14, 2018/01/08 15:18:46 version 1.15, 2019/01/20 22:51:37
Line 103 
Line 103 
 process_add(void)  process_add(void)
 {  {
         char *name, *pin;          char *name, *pin;
         struct sshkey **keys;          struct sshkey **keys = NULL;
         int r, i, nkeys;          int r, i, nkeys;
         u_char *blob;          u_char *blob;
         size_t blen;          size_t blen;
Line 132 
Line 132 
                         free(blob);                          free(blob);
                         add_key(keys[i], name);                          add_key(keys[i], name);
                 }                  }
                 free(keys);  
         } else {          } else {
                 if ((r = sshbuf_put_u8(msg, SSH_AGENT_FAILURE)) != 0)                  if ((r = sshbuf_put_u8(msg, SSH_AGENT_FAILURE)) != 0)
                         fatal("%s: buffer error: %s", __func__, ssh_err(r));                          fatal("%s: buffer error: %s", __func__, ssh_err(r));
                   if ((r = sshbuf_put_u32(msg, -nkeys)) != 0)
                           fatal("%s: buffer error: %s", __func__, ssh_err(r));
         }          }
           free(keys);
         free(pin);          free(pin);
         free(name);          free(name);
         send_msg(msg);          send_msg(msg);
Line 185 
Line 187 
         else {          else {
                 if ((found = lookup_key(key)) != NULL) {                  if ((found = lookup_key(key)) != NULL) {
 #ifdef WITH_OPENSSL  #ifdef WITH_OPENSSL
                           u_int xslen;
                         int ret;                          int ret;
   
                         slen = RSA_size(key->rsa);                          if (key->type == KEY_RSA) {
                         signature = xmalloc(slen);                                  slen = RSA_size(key->rsa);
                         if ((ret = RSA_private_encrypt(dlen, data, signature,                                  signature = xmalloc(slen);
                             found->rsa, RSA_PKCS1_PADDING)) != -1) {                                  ret = RSA_private_encrypt(dlen, data, signature,
                                 slen = ret;                                      found->rsa, RSA_PKCS1_PADDING);
                                 ok = 0;                                  if (ret != -1) {
                         }                                          slen = ret;
                                           ok = 0;
                                   }
                           } else if (key->type == KEY_ECDSA) {
                                   xslen = ECDSA_size(key->ecdsa);
                                   signature = xmalloc(xslen);
                                   /* "The parameter type is ignored." */
                                   ret = ECDSA_sign(-1, data, dlen, signature,
                                       &xslen, found->ecdsa);
                                   if (ret != 0)
                                           ok = 0;
                                   else
                                           error("%s: ECDSA_sign"
                                               " returns %d", __func__, ret);
                                   slen = xslen;
                           } else
                                   error("%s: don't know how to sign with key "
                                       "type %d", __func__, (int)key->type);
 #endif /* WITH_OPENSSL */  #endif /* WITH_OPENSSL */
                 }                  }
                 sshkey_free(key);                  sshkey_free(key);

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.15