aboutsummaryrefslogtreecommitdiffstats
path: root/build/external/patches/quicly_0.0.3-vpp/0001-Add-function-ptr-in-ptls-ctx-for-aead_encrypt.patch
blob: 80f3bcb684f3f6797785d6fb31cc4366b62c9945 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
diff --git a/deps/picotls/include/picotls.h b/deps/picotls/include/picotls.h
index 06d62f9..de33b86 100644
--- a/deps/picotls/include/picotls.h
+++ b/deps/picotls/include/picotls.h
@@ -276,6 +276,8 @@ typedef struct st_ptls_aead_context_t {
     size_t (*do_encrypt_final)(struct st_ptls_aead_context_t *ctx, void *output);
     size_t (*do_decrypt)(struct st_ptls_aead_context_t *ctx, void *output, const void *input, size_t inlen, const void *iv,
                          const void *aad, size_t aadlen);
+    size_t (*do_encrypt)(struct st_ptls_aead_context_t *ctx, void *output, const void *input, size_t inlen, uint64_t seq,
+                         const void *iv, const void *aad, size_t aadlen);
 } ptls_aead_context_t;
 
 /**
diff --git a/deps/picotls/lib/picotls.c b/deps/picotls/lib/picotls.c
index 70d2fef..f98f7b4 100644
--- a/deps/picotls/lib/picotls.c
+++ b/deps/picotls/lib/picotls.c
@@ -4890,6 +4890,13 @@ size_t ptls_aead_encrypt(ptls_aead_context_t *ctx, void *output, const void *inp
 {
     size_t off = 0;
 
+    if(ctx->do_encrypt)
+    {
+        uint8_t iv[PTLS_MAX_IV_SIZE];
+        ptls_aead__build_iv(ctx, iv, seq);
+        return ctx->do_encrypt(ctx, output, input, inlen, seq, iv, aad, aadlen);
+    }
+
     ptls_aead_encrypt_init(ctx, seq, aad, aadlen);
     off += ptls_aead_encrypt_update(ctx, ((uint8_t *)output) + off, input, inlen);
     off += ptls_aead_encrypt_final(ctx, ((uint8_t *)output) + off);