ThingWorx C SDK
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
src
thirdParty
openssl-1.0.2q
osx64
include
openssl
srp.h
1
/* crypto/srp/srp.h */
2
/*
3
* Written by Christophe Renou (christophe.renou@edelweb.fr) with the
4
* precious help of Peter Sylvester (peter.sylvester@edelweb.fr) for the
5
* EdelKey project and contributed to the OpenSSL project 2004.
6
*/
7
/* ====================================================================
8
* Copyright (c) 2004 The OpenSSL Project. All rights reserved.
9
*
10
* Redistribution and use in source and binary forms, with or without
11
* modification, are permitted provided that the following conditions
12
* are met:
13
*
14
* 1. Redistributions of source code must retain the above copyright
15
* notice, this list of conditions and the following disclaimer.
16
*
17
* 2. Redistributions in binary form must reproduce the above copyright
18
* notice, this list of conditions and the following disclaimer in
19
* the documentation and/or other materials provided with the
20
* distribution.
21
*
22
* 3. All advertising materials mentioning features or use of this
23
* software must display the following acknowledgment:
24
* "This product includes software developed by the OpenSSL Project
25
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
26
*
27
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
28
* endorse or promote products derived from this software without
29
* prior written permission. For written permission, please contact
30
* licensing@OpenSSL.org.
31
*
32
* 5. Products derived from this software may not be called "OpenSSL"
33
* nor may "OpenSSL" appear in their names without prior written
34
* permission of the OpenSSL Project.
35
*
36
* 6. Redistributions of any form whatsoever must retain the following
37
* acknowledgment:
38
* "This product includes software developed by the OpenSSL Project
39
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
40
*
41
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
42
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
44
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
45
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
46
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
47
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
48
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
49
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
50
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
51
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
52
* OF THE POSSIBILITY OF SUCH DAMAGE.
53
* ====================================================================
54
*
55
* This product includes cryptographic software written by Eric Young
56
* (eay@cryptsoft.com). This product includes software written by Tim
57
* Hudson (tjh@cryptsoft.com).
58
*
59
*/
60
#ifndef __SRP_H__
61
# define __SRP_H__
62
63
# ifndef OPENSSL_NO_SRP
64
65
# include <stdio.h>
66
# include <string.h>
67
68
#ifdef __cplusplus
69
extern
"C"
{
70
#endif
71
72
# include <openssl/safestack.h>
73
# include <openssl/bn.h>
74
# include <openssl/crypto.h>
75
76
typedef
struct
SRP_gN_cache_st
{
77
char
*b64_bn;
78
BIGNUM
*bn;
79
}
SRP_gN_cache
;
80
81
82
DECLARE_STACK_OF(
SRP_gN_cache
)
83
84
typedef struct
SRP_user_pwd_st
{
85
/* Owned by us. */
86
char
*id;
87
BIGNUM
*s;
88
BIGNUM
*v;
89
/* Not owned by us. */
90
const
BIGNUM
*g;
91
const
BIGNUM
*N;
92
/* Owned by us. */
93
char
*info;
94
}
SRP_user_pwd
;
95
96
DECLARE_STACK_OF(
SRP_user_pwd
)
97
98
void SRP_user_pwd_free(
SRP_user_pwd
*user_pwd);
99
100
typedef struct
SRP_VBASE_st
{
101
STACK_OF(
SRP_user_pwd
) *users_pwd;
102
STACK_OF(
SRP_gN_cache
) *gN_cache;
103
/* to simulate a user */
104
char
*seed_key;
105
BIGNUM
*default_g;
106
BIGNUM
*default_N;
107
}
SRP_VBASE
;
108
109
/*
110
* Structure interne pour retenir les couples N et g
111
*/
112
typedef
struct
SRP_gN_st
{
113
char
*id;
114
BIGNUM
*g;
115
BIGNUM
*N;
116
}
SRP_gN
;
117
118
DECLARE_STACK_OF(
SRP_gN
)
119
120
SRP_VBASE
*SRP_VBASE_new(
char
*seed_key);
121
int
SRP_VBASE_free(
SRP_VBASE
*vb);
122
int
SRP_VBASE_init(
SRP_VBASE
*vb,
char
*verifier_file);
123
124
/* This method ignores the configured seed and fails for an unknown user. */
125
SRP_user_pwd
*SRP_VBASE_get_by_user(
SRP_VBASE
*vb,
char
*username);
126
/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/
127
SRP_user_pwd
*SRP_VBASE_get1_by_user(
SRP_VBASE
*vb,
char
*username);
128
129
char
*SRP_create_verifier(const
char
*user, const
char
*pass,
char
**salt,
130
char
**verifier, const
char
*N, const
char
*g);
131
int
SRP_create_verifier_BN(const
char
*user, const
char
*pass,
BIGNUM
**salt,
132
BIGNUM
**verifier,
BIGNUM
*N,
BIGNUM
*g);
133
134
# define SRP_NO_ERROR 0
135
# define SRP_ERR_VBASE_INCOMPLETE_FILE 1
136
# define SRP_ERR_VBASE_BN_LIB 2
137
# define SRP_ERR_OPEN_FILE 3
138
# define SRP_ERR_MEMORY 4
139
140
# define DB_srptype 0
141
# define DB_srpverifier 1
142
# define DB_srpsalt 2
143
# define DB_srpid 3
144
# define DB_srpgN 4
145
# define DB_srpinfo 5
146
# undef DB_NUMBER
147
# define DB_NUMBER 6
148
149
# define DB_SRP_INDEX 'I'
150
# define DB_SRP_VALID 'V'
151
# define DB_SRP_REVOKED 'R'
152
# define DB_SRP_MODIF 'v'
153
154
/* see srp.c */
155
char
*SRP_check_known_gN_param(
BIGNUM
*g,
BIGNUM
*N);
156
SRP_gN
*SRP_get_default_gN(
const
char
*
id
);
157
158
/* server side .... */
159
BIGNUM
*SRP_Calc_server_key(
BIGNUM
*A,
BIGNUM
*v,
BIGNUM
*u,
BIGNUM
*b,
160
BIGNUM
*N);
161
BIGNUM
*SRP_Calc_B(
BIGNUM
*b,
BIGNUM
*N,
BIGNUM
*g,
BIGNUM
*v);
162
int
SRP_Verify_A_mod_N(
BIGNUM
*A,
BIGNUM
*N);
163
BIGNUM
*SRP_Calc_u(
BIGNUM
*A,
BIGNUM
*B,
BIGNUM
*N);
164
165
/* client side .... */
166
BIGNUM
*SRP_Calc_x(
BIGNUM
*s,
const
char
*user,
const
char
*pass);
167
BIGNUM
*SRP_Calc_A(
BIGNUM
*a,
BIGNUM
*N,
BIGNUM
*g);
168
BIGNUM
*SRP_Calc_client_key(
BIGNUM
*N,
BIGNUM
*B,
BIGNUM
*g,
BIGNUM
*x,
169
BIGNUM
*a,
BIGNUM
*u);
170
int
SRP_Verify_B_mod_N(
BIGNUM
*B,
BIGNUM
*N);
171
172
# define SRP_MINIMAL_N 1024
173
174
#ifdef __cplusplus
175
}
176
#endif
177
178
# endif
179
#endif
SRP_VBASE_st
Definition:
srp.h:100
SRP_gN_st
Definition:
srp.h:112
bignum_st
Definition:
bn.h:313
SRP_user_pwd_st
Definition:
srp.h:84
SRP_gN_cache_st
Definition:
srp.h:76
Generated on Wed Feb 27 2019 14:44:42 for ThingWorx C SDK by
1.8.9.1