コード例 #1
0
 /**
  * Computes the client evidence message M1 using the previously received values.
  * To be called after calculating the secret S.
  * @return M1: the client side generated evidence message
  * @throws CryptoException
  */
 public virtual BigInteger CalculateClientEvidenceMessage()
 {
     // Verify pre-requirements
     if (this.pubA == null || this.B == null || this.S == null)
     {
         throw new CryptoException("Impossible to compute M1: " +
                                   "some data are missing from the previous operations (A,B,S)");
     }
     // compute the client evidence message 'M1'
     this.M1 = Srp6Utilities.CalculateM1(digest, N, pubA, B, S);
     return(M1);
 }
コード例 #2
0
        /**
         * Authenticates the received client evidence message M1 and saves it only if correct.
         * To be called after calculating the secret S.
         * @param M1: the client side generated evidence message
         * @return A boolean indicating if the client message M1 was the expected one.
         * @throws CryptoException
         */
        public virtual bool VerifyClientEvidenceMessage(BigInteger clientM1)
        {
            // Verify pre-requirements
            if (this.A == null || this.pubB == null || this.S == null)
            {
                throw new CryptoException("Impossible to compute and verify M1: " +
                                          "some data are missing from the previous operations (A,B,S)");
            }

            // Compute the own client evidence message 'M1'
            BigInteger computedM1 = Srp6Utilities.CalculateM1(digest, N, A, pubB, S);

            if (computedM1.Equals(clientM1))
            {
                this.M1 = clientM1;
                return(true);
            }
            return(false);
        }