diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2019-08-25 00:06:30 +0200 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2019-08-25 23:18:14 +0200 | 
| commit | ff4ef390f6cd56720f1704b8d9b63fd64c9b5220 (patch) | |
| tree | 11400bb15485bc0cd7d7bdba338265961229ee2e /lib/vquic/ngtcp2-crypto.c | |
| parent | 25f962193574e35fe638764c3afb9d25d8a9768b (diff) | |
ngtcp2: sync with upstream API changes
Assisted-by: Tatsuhiro Tsujikawa
Diffstat (limited to 'lib/vquic/ngtcp2-crypto.c')
| -rw-r--r-- | lib/vquic/ngtcp2-crypto.c | 64 | 
1 files changed, 22 insertions, 42 deletions
| diff --git a/lib/vquic/ngtcp2-crypto.c b/lib/vquic/ngtcp2-crypto.c index 576b04c5c..887c130cb 100644 --- a/lib/vquic/ngtcp2-crypto.c +++ b/lib/vquic/ngtcp2-crypto.c @@ -232,22 +232,17 @@ size_t Curl_qc_aead_max_overhead(const struct Context *ctx)    return aead_tag_length(ctx);  } -ssize_t Curl_qc_encrypt(uint8_t *dest, size_t destlen, -                        const uint8_t *plaintext, size_t plaintextlen, -                        const struct Context *ctx, -                        const uint8_t *key, size_t keylen, -                        const uint8_t *nonce, size_t noncelen, -                        const uint8_t *ad, size_t adlen) +int Curl_qc_encrypt(uint8_t *dest, +                    const uint8_t *plaintext, size_t plaintextlen, +                    const struct Context *ctx, +                    const uint8_t *key, +                    const uint8_t *nonce, size_t noncelen, +                    const uint8_t *ad, size_t adlen)  {    size_t taglen = aead_tag_length(ctx);    EVP_CIPHER_CTX *actx; -  size_t outlen = 0; +  int outlen = 0;    int len; -  (void)keylen; - -  if(destlen < plaintextlen + taglen) { -    return -1; -  }    actx = EVP_CIPHER_CTX_new();    if(!actx) @@ -281,40 +276,33 @@ ssize_t Curl_qc_encrypt(uint8_t *dest, size_t destlen,    if(EVP_EncryptFinal_ex(actx, dest + outlen, &len) != 1)      goto error; -  outlen += len; -  assert(outlen + taglen <= destlen); -    if(EVP_CIPHER_CTX_ctrl(actx, EVP_CTRL_AEAD_GET_TAG,                           (int)taglen, dest + outlen) != 1)      goto error; -  outlen += taglen; -    EVP_CIPHER_CTX_free(actx); -  return outlen; +  return 0;    error:    EVP_CIPHER_CTX_free(actx);    return -1;  } -ssize_t Curl_qc_decrypt(uint8_t *dest, size_t destlen, -                        const uint8_t *ciphertext, size_t ciphertextlen, -                        const struct Context *ctx, -                        const uint8_t *key, size_t keylen, -                        const uint8_t *nonce, size_t noncelen, -                        const uint8_t *ad, size_t adlen) +int Curl_qc_decrypt(uint8_t *dest, +                    const uint8_t *ciphertext, size_t ciphertextlen, +                    const struct Context *ctx, +                    const uint8_t *key, +                    const uint8_t *nonce, size_t noncelen, +                    const uint8_t *ad, size_t adlen)  {    size_t taglen = aead_tag_length(ctx);    const uint8_t *tag;    EVP_CIPHER_CTX *actx; -  size_t outlen; +  int outlen;    int len; -  (void)keylen; -  if(taglen > ciphertextlen || destlen + taglen < ciphertextlen) { +  if(taglen > ciphertextlen)      return -1; -  }    ciphertextlen -= taglen;    tag = ciphertext + ciphertextlen; @@ -351,7 +339,7 @@ ssize_t Curl_qc_decrypt(uint8_t *dest, size_t destlen,    outlen = len;    if(ctx->aead == EVP_aes_128_ccm()) -    return outlen; +    return 0;    if(EVP_CIPHER_CTX_ctrl(actx, EVP_CTRL_AEAD_SET_TAG,                           (int)taglen, (char *)tag) != 1) @@ -360,10 +348,8 @@ ssize_t Curl_qc_decrypt(uint8_t *dest, size_t destlen,    if(EVP_DecryptFinal_ex(actx, dest + outlen, &len) != 1)      goto error; -  outlen += len; -    EVP_CIPHER_CTX_free(actx); -  return outlen; +  return 0;    error:    EVP_CIPHER_CTX_free(actx);    return -1; @@ -489,19 +475,13 @@ Curl_qc_derive_header_protection_key(uint8_t *dest, size_t destlen,    return keylen;  } -ssize_t Curl_qc_hp_mask(uint8_t *dest, size_t destlen, -                        const struct Context *ctx, -                        const uint8_t *key, size_t keylen, -                        const uint8_t *sample, size_t samplelen) +int Curl_qc_hp_mask(uint8_t *dest, const struct Context *ctx, +                    const uint8_t *key, const uint8_t *sample)  {    static uint8_t PLAINTEXT[] = "\x00\x00\x00\x00\x00";    EVP_CIPHER_CTX *actx; -  size_t outlen = 0; +  int outlen = 0;    int len; -  (void)destlen; /* TODO: make use of these! */ -  (void)keylen; -  (void)samplelen; -    actx = EVP_CIPHER_CTX_new();    if(!actx)      return -1; @@ -521,7 +501,7 @@ ssize_t Curl_qc_hp_mask(uint8_t *dest, size_t destlen,    DEBUGASSERT(len == 0); -  return outlen; +  return 0;    error:    EVP_CIPHER_CTX_free(actx);    return -1; | 
