Example #1
0
 private void CreateInitialState()
 {
     ulong[] array = (ulong[])SkeinEngine.INITIAL_STATES[SkeinEngine.VariantIdentifier(this.BlockSize, this.OutputSize)];
     if (this.key == null && array != null)
     {
         this.chain = Arrays.Clone(array);
     }
     else
     {
         this.chain = new ulong[this.BlockSize / 8];
         if (this.key != null)
         {
             this.UbiComplete(0, this.key);
         }
         this.UbiComplete(4, new SkeinEngine.Configuration((long)(this.outputSizeBytes * 8)).Bytes);
     }
     if (this.preMessageParameters != null)
     {
         for (int i = 0; i < this.preMessageParameters.Length; i++)
         {
             SkeinEngine.Parameter parameter = this.preMessageParameters[i];
             this.UbiComplete(parameter.Type, parameter.Value);
         }
     }
     this.initialState = Arrays.Clone(this.chain);
 }
Example #2
0
 private void CopyIn(SkeinEngine engine)
 {
     ubi.Reset(engine.ubi);
     chain                 = Arrays.Clone(engine.chain, chain);
     initialState          = Arrays.Clone(engine.initialState, initialState);
     key                   = Arrays.Clone(engine.key, key);
     preMessageParameters  = Clone(engine.preMessageParameters, preMessageParameters);
     postMessageParameters = Clone(engine.postMessageParameters, postMessageParameters);
 }
Example #3
0
 private void CopyIn(SkeinEngine engine)
 {
     this.ubi.Reset(engine.ubi);
     this.chain                 = Arrays.Clone(engine.chain, this.chain);
     this.initialState          = Arrays.Clone(engine.initialState, this.initialState);
     this.key                   = Arrays.Clone(engine.key, this.key);
     this.preMessageParameters  = Clone(engine.preMessageParameters, this.preMessageParameters);
     this.postMessageParameters = Clone(engine.postMessageParameters, this.postMessageParameters);
 }
Example #4
0
        public void Reset(IMemoable other)
        {
            SkeinEngine skeinEngine = (SkeinEngine)other;

            if (BlockSize != skeinEngine.BlockSize || outputSizeBytes != skeinEngine.outputSizeBytes)
            {
                throw new MemoableResetException("Incompatible parameters in provided SkeinEngine.");
            }
            CopyIn(skeinEngine);
        }
Example #5
0
 public SkeinEngine(SkeinEngine engine)
     : this(engine.BlockSize * 8, engine.OutputSize * 8)
 {
     CopyIn(engine);
 }
Example #6
0
 public UBI(SkeinEngine engine, int blockSize)
 {
     this.engine  = engine;
     currentBlock = new byte[blockSize];
     message      = new ulong[currentBlock.Length / 8];
 }
Example #7
0
 private void CopyIn(SkeinEngine engine)
 {
     this.ubi.Reset(engine.ubi);
     this.chain = Arrays.Clone(engine.chain, this.chain);
     this.initialState = Arrays.Clone(engine.initialState, this.initialState);
     this.key = Arrays.Clone(engine.key, this.key);
     this.preMessageParameters = Clone(engine.preMessageParameters, this.preMessageParameters);
     this.postMessageParameters = Clone(engine.postMessageParameters, this.postMessageParameters);
 }
Example #8
0
 /// <summary>
 /// Creates a SkeinEngine as an exact copy of an existing instance.
 /// </summary>
 public SkeinEngine(SkeinEngine engine)
     : this(engine.BlockSize * 8, engine.OutputSize * 8)
 {
     CopyIn(engine);
 }
Example #9
0
 private static void InitialState(int blockSize, int outputSize, ulong[] state)
 {
     SkeinEngine.INITIAL_STATES.Add(SkeinEngine.VariantIdentifier(blockSize / 8, outputSize / 8), state);
 }
Example #10
0
		public SkeinMac(SkeinMac mac)
		{
			this.engine = new SkeinEngine(mac.engine);
		}
Example #11
0
		/// <summary>
		/// Constructs a Skein MAC with an internal state size and output size.
		/// </summary>
		/// <param name="stateSizeBits">the internal state size in bits - one of <see cref="SKEIN_256"/> <see cref="SKEIN_512"/> or
		///                       <see cref="SKEIN_1024"/>.</param>
		/// <param name="digestSizeBits">the output/MAC size to produce in bits, which must be an integral number of
		///                      bytes.</param>
		public SkeinMac(int stateSizeBits, int digestSizeBits)
		{
			this.engine = new SkeinEngine(stateSizeBits, digestSizeBits);
		}
