summaryrefslogtreecommitdiffstats
path: root/debian/vendor-h2o/deps/picotls/deps/cifra/src/blockwise.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--debian/vendor-h2o/deps/picotls/deps/cifra/src/blockwise.c195
1 files changed, 0 insertions, 195 deletions
diff --git a/debian/vendor-h2o/deps/picotls/deps/cifra/src/blockwise.c b/debian/vendor-h2o/deps/picotls/deps/cifra/src/blockwise.c
deleted file mode 100644
index 182c8c5..0000000
--- a/debian/vendor-h2o/deps/picotls/deps/cifra/src/blockwise.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * cifra - embedded cryptography library
- * Written in 2014 by Joseph Birr-Pixton <jpixton@gmail.com>
- *
- * To the extent possible under law, the author(s) have dedicated all
- * copyright and related and neighboring rights to this software to the
- * public domain worldwide. This software is distributed without any
- * warranty.
- *
- * You should have received a copy of the CC0 Public Domain Dedication
- * along with this software. If not, see
- * <http://creativecommons.org/publicdomain/zero/1.0/>.
- */
-
-#include "blockwise.h"
-#include "bitops.h"
-#include "handy.h"
-#include "tassert.h"
-
-#include <string.h>
-
-void cf_blockwise_accumulate(uint8_t *partial, size_t *npartial, size_t nblock,
- const void *inp, size_t nbytes,
- cf_blockwise_in_fn process,
- void *ctx)
-{
- cf_blockwise_accumulate_final(partial, npartial, nblock,
- inp, nbytes,
- process, process, ctx);
-}
-
-void cf_blockwise_accumulate_final(uint8_t *partial, size_t *npartial, size_t nblock,
- const void *inp, size_t nbytes,
- cf_blockwise_in_fn process,
- cf_blockwise_in_fn process_final,
- void *ctx)
-{
- const uint8_t *bufin = inp;
- assert(partial && *npartial < nblock);
- assert(inp || !nbytes);
- assert(process && ctx);
-
- /* If we have partial data, copy in to buffer. */
- if (*npartial && nbytes)
- {
- size_t space = nblock - *npartial;
- size_t taken = MIN(space, nbytes);
-
- memcpy(partial + *npartial, bufin, taken);
-
- bufin += taken;
- nbytes -= taken;
- *npartial += taken;
-
- /* If that gives us a full block, process it. */
- if (*npartial == nblock)
- {
- if (nbytes == 0)
- process_final(ctx, partial);
- else
- process(ctx, partial);
- *npartial = 0;
- }
- }
-
- /* now nbytes < nblock or *npartial == 0. */
-
- /* If we have a full block of data, process it directly. */
- while (nbytes >= nblock)
- {
- /* Partial buffer must be empty, or we're ignoring extant data */
- assert(*npartial == 0);
-
- if (nbytes == nblock)
- process_final(ctx, bufin);
- else
- process(ctx, bufin);
- bufin += nblock;
- nbytes -= nblock;
- }
-
- /* Finally, if we have remaining data, buffer it. */
- while (nbytes)
- {
- size_t space = nblock - *npartial;
- size_t taken = MIN(space, nbytes);
-
- memcpy(partial + *npartial, bufin, taken);
-
- bufin += taken;
- nbytes -= taken;
- *npartial += taken;
-
- /* If we started with *npartial, we must have copied it
- * in first. */
- assert(*npartial < nblock);
- }
-}
-
-void cf_blockwise_xor(uint8_t *partial, size_t *npartial, size_t nblock,
- const void *inp, void *outp, size_t nbytes,
- cf_blockwise_out_fn process, void *ctx)
-{
- const uint8_t *inb = inp;
- uint8_t *outb = outp;
-
- assert(partial && *npartial < nblock);
- assert(inp || !nbytes);
- assert(process && ctx);
-
- while (nbytes)
- {
- /* If we're out of material, and need more, produce a block. */
- if (*npartial == 0)
- {
- process(ctx, partial);
- *npartial = nblock;
- }
-
- size_t offset = nblock - *npartial;
- size_t taken = MIN(*npartial, nbytes);
- xor_bb(outb, inb, partial + offset, taken);
- *npartial -= taken;
- nbytes -= taken;
- outb += taken;
- inb += taken;
- }
-}
-
-void cf_blockwise_acc_byte(uint8_t *partial, size_t *npartial,
- size_t nblock,
- uint8_t byte, size_t nbytes,
- cf_blockwise_in_fn process,
- void *ctx)
-{
- /* only memset the whole of the block once */
- int filled = 0;
-
- while (nbytes)
- {
- size_t start = *npartial;
- size_t count = MIN(nbytes, nblock - start);
-
- if (!filled)
- memset(partial + start, byte, count);
-
- if (start == 0 && count == nblock)
- filled = 1;
-
- if (start + count == nblock)
- {
- process(ctx, partial);
- *npartial = 0;
- } else {
- *npartial += count;
- }
-
- nbytes -= count;
- }
-}
-
-void cf_blockwise_acc_pad(uint8_t *partial, size_t *npartial,
- size_t nblock,
- uint8_t fbyte, uint8_t mbyte, uint8_t lbyte,
- size_t nbytes,
- cf_blockwise_in_fn process,
- void *ctx)
-{
-
- switch (nbytes)
- {
- case 0: break;
- case 1: fbyte ^= lbyte;
- cf_blockwise_accumulate(partial, npartial, nblock, &fbyte, 1, process, ctx);
- break;
- case 2:
- cf_blockwise_accumulate(partial, npartial, nblock, &fbyte, 1, process, ctx);
- cf_blockwise_accumulate(partial, npartial, nblock, &lbyte, 1, process, ctx);
- break;
- default:
- cf_blockwise_accumulate(partial, npartial, nblock, &fbyte, 1, process, ctx);
-
- /* If the middle and last bytes differ, then process the last byte separately.
- * Otherwise, just extend the middle block size. */
- if (lbyte != mbyte)
- {
- cf_blockwise_acc_byte(partial, npartial, nblock, mbyte, nbytes - 2, process, ctx);
- cf_blockwise_accumulate(partial, npartial, nblock, &lbyte, 1, process, ctx);
- } else {
- cf_blockwise_acc_byte(partial, npartial, nblock, mbyte, nbytes - 1, process, ctx);
- }
-
- break;
- }
-}