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

Diff for /src/usr.bin/ssh/ssh-ed25519.c between version 1.16 and 1.17

version 1.16, 2022/10/28 00:41:52 version 1.17, 2022/10/28 00:43:08
Line 101 
Line 101 
         return 0;          return 0;
 }  }
   
 int  static int
 ssh_ed25519_sign(const struct sshkey *key, u_char **sigp, size_t *lenp,  ssh_ed25519_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;          size_t slen = 0, len;
Line 158 
Line 160 
         return r;          return r;
 }  }
   
 int  static int
 ssh_ed25519_verify(const struct sshkey *key,  ssh_ed25519_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 174 
Line 177 
         if (key == NULL ||          if (key == NULL ||
             sshkey_type_plain(key->type) != KEY_ED25519 ||              sshkey_type_plain(key->type) != KEY_ED25519 ||
             key->ed25519_pk == NULL ||              key->ed25519_pk == NULL ||
             datalen >= INT_MAX - crypto_sign_ed25519_BYTES ||              dlen >= INT_MAX - crypto_sign_ed25519_BYTES ||
             signature == NULL || signaturelen == 0)              sig == NULL || siglen == 0)
                 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 195 
Line 198 
                 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 = crypto_sign_ed25519_open(m, &mlen, sm, smlen,          if ((ret = crypto_sign_ed25519_open(m, &mlen, sm, smlen,
             key->ed25519_pk)) != 0) {              key->ed25519_pk)) != 0) {
                 debug2_f("crypto_sign_ed25519_open failed: %d", ret);                  debug2_f("crypto_sign_ed25519_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 238 
Line 241 
         /* .ssh_deserialize_public = */ ssh_ed25519_deserialize_public,          /* .ssh_deserialize_public = */ ssh_ed25519_deserialize_public,
         /* .generate = */       ssh_ed25519_generate,          /* .generate = */       ssh_ed25519_generate,
         /* .copy_public = */    ssh_ed25519_copy_public,          /* .copy_public = */    ssh_ed25519_copy_public,
           /* .sign = */           ssh_ed25519_sign,
           /* .verify = */         ssh_ed25519_verify,
 };  };
   
 const struct sshkey_impl sshkey_ed25519_impl = {  const struct sshkey_impl sshkey_ed25519_impl = {

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17