Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/openssl/srp.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 /* | |
2 * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. | |
3 * Copyright (c) 2004, EdelKey Project. All Rights Reserved. | |
4 * | |
5 * Licensed under the OpenSSL license (the "License"). You may not use | |
6 * this file except in compliance with the License. You can obtain a copy | |
7 * in the file LICENSE in the source distribution or at | |
8 * https://www.openssl.org/source/license.html | |
9 * | |
10 * Originally written by Christophe Renou and Peter Sylvester, | |
11 * for the EdelKey project. | |
12 */ | |
13 | |
14 #ifndef HEADER_SRP_H | |
15 # define HEADER_SRP_H | |
16 | |
17 #include <openssl/opensslconf.h> | |
18 | |
19 #ifndef OPENSSL_NO_SRP | |
20 # include <stdio.h> | |
21 # include <string.h> | |
22 # include <openssl/safestack.h> | |
23 # include <openssl/bn.h> | |
24 # include <openssl/crypto.h> | |
25 | |
26 # ifdef __cplusplus | |
27 extern "C" { | |
28 # endif | |
29 | |
30 typedef struct SRP_gN_cache_st { | |
31 char *b64_bn; | |
32 BIGNUM *bn; | |
33 } SRP_gN_cache; | |
34 | |
35 | |
36 DEFINE_STACK_OF(SRP_gN_cache) | |
37 | |
38 typedef struct SRP_user_pwd_st { | |
39 /* Owned by us. */ | |
40 char *id; | |
41 BIGNUM *s; | |
42 BIGNUM *v; | |
43 /* Not owned by us. */ | |
44 const BIGNUM *g; | |
45 const BIGNUM *N; | |
46 /* Owned by us. */ | |
47 char *info; | |
48 } SRP_user_pwd; | |
49 | |
50 void SRP_user_pwd_free(SRP_user_pwd *user_pwd); | |
51 | |
52 DEFINE_STACK_OF(SRP_user_pwd) | |
53 | |
54 typedef struct SRP_VBASE_st { | |
55 STACK_OF(SRP_user_pwd) *users_pwd; | |
56 STACK_OF(SRP_gN_cache) *gN_cache; | |
57 /* to simulate a user */ | |
58 char *seed_key; | |
59 const BIGNUM *default_g; | |
60 const BIGNUM *default_N; | |
61 } SRP_VBASE; | |
62 | |
63 /* | |
64 * Internal structure storing N and g pair | |
65 */ | |
66 typedef struct SRP_gN_st { | |
67 char *id; | |
68 const BIGNUM *g; | |
69 const BIGNUM *N; | |
70 } SRP_gN; | |
71 | |
72 DEFINE_STACK_OF(SRP_gN) | |
73 | |
74 SRP_VBASE *SRP_VBASE_new(char *seed_key); | |
75 void SRP_VBASE_free(SRP_VBASE *vb); | |
76 int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); | |
77 | |
78 /* This method ignores the configured seed and fails for an unknown user. */ | |
79 DEPRECATEDIN_1_1_0(SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username)) | |
80 /* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ | |
81 SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); | |
82 | |
83 char *SRP_create_verifier(const char *user, const char *pass, char **salt, | |
84 char **verifier, const char *N, const char *g); | |
85 int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, | |
86 BIGNUM **verifier, const BIGNUM *N, | |
87 const BIGNUM *g); | |
88 | |
89 # define SRP_NO_ERROR 0 | |
90 # define SRP_ERR_VBASE_INCOMPLETE_FILE 1 | |
91 # define SRP_ERR_VBASE_BN_LIB 2 | |
92 # define SRP_ERR_OPEN_FILE 3 | |
93 # define SRP_ERR_MEMORY 4 | |
94 | |
95 # define DB_srptype 0 | |
96 # define DB_srpverifier 1 | |
97 # define DB_srpsalt 2 | |
98 # define DB_srpid 3 | |
99 # define DB_srpgN 4 | |
100 # define DB_srpinfo 5 | |
101 # undef DB_NUMBER | |
102 # define DB_NUMBER 6 | |
103 | |
104 # define DB_SRP_INDEX 'I' | |
105 # define DB_SRP_VALID 'V' | |
106 # define DB_SRP_REVOKED 'R' | |
107 # define DB_SRP_MODIF 'v' | |
108 | |
109 /* see srp.c */ | |
110 char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); | |
111 SRP_gN *SRP_get_default_gN(const char *id); | |
112 | |
113 /* server side .... */ | |
114 BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, | |
115 const BIGNUM *b, const BIGNUM *N); | |
116 BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, | |
117 const BIGNUM *v); | |
118 int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); | |
119 BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); | |
120 | |
121 /* client side .... */ | |
122 BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); | |
123 BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); | |
124 BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, | |
125 const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); | |
126 int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); | |
127 | |
128 # define SRP_MINIMAL_N 1024 | |
129 | |
130 # ifdef __cplusplus | |
131 } | |
132 # endif | |
133 # endif | |
134 | |
135 #endif |