Lines Matching refs:dctx

32 void poly1305_init_arch(struct poly1305_desc_ctx *dctx, const u8 key[POLY1305_KEY_SIZE])
34 poly1305_init_arm(&dctx->h, key);
35 dctx->s[0] = get_unaligned_le32(key + 16);
36 dctx->s[1] = get_unaligned_le32(key + 20);
37 dctx->s[2] = get_unaligned_le32(key + 24);
38 dctx->s[3] = get_unaligned_le32(key + 28);
39 dctx->buflen = 0;
45 struct poly1305_desc_ctx *dctx = shash_desc_ctx(desc);
47 dctx->buflen = 0;
48 dctx->rset = 0;
49 dctx->sset = false;
54 static void arm_poly1305_blocks(struct poly1305_desc_ctx *dctx, const u8 *src,
57 if (unlikely(!dctx->sset)) {
58 if (!dctx->rset) {
59 poly1305_init_arm(&dctx->h, src);
62 dctx->rset = 1;
65 dctx->s[0] = get_unaligned_le32(src + 0);
66 dctx->s[1] = get_unaligned_le32(src + 4);
67 dctx->s[2] = get_unaligned_le32(src + 8);
68 dctx->s[3] = get_unaligned_le32(src + 12);
71 dctx->sset = true;
80 poly1305_blocks_neon(&dctx->h, src, len, hibit);
82 poly1305_blocks_arm(&dctx->h, src, len, hibit);
85 static void arm_poly1305_do_update(struct poly1305_desc_ctx *dctx,
88 if (unlikely(dctx->buflen)) {
89 u32 bytes = min(len, POLY1305_BLOCK_SIZE - dctx->buflen);
91 memcpy(dctx->buf + dctx->buflen, src, bytes);
94 dctx->buflen += bytes;
96 if (dctx->buflen == POLY1305_BLOCK_SIZE) {
97 arm_poly1305_blocks(dctx, dctx->buf,
99 dctx->buflen = 0;
104 arm_poly1305_blocks(dctx, src, len, 1, do_neon);
110 dctx->buflen = len;
111 memcpy(dctx->buf, src, len);
118 struct poly1305_desc_ctx *dctx = shash_desc_ctx(desc);
120 arm_poly1305_do_update(dctx, src, srclen, false);
128 struct poly1305_desc_ctx *dctx = shash_desc_ctx(desc);
133 arm_poly1305_do_update(dctx, src, srclen, do_neon);
139 void poly1305_update_arch(struct poly1305_desc_ctx *dctx, const u8 *src,
145 if (unlikely(dctx->buflen)) {
146 u32 bytes = min(nbytes, POLY1305_BLOCK_SIZE - dctx->buflen);
148 memcpy(dctx->buf + dctx->buflen, src, bytes);
151 dctx->buflen += bytes;
153 if (dctx->buflen == POLY1305_BLOCK_SIZE) {
154 poly1305_blocks_arm(&dctx->h, dctx->buf,
156 dctx->buflen = 0;
168 poly1305_blocks_neon(&dctx->h, src, todo, 1);
175 poly1305_blocks_arm(&dctx->h, src, len, 1);
182 dctx->buflen = nbytes;
183 memcpy(dctx->buf, src, nbytes);
188 void poly1305_final_arch(struct poly1305_desc_ctx *dctx, u8 *dst)
190 if (unlikely(dctx->buflen)) {
191 dctx->buf[dctx->buflen++] = 1;
192 memset(dctx->buf + dctx->buflen, 0,
193 POLY1305_BLOCK_SIZE - dctx->buflen);
194 poly1305_blocks_arm(&dctx->h, dctx->buf, POLY1305_BLOCK_SIZE, 0);
197 poly1305_emit_arm(&dctx->h, dst, dctx->s);
198 *dctx = (struct poly1305_desc_ctx){};
204 struct poly1305_desc_ctx *dctx = shash_desc_ctx(desc);
206 if (unlikely(!dctx->sset))
209 poly1305_final_arch(dctx, dst);