63 # ifndef OPENSSL_NO_SRP
72 # include <openssl/safestack.h>
73 # include <openssl/bn.h>
74 # include <openssl/crypto.h>
76 typedef struct SRP_gN_cache_st {
82 DECLARE_STACK_OF(SRP_gN_cache)
84 typedef struct SRP_user_pwd_st {
93 DECLARE_STACK_OF(SRP_user_pwd)
95 typedef struct SRP_VBASE_st {
96 STACK_OF(SRP_user_pwd) *users_pwd;
97 STACK_OF(SRP_gN_cache) *gN_cache;
107 typedef struct SRP_gN_st {
113 DECLARE_STACK_OF(SRP_gN)
115 SRP_VBASE *SRP_VBASE_new(
char *seed_key);
116 int SRP_VBASE_free(SRP_VBASE *vb);
117 int SRP_VBASE_init(SRP_VBASE *vb,
char *verifier_file);
118 SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb,
char *username);
119 char *SRP_create_verifier(const
char *user, const
char *pass,
char **salt,
120 char **verifier, const
char *N, const
char *g);
121 int SRP_create_verifier_BN(const
char *user, const
char *pass, BIGNUM **salt,
122 BIGNUM **verifier, BIGNUM *N, BIGNUM *g);
124 # define SRP_NO_ERROR 0
125 # define SRP_ERR_VBASE_INCOMPLETE_FILE 1
126 # define SRP_ERR_VBASE_BN_LIB 2
127 # define SRP_ERR_OPEN_FILE 3
128 # define SRP_ERR_MEMORY 4
130 # define DB_srptype 0
131 # define DB_srpverifier 1
132 # define DB_srpsalt 2
135 # define DB_srpinfo 5
139 # define DB_SRP_INDEX 'I'
140 # define DB_SRP_VALID 'V'
141 # define DB_SRP_REVOKED 'R'
142 # define DB_SRP_MODIF 'v'
145 char *SRP_check_known_gN_param(BIGNUM *g, BIGNUM *N);
146 SRP_gN *SRP_get_default_gN(
const char *
id);
149 BIGNUM *SRP_Calc_server_key(BIGNUM *A, BIGNUM *v, BIGNUM *u, BIGNUM *b,
151 BIGNUM *SRP_Calc_B(BIGNUM *b, BIGNUM *N, BIGNUM *g, BIGNUM *v);
152 int SRP_Verify_A_mod_N(BIGNUM *A, BIGNUM *N);
153 BIGNUM *SRP_Calc_u(BIGNUM *A, BIGNUM *B, BIGNUM *N);
156 BIGNUM *SRP_Calc_x(BIGNUM *s,
const char *user,
const char *pass);
157 BIGNUM *SRP_Calc_A(BIGNUM *a, BIGNUM *N, BIGNUM *g);
158 BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM *g, BIGNUM *x,
159 BIGNUM *a, BIGNUM *u);
160 int SRP_Verify_B_mod_N(BIGNUM *B, BIGNUM *N);
162 # define SRP_MINIMAL_N 1024