diff options
| author | djm <> | 2011-11-03 02:32:21 +0000 |
|---|---|---|
| committer | djm <> | 2011-11-03 02:32:21 +0000 |
| commit | eec14d8d3f7d92f0ebb0c75eee2dd01d652949d0 (patch) | |
| tree | 039bc1f1e47623f1bbe9d4e2d08ce2b38304c288 /src/lib/libcrypto/jpake | |
| parent | f2f522b2b79acd8c281f8ea853ed7fadd5b907a5 (diff) | |
| parent | 217868ba06006584e019bb825f91c811747a4cba (diff) | |
| download | openbsd-eec14d8d3f7d92f0ebb0c75eee2dd01d652949d0.tar.gz openbsd-eec14d8d3f7d92f0ebb0c75eee2dd01d652949d0.tar.bz2 openbsd-eec14d8d3f7d92f0ebb0c75eee2dd01d652949d0.zip | |
This commit was generated by cvs2git to track changes on a CVS vendor
branch.
Diffstat (limited to 'src/lib/libcrypto/jpake')
| -rw-r--r-- | src/lib/libcrypto/jpake/jpake.c | 29 | ||||
| -rw-r--r-- | src/lib/libcrypto/jpake/jpake.h | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/jpake/jpake_err.c | 4 |
3 files changed, 34 insertions, 1 deletions
diff --git a/src/lib/libcrypto/jpake/jpake.c b/src/lib/libcrypto/jpake/jpake.c index 086d9f47e0..8e4b633ccc 100644 --- a/src/lib/libcrypto/jpake/jpake.c +++ b/src/lib/libcrypto/jpake/jpake.c | |||
| @@ -282,8 +282,37 @@ int JPAKE_STEP1_generate(JPAKE_STEP1 *send, JPAKE_CTX *ctx) | |||
| 282 | return 1; | 282 | return 1; |
| 283 | } | 283 | } |
| 284 | 284 | ||
| 285 | /* g^x is a legal value */ | ||
| 286 | static int is_legal(const BIGNUM *gx, const JPAKE_CTX *ctx) | ||
| 287 | { | ||
| 288 | BIGNUM *t; | ||
| 289 | int res; | ||
| 290 | |||
| 291 | if(BN_is_negative(gx) || BN_is_zero(gx) || BN_cmp(gx, ctx->p.p) >= 0) | ||
| 292 | return 0; | ||
| 293 | |||
| 294 | t = BN_new(); | ||
| 295 | BN_mod_exp(t, gx, ctx->p.q, ctx->p.p, ctx->ctx); | ||
| 296 | res = BN_is_one(t); | ||
| 297 | BN_free(t); | ||
| 298 | |||
| 299 | return res; | ||
| 300 | } | ||
| 301 | |||
| 285 | int JPAKE_STEP1_process(JPAKE_CTX *ctx, const JPAKE_STEP1 *received) | 302 | int JPAKE_STEP1_process(JPAKE_CTX *ctx, const JPAKE_STEP1 *received) |
| 286 | { | 303 | { |
| 304 | if(!is_legal(received->p1.gx, ctx)) | ||
| 305 | { | ||
| 306 | JPAKEerr(JPAKE_F_JPAKE_STEP1_PROCESS, JPAKE_R_G_TO_THE_X3_IS_NOT_LEGAL); | ||
| 307 | return 0; | ||
| 308 | } | ||
| 309 | |||
| 310 | if(!is_legal(received->p2.gx, ctx)) | ||
| 311 | { | ||
| 312 | JPAKEerr(JPAKE_F_JPAKE_STEP1_PROCESS, JPAKE_R_G_TO_THE_X4_IS_NOT_LEGAL); | ||
| 313 | return 0; | ||
| 314 | } | ||
| 315 | |||
| 287 | /* verify their ZKP(xc) */ | 316 | /* verify their ZKP(xc) */ |
| 288 | if(!verify_zkp(&received->p1, ctx->p.g, ctx)) | 317 | if(!verify_zkp(&received->p1, ctx->p.g, ctx)) |
| 289 | { | 318 | { |
diff --git a/src/lib/libcrypto/jpake/jpake.h b/src/lib/libcrypto/jpake/jpake.h index 693ea188cb..fd143b4d9b 100644 --- a/src/lib/libcrypto/jpake/jpake.h +++ b/src/lib/libcrypto/jpake/jpake.h | |||
| @@ -115,6 +115,8 @@ void ERR_load_JPAKE_strings(void); | |||
| 115 | #define JPAKE_F_VERIFY_ZKP 100 | 115 | #define JPAKE_F_VERIFY_ZKP 100 |
| 116 | 116 | ||
| 117 | /* Reason codes. */ | 117 | /* Reason codes. */ |
| 118 | #define JPAKE_R_G_TO_THE_X3_IS_NOT_LEGAL 108 | ||
| 119 | #define JPAKE_R_G_TO_THE_X4_IS_NOT_LEGAL 109 | ||
| 118 | #define JPAKE_R_G_TO_THE_X4_IS_ONE 105 | 120 | #define JPAKE_R_G_TO_THE_X4_IS_ONE 105 |
| 119 | #define JPAKE_R_HASH_OF_HASH_OF_KEY_MISMATCH 106 | 121 | #define JPAKE_R_HASH_OF_HASH_OF_KEY_MISMATCH 106 |
| 120 | #define JPAKE_R_HASH_OF_KEY_MISMATCH 107 | 122 | #define JPAKE_R_HASH_OF_KEY_MISMATCH 107 |
diff --git a/src/lib/libcrypto/jpake/jpake_err.c b/src/lib/libcrypto/jpake/jpake_err.c index 1b95067967..a9a9dee75c 100644 --- a/src/lib/libcrypto/jpake/jpake_err.c +++ b/src/lib/libcrypto/jpake/jpake_err.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* crypto/jpake/jpake_err.c */ | 1 | /* crypto/jpake/jpake_err.c */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1999-2010 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| 5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
| 6 | * modification, are permitted provided that the following conditions | 6 | * modification, are permitted provided that the following conditions |
| @@ -80,6 +80,8 @@ static ERR_STRING_DATA JPAKE_str_functs[]= | |||
| 80 | 80 | ||
| 81 | static ERR_STRING_DATA JPAKE_str_reasons[]= | 81 | static ERR_STRING_DATA JPAKE_str_reasons[]= |
| 82 | { | 82 | { |
| 83 | {ERR_REASON(JPAKE_R_G_TO_THE_X3_IS_NOT_LEGAL),"g to the x3 is not legal"}, | ||
| 84 | {ERR_REASON(JPAKE_R_G_TO_THE_X4_IS_NOT_LEGAL),"g to the x4 is not legal"}, | ||
| 83 | {ERR_REASON(JPAKE_R_G_TO_THE_X4_IS_ONE) ,"g to the x4 is one"}, | 85 | {ERR_REASON(JPAKE_R_G_TO_THE_X4_IS_ONE) ,"g to the x4 is one"}, |
| 84 | {ERR_REASON(JPAKE_R_HASH_OF_HASH_OF_KEY_MISMATCH),"hash of hash of key mismatch"}, | 86 | {ERR_REASON(JPAKE_R_HASH_OF_HASH_OF_KEY_MISMATCH),"hash of hash of key mismatch"}, |
| 85 | {ERR_REASON(JPAKE_R_HASH_OF_KEY_MISMATCH),"hash of key mismatch"}, | 87 | {ERR_REASON(JPAKE_R_HASH_OF_KEY_MISMATCH),"hash of key mismatch"}, |