Example #12
0
		public SkeinDigest(SkeinDigest digest)
		{
			this.engine = new SkeinEngine(digest.engine);
		}
Example #13
0
		/// <summary>
		/// Constructs a Skein digest with an internal state size and output size.
		/// </summary>
		/// <param name="stateSizeBits">the internal state size in bits - one of <see cref="SKEIN_256"/> <see cref="SKEIN_512"/> or
		///                       <see cref="SKEIN_1024"/>.</param>
		/// <param name="digestSizeBits">the output/digest size to produce in bits, which must be an integral number of
		///                      bytes.</param>
		public SkeinDigest(int stateSizeBits, int digestSizeBits)
		{
			this.engine = new SkeinEngine(stateSizeBits, digestSizeBits);
			Init(null);
		}
Example #14
0
 /// <summary>
 /// Constructs a Skein digest with an internal state size and output size.
 /// </summary>
 /// <param name="stateSizeBits">the internal state size in bits - one of <see cref="SKEIN_256"/> <see cref="SKEIN_512"/> or
 ///                       <see cref="SKEIN_1024"/>.</param>
 /// <param name="digestSizeBits">the output/digest size to produce in bits, which must be an integral number of
 ///                      bytes.</param>
 public SkeinDigest(int stateSizeBits, int digestSizeBits)
 {
     this.engine = new SkeinEngine(stateSizeBits, digestSizeBits);
     Init(null);
 }
Example #15
0
 public UBI(SkeinEngine engine, int blockSize)
 {
     this.engine = engine;
     currentBlock = new byte[blockSize];
     message = new ulong[currentBlock.Length / 8];
 }
Example #16
0
 public SkeinDigest(SkeinDigest digest)
 {
     this.engine = new SkeinEngine(digest.engine);
 }
Example #17
0
 static SkeinEngine()
 {
     SkeinEngine.INITIAL_STATES = Platform.CreateHashtable();
     SkeinEngine.InitialState(256, 128, new ulong[]
     {
         16217771249220022880uL,
         9817190399063458076uL,
         1155188648486244218uL,
         14769517481627992514uL
     });
     SkeinEngine.InitialState(256, 160, new ulong[]
     {
         1450197650740764312uL,
         3081844928540042640uL,
         15310647011875280446uL,
         3301952811952417661uL
     });
     SkeinEngine.InitialState(256, 224, new ulong[]
     {
         14270089230798940683uL,
         9758551101254474012uL,
         11082101768697755780uL,
         4056579644589979102uL
     });
     SkeinEngine.InitialState(256, 256, new ulong[]
     {
         18202890402666165321uL,
         3443677322885453875uL,
         12915131351309911055uL,
         7662005193972177513uL
     });
     SkeinEngine.InitialState(512, 128, new ulong[]
     {
         12158729379475595090uL,
         2204638249859346602uL,
         3502419045458743507uL,
         13617680570268287068uL,
         983504137758028059uL,
         1880512238245786339uL,
         11730851291495443074uL,
         7602827311880509485uL
     });
     SkeinEngine.InitialState(512, 160, new ulong[]
     {
         2934123928682216849uL,
         14047033351726823311uL,
         1684584802963255058uL,
         5744138295201861711uL,
         2444857010922934358uL,
         15638910433986703544uL,
         13325156239043941114uL,
         118355523173251694uL
     });
     SkeinEngine.InitialState(512, 224, new ulong[]
     {
         14758403053642543652uL,
         14674518637417806319uL,
         10145881904771976036uL,
         4146387520469897396uL,
         1106145742801415120uL,
         7455425944880474941uL,
         11095680972475339753uL,
         11397762726744039159uL
     });
     SkeinEngine.InitialState(512, 384, new ulong[]
     {
         11814849197074935647uL,
         12753905853581818532uL,
         11346781217370868990uL,
         15535391162178797018uL,
         2000907093792408677uL,
         9140007292425499655uL,
         6093301768906360022uL,
         2769176472213098488uL
     });
     SkeinEngine.InitialState(512, 512, new ulong[]
     {
         5261240102383538638uL,
         978932832955457283uL,
         10363226125605772238uL,
         11107378794354519217uL,
         6752626034097301424uL,
         16915020251879818228uL,
         11029617608758768931uL,
         12544957130904423475uL
     });
 }