/// <summary>
 /// Initializes a new instance of the <see cref="CurlMamParser"/> class.
 /// </summary>
 /// <param name="mask">
 /// The mask.
 /// </param>
 /// <param name="treeFactory">
 /// The tree Factory.
 /// </param>
 /// <param name="curl">
 /// The curl.
 /// </param>
 /// <param name="signingHelper">
 /// The signature Validator.
 /// </param>
 public CurlMamParser(IMask mask, IMerkleTreeFactory treeFactory, AbstractCurl curl, ISigningHelper signingHelper)
 {
     this.TreeFactory   = treeFactory;
     this.SigningHelper = signingHelper;
     this.Mask          = mask;
     this.Curl          = curl;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="CurlMamFactory"/> class.
 /// </summary>
 /// <param name="curl">
 /// The curl.
 /// </param>
 /// <param name="mask">
 /// The mask.
 /// </param>
 /// <param name="signingHelper">
 /// The signing helper.
 /// </param>
 /// <param name="hammingNonceDiver">
 /// The hamming nonce diver.
 /// </param>
 public CurlMamFactory(AbstractCurl curl, IMask mask, ISigningHelper signingHelper, AbstractPearlDiver hammingNonceDiver)
 {
     this.SigningHelper     = signingHelper;
     this.HammingNonceDiver = hammingNonceDiver;
     this.Mask = mask;
     this.Curl = curl;
 }
Exemple #3
0
        /// <inheritdoc />
        public int[] Unmask(int[] payload, AbstractCurl curl)
        {
            var unmasked = new List <int>();

            foreach (var chunk in payload.GetChunks(Constants.TritHashLength))
            {
                for (var i = 0; i < chunk.Length; i++)
                {
                    chunk[i] = Converter.Sum(chunk[i], -curl.Rate(Constants.TritHashLength)[i]);
                }

                unmasked.AddRange(chunk);
                curl.Absorb(chunk);
            }

            return(unmasked.ToArray());
        }
Exemple #4
0
        /// <inheritdoc />
        public void Mask(int[] payload, AbstractCurl curl)
        {
            var keyChunk = curl.Rate(Constants.TritHashLength);

            var round = 0;

            foreach (var chunk in payload.GetChunks(Constants.TritHashLength))
            {
                curl.Absorb(chunk);
                var curlState = curl.Rate(Constants.TritHashLength);
                var length    = chunk.Length;

                for (var i = 0; i < length; i++)
                {
                    payload[round * Constants.TritHashLength + i] = Converter.Sum(chunk[i], keyChunk[i]);
                    keyChunk[i] = curlState[i];
                }

                round++;
            }
        }
Exemple #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SignatureFragmentGenerator"/> class.
 /// </summary>
 /// <param name="curl">
 /// The curl.
 /// </param>
 public SignatureFragmentGenerator(AbstractCurl curl)
 {
     this.Curl = curl;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="AddressGenerator"/> class.
 /// </summary>
 /// <param name="curl">
 /// The curl.
 /// </param>
 /// <param name="keyGenerator">
 /// The key Generator.
 /// </param>
 public AddressGenerator(AbstractCurl curl, IKeyGenerator keyGenerator)
 {
     this.Curl         = curl;
     this.KeyGenerator = keyGenerator;
 }
Exemple #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CurlMerkleTreeFactory"/> class.
 /// </summary>
 /// <param name="nodeFactory">
 /// The node factory.
 /// </param>
 /// <param name="leafFactory">
 /// The leaf Factory.
 /// </param>
 /// <param name="curl">
 /// The curl.
 /// </param>
 public CurlMerkleTreeFactory(IMerkleNodeFactory nodeFactory, IMerkleLeafFactory leafFactory, AbstractCurl curl)
 {
     this.NodeFactory = nodeFactory;
     this.LeafFactory = leafFactory;
     this.Curl        = curl;
 }
Exemple #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="KeyGenerator"/> class.
 /// </summary>
 /// <param name="curl">
 /// The curl.
 /// </param>
 /// <param name="signingHelper">
 /// The signing Helper.
 /// </param>
 public KeyGenerator(AbstractCurl curl, ISigningHelper signingHelper)
 {
     this.Curl          = curl;
     this.SigningHelper = signingHelper;
 }
Exemple #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CurlMask"/> class.
 /// </summary>
 /// <param name="curl">
 /// The curl.
 /// </param>
 public CurlMask(AbstractCurl curl)
 {
     this.Curl = curl;
 }
Exemple #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="IssSigningHelper"/> class.
 /// </summary>
 /// <param name="curlOne">
 /// The curlOne.
 /// </param>
 /// <param name="curlTwo">
 /// The curl Two.
 /// </param>
 /// <param name="curlThree">
 /// The curl Three.
 /// </param>
 public IssSigningHelper(AbstractCurl curlOne, AbstractCurl curlTwo, AbstractCurl curlThree)
 {
     this.CurlOne   = curlOne;
     this.CurlTwo   = curlTwo;
     this.CurlThree = curlThree;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SignatureValidator"/> class.
 /// </summary>
 /// <param name="innerCurl">
 /// The inner curl.
 /// </param>
 /// <param name="outerCurl">
 /// The outer curl.
 /// </param>
 /// <param name="curl">
 /// The curl.
 /// </param>
 public SignatureValidator(AbstractCurl innerCurl, AbstractCurl outerCurl, AbstractCurl curl)
 {
     this.InnerCurl = innerCurl;
     this.OuterCurl = outerCurl;
     this.Curl      = curl;
 }
Exemple #12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CurlMerkleNodeFactory"/> class.
 /// </summary>
 /// <param name="curl">
 /// The curl.
 /// </param>
 public CurlMerkleNodeFactory(AbstractCurl curl)
 {
     this.Curl = curl;
 }
 /// <inheritdoc />
 public PrivateKey(string privateKey, int securityLevel, int keyIndex, ISignatureFragmentGenerator signatureFragmentGenerator, AbstractCurl curl)
     : base(privateKey, securityLevel, keyIndex)
 {
     this.SignatureFragmentGenerator = signatureFragmentGenerator;
     this.Curl = curl;
 }