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

Diff for /src/usr.bin/ssh/ssh-xmss.c between version 1.11 and 1.12

version 1.11, 2022/10/28 00:41:52 version 1.12, 2022/10/28 00:43:08
Line 135 
Line 135 
         return ret;          return ret;
 }  }
   
 int  static int
 ssh_xmss_sign(const struct sshkey *key, u_char **sigp, size_t *lenp,  ssh_xmss_sign(struct sshkey *key,
     const u_char *data, size_t datalen, u_int compat)      u_char **sigp, size_t *lenp,
       const u_char *data, size_t datalen,
       const char *alg, const char *sk_provider, const char *sk_pin, u_int compat)
 {  {
         u_char *sig = NULL;          u_char *sig = NULL;
         size_t slen = 0, len = 0, required_siglen;          size_t slen = 0, len = 0, required_siglen;
Line 209 
Line 211 
         return r;          return r;
 }  }
   
 int  static int
 ssh_xmss_verify(const struct sshkey *key,  ssh_xmss_verify(const struct sshkey *key,
     const u_char *signature, size_t signaturelen,      const u_char *sig, size_t siglen,
     const u_char *data, size_t datalen, u_int compat)      const u_char *data, size_t dlen, const char *alg, u_int compat,
       struct sshkey_sig_details **detailsp)
 {  {
         struct sshbuf *b = NULL;          struct sshbuf *b = NULL;
         char *ktype = NULL;          char *ktype = NULL;
Line 226 
Line 229 
             sshkey_type_plain(key->type) != KEY_XMSS ||              sshkey_type_plain(key->type) != KEY_XMSS ||
             key->xmss_pk == NULL ||              key->xmss_pk == NULL ||
             sshkey_xmss_params(key) == NULL ||              sshkey_xmss_params(key) == NULL ||
             signature == NULL || signaturelen == 0)              sig == NULL || siglen == 0)
                 return SSH_ERR_INVALID_ARGUMENT;                  return SSH_ERR_INVALID_ARGUMENT;
         if ((r = sshkey_xmss_siglen(key, &required_siglen)) != 0)          if ((r = sshkey_xmss_siglen(key, &required_siglen)) != 0)
                 return r;                  return r;
         if (datalen >= INT_MAX - required_siglen)          if (dlen >= INT_MAX - required_siglen)
                 return SSH_ERR_INVALID_ARGUMENT;                  return SSH_ERR_INVALID_ARGUMENT;
   
         if ((b = sshbuf_from(signature, signaturelen)) == NULL)          if ((b = sshbuf_from(sig, siglen)) == NULL)
                 return SSH_ERR_ALLOC_FAIL;                  return SSH_ERR_ALLOC_FAIL;
         if ((r = sshbuf_get_cstring(b, &ktype, NULL)) != 0 ||          if ((r = sshbuf_get_cstring(b, &ktype, NULL)) != 0 ||
             (r = sshbuf_get_string_direct(b, &sigblob, &len)) != 0)              (r = sshbuf_get_string_direct(b, &sigblob, &len)) != 0)
Line 250 
Line 253 
                 r = SSH_ERR_INVALID_FORMAT;                  r = SSH_ERR_INVALID_FORMAT;
                 goto out;                  goto out;
         }          }
         if (datalen >= SIZE_MAX - len) {          if (dlen >= SIZE_MAX - len) {
                 r = SSH_ERR_INVALID_ARGUMENT;                  r = SSH_ERR_INVALID_ARGUMENT;
                 goto out;                  goto out;
         }          }
         smlen = len + datalen;          smlen = len + dlen;
         mlen = smlen;          mlen = smlen;
         if ((sm = malloc(smlen)) == NULL || (m = malloc(mlen)) == NULL) {          if ((sm = malloc(smlen)) == NULL || (m = malloc(mlen)) == NULL) {
                 r = SSH_ERR_ALLOC_FAIL;                  r = SSH_ERR_ALLOC_FAIL;
                 goto out;                  goto out;
         }          }
         memcpy(sm, sigblob, len);          memcpy(sm, sigblob, len);
         memcpy(sm+len, data, datalen);          memcpy(sm+len, data, dlen);
         if ((ret = xmss_sign_open(m, &mlen, sm, smlen,          if ((ret = xmss_sign_open(m, &mlen, sm, smlen,
             key->xmss_pk, sshkey_xmss_params(key))) != 0) {              key->xmss_pk, sshkey_xmss_params(key))) != 0) {
                 debug2_f("xmss_sign_open failed: %d", ret);                  debug2_f("xmss_sign_open failed: %d", ret);
         }          }
         if (ret != 0 || mlen != datalen) {          if (ret != 0 || mlen != dlen) {
                 r = SSH_ERR_SIGNATURE_INVALID;                  r = SSH_ERR_SIGNATURE_INVALID;
                 goto out;                  goto out;
         }          }
Line 292 
Line 295 
         /* .ssh_deserialize_public = */ ssh_xmss_deserialize_public,          /* .ssh_deserialize_public = */ ssh_xmss_deserialize_public,
         /* .generate = */       sshkey_xmss_generate_private_key,          /* .generate = */       sshkey_xmss_generate_private_key,
         /* .copy_public = */    ssh_xmss_copy_public,          /* .copy_public = */    ssh_xmss_copy_public,
           /* .sign = */           ssh_xmss_sign,
           /* .verify = */         ssh_xmss_verify,
 };  };
   
 const struct sshkey_impl sshkey_xmss_impl = {  const struct sshkey_impl sshkey_xmss_impl = {

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12