2 * Copyright (c) 1997-1999 The Stanford SRP Authentication Project
5 * Permission is hereby granted, free of charge, to any person obtaining
6 * a copy of this software and associated documentation files (the
7 * "Software"), to deal in the Software without restriction, including
8 * without limitation the rights to use, copy, modify, merge, publish,
9 * distribute, sublicense, and/or sell copies of the Software, and to
10 * permit persons to whom the Software is furnished to do so, subject to
11 * the following conditions:
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
16 * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
18 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
20 * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
21 * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
22 * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
23 * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
24 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
26 * In addition, the following conditions apply:
28 * 1. Any software that incorporates the SRP authentication technology
29 * must display the following acknowlegment:
30 * "This product uses the 'Secure Remote Password' cryptographic
31 * authentication system developed by Tom Wu (tjw@CS.Stanford.EDU)."
33 * 2. Any software that incorporates all or part of the SRP distribution
34 * itself must also display the following acknowledgment:
35 * "This product includes software developed by Tom Wu and Eugene
36 * Jhong for the SRP Distribution (http://srp.stanford.edu/srp/)."
38 * 3. Redistributions in source or binary form must retain an intact copy
39 * of this copyright notice and list of conditions.
43 #include <sys/types.h>
48 typedef BIGNUM
* BigInteger
;
51 #include "t_defines.h"
54 /* Math library interface stubs */
60 BIGNUM
* a
= BN_new();
66 BigIntegerFromBytes(bytes
, length
)
67 unsigned char * bytes
;
70 BIGNUM
* a
= BN_new();
71 BN_bin2bn(bytes
, length
, a
);
76 BigIntegerToBytes(src
, dest
)
80 return BN_bn2bin(src
, dest
);
87 return BN_cmp(c1
, c2
);
91 BigIntegerCmpInt(c1
, c2
)
95 BIGNUM
* a
= BN_new();
104 BigIntegerAdd(result
, a1
, a2
)
105 BigInteger result
, a1
, a2
;
107 BN_add(result
, a1
, a2
);
111 BigIntegerAddInt(result
, a1
, a2
)
112 BigInteger result
, a1
;
115 BIGNUM
* a
= BN_new();
117 BN_add(result
, a1
, a
);
122 BigIntegerSub(result
, s1
, s2
)
123 BigInteger result
, s1
, s2
;
125 BN_sub(result
, s1
, s2
);
129 BigIntegerMulInt(result
, m1
, m2
)
130 BigInteger result
, m1
;
133 BN_CTX
* ctx
= BN_CTX_new();
134 BIGNUM
* m
= BN_new();
136 BN_mul(result
, m1
, m
, ctx
);
141 BigIntegerModMul(r
, m1
, m2
, modulus
)
142 BigInteger r
, m1
, m2
, modulus
;
144 BN_CTX
* ctx
= BN_CTX_new();
145 BN_mod_mul(r
, m1
, m2
, modulus
, ctx
);
150 BigIntegerModExp(r
, b
, e
, m
)
151 BigInteger r
, b
, e
, m
;
153 BN_CTX
* ctx
= BN_CTX_new();
154 BN_mod_exp(r
, b
, e
, m
, ctx
);
159 BigIntegerModExpInt(r
, b
, e
, m
)
164 BN_CTX
* ctx
= BN_CTX_new();
165 BIGNUM
* p
= BN_new();
167 BN_mod_exp(r
, b
, p
, m
, ctx
);
This page took 0.056684 seconds and 5 git commands to generate.