Ejemplo n.º 1
0
        /// <summary>
        /// Generates the third issuance message.
        /// </summary>
        /// <param name="message">The second issuance message.</param>
        /// <returnn>The third issuance message.</returnn>
        public ThirdIssuanceMessage GenerateThirdMessage(SecondIssuanceMessage message)
        {
            if (state != State.First)
            {
                throw new InvalidOperationException("GenerateFirstMessage must be called first");
            }

            if (message.sigmaC.Length != numberOfTokens)
            {
                throw new ArgumentException("invalid sigmaC array length");
            }

            FieldZqElement[] sigmaR = new FieldZqElement[message.sigmaC.Length];
            Group            Gq     = ikap.IssuerParameters.Gq;
            FieldZq          Zq     = ikap.IssuerParameters.Zq;

            for (int i = 0; i < message.sigmaC.Length; i++)
            {
                sigmaR[i] = message.sigmaC[i] * ikap.PrivateKey + w[i];
                w[i]      = Zq.Zero;
            }
            w     = null;
            state = State.Third;
            return(new ThirdIssuanceMessage(sigmaR));
        }
Ejemplo n.º 2
0
    public static SecondIssuanceMessageComposite convertSecondIssuanceMessage(SecondIssuanceMessage sm)
    {
      SecondIssuanceMessageComposite smc = new SecondIssuanceMessageComposite();

      byte[][] byteArray1 = new byte[sm.sigmaC.Length][];
      for (int i = 0; i < byteArray1.Length; i++)
      {
        byteArray1[i] = sm.sigmaC[i].ToByteArray();
      }
      smc.SigmaC = byteArray1;

      return smc;
    }
Ejemplo n.º 3
0
    public static SecondIssuanceMessage convertSecondIssuanceMessageComposite(SecondIssuanceMessageComposite sic)
    {
      BigInteger[] biArray = new BigInteger[sic.SigmaC.Length];
      for (int i = 0; i < biArray.Length; i++)
      {
        biArray[i] = new BigInteger(1, sic.SigmaC[i]);
      }

      SecondIssuanceMessage si = new SecondIssuanceMessage(biArray);

      return si;
    }
    private ThirdIssuanceMessageInfo HandleThirdMessageInfo(Issuer issuer, SecondIssuanceMessage secondMessage)
    {
      ThirdIssuanceMessageInfo thirdMessageInfo = new ThirdIssuanceMessageInfo();
      thirdMessageInfo.ThirdMessage = issuer.GenerateThirdMessage(secondMessage);
      return thirdMessageInfo;

    }
Ejemplo n.º 5
0
        /// <summary>
        /// Generates the third issuance message.
        /// </summary>
        /// <param name="message">The second issuance message.</param>
        /// <returnn>The third issuance message.</returnn>
        public ThirdIssuanceMessage GenerateThirdMessage(SecondIssuanceMessage message)
        {
            if (state != State.First)
            {
                throw new InvalidOperationException("GenerateFirstMessage must be called first");
            }

            if (message.sigmaC.Length != numberOfTokens)
            {
                throw new ArgumentException("invalid sigmaC array length");
            }

            FieldZqElement[] sigmaR = new FieldZqElement[message.sigmaC.Length];
            Group Gq = ikap.IssuerParameters.Gq;
            FieldZq Zq = ikap.IssuerParameters.Zq;
            for (int i = 0; i < message.sigmaC.Length; i++)
            {
                sigmaR[i] = message.sigmaC[i] * ikap.PrivateKey + w[i];
                w[i] = Zq.Zero;
            }
            w = null;
            state = State.Third;
            return new ThirdIssuanceMessage(sigmaR);
        }