Lines Matching refs:dctx

132 void poly1305_init_arch(struct poly1305_desc_ctx *dctx, const u8 key[POLY1305_KEY_SIZE])
134 poly1305_simd_init(&dctx->h, key);
135 dctx->s[0] = get_unaligned_le32(&key[16]);
136 dctx->s[1] = get_unaligned_le32(&key[20]);
137 dctx->s[2] = get_unaligned_le32(&key[24]);
138 dctx->s[3] = get_unaligned_le32(&key[28]);
139 dctx->buflen = 0;
140 dctx->sset = true;
144 static unsigned int crypto_poly1305_setdctxkey(struct poly1305_desc_ctx *dctx,
148 if (unlikely(!dctx->sset)) {
149 if (!dctx->rset && len >= POLY1305_BLOCK_SIZE) {
150 poly1305_simd_init(&dctx->h, inp);
154 dctx->rset = 1;
157 dctx->s[0] = get_unaligned_le32(&inp[0]);
158 dctx->s[1] = get_unaligned_le32(&inp[4]);
159 dctx->s[2] = get_unaligned_le32(&inp[8]);
160 dctx->s[3] = get_unaligned_le32(&inp[12]);
162 dctx->sset = true;
168 void poly1305_update_arch(struct poly1305_desc_ctx *dctx, const u8 *src,
173 if (unlikely(dctx->buflen)) {
174 bytes = min(srclen, POLY1305_BLOCK_SIZE - dctx->buflen);
175 memcpy(dctx->buf + dctx->buflen, src, bytes);
178 dctx->buflen += bytes;
180 if (dctx->buflen == POLY1305_BLOCK_SIZE) {
181 if (likely(!crypto_poly1305_setdctxkey(dctx, dctx->buf, POLY1305_BLOCK_SIZE)))
182 poly1305_simd_blocks(&dctx->h, dctx->buf, POLY1305_BLOCK_SIZE, 1);
183 dctx->buflen = 0;
190 used = crypto_poly1305_setdctxkey(dctx, src, bytes);
192 poly1305_simd_blocks(&dctx->h, src + used, bytes - used, 1);
197 dctx->buflen = srclen;
198 memcpy(dctx->buf, src, srclen);
203 void poly1305_final_arch(struct poly1305_desc_ctx *dctx, u8 *dst)
205 if (unlikely(dctx->buflen)) {
206 dctx->buf[dctx->buflen++] = 1;
207 memset(dctx->buf + dctx->buflen, 0,
208 POLY1305_BLOCK_SIZE - dctx->buflen);
209 poly1305_simd_blocks(&dctx->h, dctx->buf, POLY1305_BLOCK_SIZE, 0);
212 poly1305_simd_emit(&dctx->h, dst, dctx->s);
213 *dctx = (struct poly1305_desc_ctx){};
219 struct poly1305_desc_ctx *dctx = shash_desc_ctx(desc);
221 *dctx = (struct poly1305_desc_ctx){};
228 struct poly1305_desc_ctx *dctx = shash_desc_ctx(desc);
230 poly1305_update_arch(dctx, src, srclen);
236 struct poly1305_desc_ctx *dctx = shash_desc_ctx(desc);
238 if (unlikely(!dctx->sset))
241 poly1305_final_arch(dctx, dst);