You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. /*
  2. * WARNING: do not edit!
  3. * Generated by makefile from include\openssl\srp.h.in
  4. *
  5. * Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved.
  6. * Copyright (c) 2004, EdelKey Project. All Rights Reserved.
  7. *
  8. * Licensed under the Apache License 2.0 (the "License"). You may not use
  9. * this file except in compliance with the License. You can obtain a copy
  10. * in the file LICENSE in the source distribution or at
  11. * https://www.openssl.org/source/license.html
  12. *
  13. * Originally written by Christophe Renou and Peter Sylvester,
  14. * for the EdelKey project.
  15. */
  16. #ifndef OPENSSL_SRP_H
  17. #define OPENSSL_SRP_H
  18. #pragma once
  19. #include <openssl/macros.h>
  20. #ifndef OPENSSL_NO_DEPRECATED_3_0
  21. #define HEADER_SRP_H
  22. #endif
  23. #include <openssl/opensslconf.h>
  24. #ifndef OPENSSL_NO_SRP
  25. #include <stdio.h>
  26. #include <string.h>
  27. #include <openssl/safestack.h>
  28. #include <openssl/bn.h>
  29. #include <openssl/crypto.h>
  30. #ifdef __cplusplus
  31. extern "C"
  32. {
  33. #endif
  34. #ifndef OPENSSL_NO_DEPRECATED_3_0
  35. typedef struct SRP_gN_cache_st
  36. {
  37. char* b64_bn;
  38. BIGNUM* bn;
  39. } SRP_gN_cache;
  40. SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache)
  41. #define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk))
  42. #define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache*)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx)))
  43. #define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache)*)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp)))
  44. #define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache)*)OPENSSL_sk_new_null())
  45. #define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache)*)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n)))
  46. #define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n))
  47. #define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk))
  48. #define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk))
  49. #define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache*)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i)))
  50. #define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache*)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)))
  51. #define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))
  52. #define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))
  53. #define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache*)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk)))
  54. #define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache*)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk)))
  55. #define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_freefunc_type(freefunc))
  56. #define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx))
  57. #define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache*)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr)))
  58. #define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))
  59. #define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))
  60. #define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum)
  61. #define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk))
  62. #define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk))
  63. #define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache)*)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk)))
  64. #define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache)*)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc)))
  65. #define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp)))
  66. typedef struct SRP_user_pwd_st
  67. {
  68. /* Owned by us. */
  69. char* id;
  70. BIGNUM* s;
  71. BIGNUM* v;
  72. /* Not owned by us. */
  73. const BIGNUM* g;
  74. const BIGNUM* N;
  75. /* Owned by us. */
  76. char* info;
  77. } SRP_user_pwd;
  78. SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd)
  79. #define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk))
  80. #define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd*)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx)))
  81. #define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd)*)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp)))
  82. #define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd)*)OPENSSL_sk_new_null())
  83. #define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd)*)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n)))
  84. #define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n))
  85. #define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk))
  86. #define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk))
  87. #define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd*)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i)))
  88. #define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd*)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)))
  89. #define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))
  90. #define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))
  91. #define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd*)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk)))
  92. #define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd*)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk)))
  93. #define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_freefunc_type(freefunc))
  94. #define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx))
  95. #define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd*)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr)))
  96. #define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))
  97. #define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))
  98. #define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum)
  99. #define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk))
  100. #define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk))
  101. #define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd)*)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk)))
  102. #define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd)*)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc)))
  103. #define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp)))
  104. OSSL_DEPRECATEDIN_3_0
  105. SRP_user_pwd* SRP_user_pwd_new(void);
  106. OSSL_DEPRECATEDIN_3_0
  107. void SRP_user_pwd_free(SRP_user_pwd* user_pwd);
  108. OSSL_DEPRECATEDIN_3_0
  109. void SRP_user_pwd_set_gN(SRP_user_pwd* user_pwd, const BIGNUM* g, const BIGNUM* N);
  110. OSSL_DEPRECATEDIN_3_0
  111. int SRP_user_pwd_set1_ids(SRP_user_pwd* user_pwd, const char* id, const char* info);
  112. OSSL_DEPRECATEDIN_3_0
  113. int SRP_user_pwd_set0_sv(SRP_user_pwd* user_pwd, BIGNUM* s, BIGNUM* v);
  114. typedef struct SRP_VBASE_st
  115. {
  116. STACK_OF(SRP_user_pwd) * users_pwd;
  117. STACK_OF(SRP_gN_cache) * gN_cache;
  118. /* to simulate a user */
  119. char* seed_key;
  120. const BIGNUM* default_g;
  121. const BIGNUM* default_N;
  122. } SRP_VBASE;
  123. /*
  124. * Internal structure storing N and g pair
  125. */
  126. typedef struct SRP_gN_st
  127. {
  128. char* id;
  129. const BIGNUM* g;
  130. const BIGNUM* N;
  131. } SRP_gN;
  132. SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN)
  133. #define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk))
  134. #define sk_SRP_gN_value(sk, idx) ((SRP_gN*)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx)))
  135. #define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN)*)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp)))
  136. #define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN)*)OPENSSL_sk_new_null())
  137. #define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN)*)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n)))
  138. #define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n))
  139. #define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk))
  140. #define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk))
  141. #define sk_SRP_gN_delete(sk, i) ((SRP_gN*)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i)))
  142. #define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN*)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)))
  143. #define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))
  144. #define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))
  145. #define sk_SRP_gN_pop(sk) ((SRP_gN*)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk)))
  146. #define sk_SRP_gN_shift(sk) ((SRP_gN*)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk)))
  147. #define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_freefunc_type(freefunc))
  148. #define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx))
  149. #define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN*)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr)))
  150. #define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))
  151. #define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))
  152. #define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum)
  153. #define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk))
  154. #define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk))
  155. #define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN)*)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk)))
  156. #define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN)*)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc)))
  157. #define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp)))
  158. OSSL_DEPRECATEDIN_3_0
  159. SRP_VBASE* SRP_VBASE_new(char* seed_key);
  160. OSSL_DEPRECATEDIN_3_0
  161. void SRP_VBASE_free(SRP_VBASE* vb);
  162. OSSL_DEPRECATEDIN_3_0
  163. int SRP_VBASE_init(SRP_VBASE* vb, char* verifier_file);
  164. OSSL_DEPRECATEDIN_3_0
  165. int SRP_VBASE_add0_user(SRP_VBASE* vb, SRP_user_pwd* user_pwd);
  166. /* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/
  167. OSSL_DEPRECATEDIN_3_0
  168. SRP_user_pwd* SRP_VBASE_get1_by_user(SRP_VBASE* vb, char* username);
  169. OSSL_DEPRECATEDIN_3_0
  170. char* SRP_create_verifier_ex(const char* user, const char* pass, char** salt, char** verifier, const char* N, const char* g, OSSL_LIB_CTX* libctx, const char* propq);
  171. OSSL_DEPRECATEDIN_3_0
  172. char* SRP_create_verifier(const char* user, const char* pass, char** salt, char** verifier, const char* N, const char* g);
  173. OSSL_DEPRECATEDIN_3_0
  174. int SRP_create_verifier_BN_ex(const char* user, const char* pass, BIGNUM** salt, BIGNUM** verifier, const BIGNUM* N, const BIGNUM* g, OSSL_LIB_CTX* libctx, const char* propq);
  175. OSSL_DEPRECATEDIN_3_0
  176. int SRP_create_verifier_BN(const char* user, const char* pass, BIGNUM** salt, BIGNUM** verifier, const BIGNUM* N, const BIGNUM* g);
  177. #define SRP_NO_ERROR 0
  178. #define SRP_ERR_VBASE_INCOMPLETE_FILE 1
  179. #define SRP_ERR_VBASE_BN_LIB 2
  180. #define SRP_ERR_OPEN_FILE 3
  181. #define SRP_ERR_MEMORY 4
  182. #define DB_srptype 0
  183. #define DB_srpverifier 1
  184. #define DB_srpsalt 2
  185. #define DB_srpid 3
  186. #define DB_srpgN 4
  187. #define DB_srpinfo 5
  188. #undef DB_NUMBER
  189. #define DB_NUMBER 6
  190. #define DB_SRP_INDEX 'I'
  191. #define DB_SRP_VALID 'V'
  192. #define DB_SRP_REVOKED 'R'
  193. #define DB_SRP_MODIF 'v'
  194. /* see srp.c */
  195. OSSL_DEPRECATEDIN_3_0
  196. char* SRP_check_known_gN_param(const BIGNUM* g, const BIGNUM* N);
  197. OSSL_DEPRECATEDIN_3_0
  198. SRP_gN* SRP_get_default_gN(const char* id);
  199. /* server side .... */
  200. OSSL_DEPRECATEDIN_3_0
  201. BIGNUM* SRP_Calc_server_key(const BIGNUM* A, const BIGNUM* v, const BIGNUM* u, const BIGNUM* b, const BIGNUM* N);
  202. OSSL_DEPRECATEDIN_3_0
  203. BIGNUM* SRP_Calc_B_ex(const BIGNUM* b, const BIGNUM* N, const BIGNUM* g, const BIGNUM* v, OSSL_LIB_CTX* libctx, const char* propq);
  204. OSSL_DEPRECATEDIN_3_0
  205. BIGNUM* SRP_Calc_B(const BIGNUM* b, const BIGNUM* N, const BIGNUM* g, const BIGNUM* v);
  206. OSSL_DEPRECATEDIN_3_0
  207. int SRP_Verify_A_mod_N(const BIGNUM* A, const BIGNUM* N);
  208. OSSL_DEPRECATEDIN_3_0
  209. BIGNUM* SRP_Calc_u_ex(const BIGNUM* A, const BIGNUM* B, const BIGNUM* N, OSSL_LIB_CTX* libctx, const char* propq);
  210. OSSL_DEPRECATEDIN_3_0
  211. BIGNUM* SRP_Calc_u(const BIGNUM* A, const BIGNUM* B, const BIGNUM* N);
  212. /* client side .... */
  213. OSSL_DEPRECATEDIN_3_0
  214. BIGNUM* SRP_Calc_x_ex(const BIGNUM* s, const char* user, const char* pass, OSSL_LIB_CTX* libctx, const char* propq);
  215. OSSL_DEPRECATEDIN_3_0
  216. BIGNUM* SRP_Calc_x(const BIGNUM* s, const char* user, const char* pass);
  217. OSSL_DEPRECATEDIN_3_0
  218. BIGNUM* SRP_Calc_A(const BIGNUM* a, const BIGNUM* N, const BIGNUM* g);
  219. OSSL_DEPRECATEDIN_3_0
  220. BIGNUM* SRP_Calc_client_key_ex(const BIGNUM* N, const BIGNUM* B, const BIGNUM* g, const BIGNUM* x, const BIGNUM* a, const BIGNUM* u, OSSL_LIB_CTX* libctx, const char* propq);
  221. OSSL_DEPRECATEDIN_3_0
  222. BIGNUM* SRP_Calc_client_key(const BIGNUM* N, const BIGNUM* B, const BIGNUM* g, const BIGNUM* x, const BIGNUM* a, const BIGNUM* u);
  223. OSSL_DEPRECATEDIN_3_0
  224. int SRP_Verify_B_mod_N(const BIGNUM* B, const BIGNUM* N);
  225. #define SRP_MINIMAL_N 1024
  226. #endif /* OPENSSL_NO_DEPRECATED_3_0 */
  227. /* This method ignores the configured seed and fails for an unknown user. */
  228. #ifndef OPENSSL_NO_DEPRECATED_1_1_0
  229. OSSL_DEPRECATEDIN_1_1_0
  230. SRP_user_pwd* SRP_VBASE_get_by_user(SRP_VBASE* vb, char* username);
  231. #endif
  232. #ifdef __cplusplus
  233. }
  234. #endif
  235. #endif
  236. #endif