• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/OpenSSL098-52/src/crypto/jpake/

Lines Matching refs:ctx

29     BN_CTX *ctx;
75 static void JPAKE_CTX_init(JPAKE_CTX *ctx, const char *name,
80 ctx->p.name = OPENSSL_strdup(name);
81 ctx->p.peer_name = OPENSSL_strdup(peer_name);
82 ctx->p.p = BN_dup(p);
83 ctx->p.g = BN_dup(g);
84 ctx->p.q = BN_dup(q);
85 ctx->secret = BN_dup(secret);
87 ctx->p.gxc = BN_new();
88 ctx->p.gxd = BN_new();
90 ctx->xa = BN_new();
91 ctx->xb = BN_new();
92 ctx->key = BN_new();
93 ctx->ctx = BN_CTX_new();
96 static void JPAKE_CTX_release(JPAKE_CTX *ctx)
98 BN_CTX_free(ctx->ctx);
99 BN_clear_free(ctx->key);
100 BN_clear_free(ctx->xb);
101 BN_clear_free(ctx->xa);
103 BN_free(ctx->p.gxd);
104 BN_free(ctx->p.gxc);
106 BN_clear_free(ctx->secret);
107 BN_free(ctx->p.q);
108 BN_free(ctx->p.g);
109 BN_free(ctx->p.p);
110 OPENSSL_free(ctx->p.peer_name);
111 OPENSSL_free(ctx->p.name);
113 memset(ctx, '\0', sizeof *ctx);
120 JPAKE_CTX *ctx = OPENSSL_malloc(sizeof *ctx);
122 JPAKE_CTX_init(ctx, name, peer_name, p, g, q, secret);
124 return ctx;
127 void JPAKE_CTX_free(JPAKE_CTX *ctx)
129 JPAKE_CTX_release(ctx);
130 OPENSSL_free(ctx);
188 const BIGNUM *zkpg, JPAKE_CTX *ctx)
198 BN_rand_range(r, ctx->p.q);
200 BN_mod_exp(p->zkpx.gr, zkpg, r, ctx->p.p, ctx->ctx);
203 zkp_hash(h, zkpg, p, ctx->p.name);
206 BN_mod_mul(t, x, h, ctx->p.q, ctx->ctx);
207 BN_mod_sub(p->zkpx.b, r, t, ctx->p.q, ctx->ctx);
216 JPAKE_CTX *ctx)
224 zkp_hash(h, zkpg, p, ctx->p.peer_name);
227 BN_mod_exp(t1, zkpg, p->zkpx.b, ctx->p.p, ctx->ctx);
229 BN_mod_exp(t2, p->gx, h, ctx->p.p, ctx->ctx);
231 BN_mod_mul(t3, t1, t2, ctx->p.p, ctx->ctx);
249 const BIGNUM *g, JPAKE_CTX *ctx)
251 BN_mod_exp(p->gx, g, x, ctx->p.p, ctx->ctx);
252 generate_zkp(p, x, g, ctx);
256 static void genrand(JPAKE_CTX *ctx)
261 BN_rand_range(ctx->xa, ctx->p.q);
265 BN_copy(qm1, ctx->p.q);
269 BN_rand_range(ctx->xb, qm1);
271 BN_add_word(ctx->xb, 1);
277 int JPAKE_STEP1_generate(JPAKE_STEP1 *send, JPAKE_CTX *ctx)
279 genrand(ctx);
280 generate_step_part(&send->p1, ctx->xa, ctx->p.g, ctx);
281 generate_step_part(&send->p2, ctx->xb, ctx->p.g, ctx);
287 static int is_legal(const BIGNUM *gx, const JPAKE_CTX *ctx)
292 if(BN_is_negative(gx) || BN_is_zero(gx) || BN_cmp(gx, ctx->p.p) >= 0)
296 BN_mod_exp(t, gx, ctx->p.q, ctx->p.p, ctx->ctx);
303 int JPAKE_STEP1_process(JPAKE_CTX *ctx, const JPAKE_STEP1 *received)
305 if(!is_legal(received->p1.gx, ctx))
311 if(!is_legal(received->p2.gx, ctx))
319 if(!verify_zkp(&received->p1, ctx->p.g, ctx))
326 if(!verify_zkp(&received->p2, ctx->p.g, ctx))
340 BN_copy(ctx->p.gxc, received->p1.gx);
341 BN_copy(ctx->p.gxd, received->p2.gx);
347 int JPAKE_STEP2_generate(JPAKE_STEP2 *send, JPAKE_CTX *ctx)
356 BN_mod_exp(t1, ctx->p.g, ctx->xa, ctx->p.p, ctx->ctx);
358 BN_mod_mul(t2, t1, ctx->p.gxc, ctx->p.p, ctx->ctx);
360 BN_mod_mul(t1, t2, ctx->p.gxd, ctx->p.p, ctx->ctx);
362 BN_mod_mul(t2, ctx->xb, ctx->secret, ctx->p.q, ctx->ctx);
373 generate_step_part(send, t2, t1, ctx);
383 static int compute_key(JPAKE_CTX *ctx, const BIGNUM *gx)
398 BN_mod_exp(t1, ctx->p.gxd, ctx->xb, ctx->p.p, ctx->ctx);
400 BN_sub(t2, ctx->p.q, ctx->secret);
402 BN_mod_exp(t3, t1, t2, ctx->p.p, ctx->ctx);
404 BN_mod_mul(t1, gx, t3, ctx->p.p, ctx->ctx);
406 BN_mod_exp(ctx->key, t1, ctx->xb, ctx->p.p, ctx->ctx);
416 int JPAKE_STEP2_process(JPAKE_CTX *ctx, const JPAKE_STEP2 *received)
426 BN_mod_add(t1, ctx->xa, ctx->xb, ctx->p.q, ctx->ctx);
428 BN_mod_exp(t2, ctx->p.g, t1, ctx->p.p, ctx->ctx);
430 BN_mod_mul(t1, ctx->p.gxc, t2, ctx->p.p, ctx->ctx);
432 if(verify_zkp(received, t1, ctx))
437 compute_key(ctx, received->gx);
458 int JPAKE_STEP3A_generate(JPAKE_STEP3A *send, JPAKE_CTX *ctx)
460 quickhashbn(send->hhk, ctx->key);
466 int JPAKE_STEP3A_process(JPAKE_CTX *ctx, const JPAKE_STEP3A *received)
470 quickhashbn(hhk, ctx->key);
486 int JPAKE_STEP3B_generate(JPAKE_STEP3B *send, JPAKE_CTX *ctx)
488 quickhashbn(send->hk, ctx->key);
493 int JPAKE_STEP3B_process(JPAKE_CTX *ctx, const JPAKE_STEP3B *received)
497 quickhashbn(hk, ctx->key);
509 const BIGNUM *JPAKE_get_shared_key(JPAKE_CTX *ctx)
511 return ctx->key;