1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Math;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Agreement.Srp
- {
- /**
- * Generates new SRP verifier for user
- */
- public class Srp6VerifierGenerator
- {
- protected BigInteger N;
- protected BigInteger g;
- protected IDigest digest;
- public Srp6VerifierGenerator()
- {
- }
- /**
- * Initialises generator to create new verifiers
- * @param N The safe prime to use (see DHParametersGenerator)
- * @param g The group parameter to use (see DHParametersGenerator)
- * @param digest The digest to use. The same digest type will need to be used later for the actual authentication
- * attempt. Also note that the final session key size is dependent on the chosen digest.
- */
- public virtual void Init(BigInteger N, BigInteger g, IDigest digest)
- {
- this.N = N;
- this.g = g;
- this.digest = digest;
- }
- public virtual void Init(Srp6GroupParameters group, IDigest digest)
- {
- Init(group.N, group.G, digest);
- }
- /**
- * Creates a new SRP verifier
- * @param salt The salt to use, generally should be large and random
- * @param identity The user's identifying information (eg. username)
- * @param password The user's password
- * @return A new verifier for use in future SRP authentication
- */
- public virtual BigInteger GenerateVerifier(byte[] salt, byte[] identity, byte[] password)
- {
- BigInteger x = Srp6Utilities.CalculateX(digest, N, salt, identity, password);
- return g.ModPow(x, N);
- }
- }
- }
- #pragma warning restore
- #endif
|