Lines Matching refs:ctx
38 mpi_barrett_t ctx;
42 ctx = kcalloc(1, sizeof(*ctx), GFP_KERNEL);
43 if (!ctx)
47 ctx->m = mpi_copy(m);
48 ctx->m_copied = 1;
50 ctx->m = m;
52 ctx->k = mpi_get_nlimbs(m);
53 tmp = mpi_alloc(ctx->k + 1);
57 mpi_lshift_limbs(tmp, 2 * ctx->k);
60 ctx->y = tmp;
61 ctx->r1 = mpi_alloc(2 * ctx->k + 1);
62 ctx->r2 = mpi_alloc(2 * ctx->k + 1);
64 return ctx;
67 void mpi_barrett_free(mpi_barrett_t ctx)
69 if (ctx) {
70 mpi_free(ctx->y);
71 mpi_free(ctx->r1);
72 mpi_free(ctx->r2);
73 if (ctx->r3)
74 mpi_free(ctx->r3);
75 if (ctx->m_copied)
76 mpi_free(ctx->m);
77 kfree(ctx);
95 void mpi_mod_barrett(MPI r, MPI x, mpi_barrett_t ctx)
97 MPI m = ctx->m;
98 int k = ctx->k;
99 MPI y = ctx->y;
100 MPI r1 = ctx->r1;
101 MPI r2 = ctx->r2;
137 if (!ctx->r3) {
138 ctx->r3 = mpi_alloc(k + 2);
139 mpi_set_ui(ctx->r3, 1);
140 mpi_lshift_limbs(ctx->r3, k + 1);
142 mpi_add(r, r, ctx->r3);
153 void mpi_mul_barrett(MPI w, MPI u, MPI v, mpi_barrett_t ctx)
156 mpi_mod_barrett(w, w, ctx);