コード例 #1
0
ファイル: SRP6Test.cs プロジェクト: jwtvh/bc-csharp
        private void testClientCatchesBadB(Srp6GroupParameters group)
        {
            byte[] I = Encoding.UTF8.GetBytes("username");
            byte[] P = Encoding.UTF8.GetBytes("password");
            byte[] s = new byte[16];
            random.NextBytes(s);

            Srp6Client client = new Srp6Client();

            client.Init(group, new Sha256Digest(), random);

            client.GenerateClientCredentials(s, I, P);

            try
            {
                client.CalculateSecret(BigInteger.Zero);
                Fail("Client failed to detect invalid value for 'B'");
            }
            catch (CryptoException)
            {
                // Expected
            }

            try
            {
                client.CalculateSecret(group.N);
                Fail("Client failed to detect invalid value for 'B'");
            }
            catch (CryptoException)
            {
                // Expected
            }
        }
コード例 #2
0
ファイル: SRP6Test.cs プロジェクト: jwtvh/bc-csharp
        private void testMutualVerification(Srp6GroupParameters group)
        {
            byte[] I = Encoding.UTF8.GetBytes("username");
            byte[] P = Encoding.UTF8.GetBytes("password");
            byte[] s = new byte[16];
            random.NextBytes(s);

            Srp6VerifierGenerator gen = new Srp6VerifierGenerator();

            gen.Init(group, new Sha256Digest());
            BigInteger v = gen.GenerateVerifier(s, I, P);

            Srp6Client client = new Srp6Client();

            client.Init(group, new Sha256Digest(), random);

            Srp6Server server = new Srp6Server();

            server.Init(group, v, new Sha256Digest(), random);

            BigInteger A = client.GenerateClientCredentials(s, I, P);
            BigInteger B = server.GenerateServerCredentials();

            BigInteger clientS = client.CalculateSecret(B);
            BigInteger serverS = server.CalculateSecret(A);

            if (!clientS.Equals(serverS))
            {
                Fail("SRP agreement failed - client/server calculated different secrets");
            }
        }
コード例 #3
0
ファイル: SrpClient.cs プロジェクト: yuwenpeng/openHistorian
 void SetSrpStrength(SrpStrength strength)
 {
     m_strength      = strength;
     m_srpByteLength = ((int)strength) >> 3;
     m_param         = SrpConstants.Lookup(m_strength);
     m_client        = new Srp6Client(m_param);
 }
コード例 #4
0
 public TlsSrpKeyExchange(int keyExchange, IList supportedSignatureAlgorithms, TlsSrpGroupVerifier groupVerifier, byte[] identity, byte[] password) : base(keyExchange, supportedSignatureAlgorithms)
 {
     this.mTlsSigner     = TlsSrpKeyExchange.CreateSigner(keyExchange);
     this.mGroupVerifier = groupVerifier;
     this.mIdentity      = identity;
     this.mPassword      = password;
     this.mSrpClient     = new Srp6Client();
 }
コード例 #5
0
 public TlsSrpKeyExchange(int keyExchange, global::System.Collections.IList supportedSignatureAlgorithms, TlsSrpGroupVerifier groupVerifier, byte[] identity, byte[] password)
     : base(keyExchange, supportedSignatureAlgorithms)
 {
     mTlsSigner     = CreateSigner(keyExchange);
     mGroupVerifier = groupVerifier;
     mIdentity      = identity;
     mPassword      = password;
     mSrpClient     = new Srp6Client();
 }
コード例 #6
0
        public static BigInteger Srp6Response(string username, byte[] password, byte[] salt, BigInteger B, out BigInteger token)
        {
            var random = new SecureRandom(new CryptoApiRandomGenerator());

            var I = Encoding.UTF8.GetBytes(username);
            var p = FromInput(password, salt);

            var client = new Srp6Client();

            client.Init(GroupParameters, new Sha256Digest(), random);
            token = client.GenerateClientCredentials(salt, I, p);
            client.CalculateSecret(B);
            return(client.CalculateClientEvidenceMessage());
        }