private void KdfFeedbackNoCounterTest() { string file = "KDFFeedbackNoCounter_gen.rsp"; ArrayList vectors = CavpReader.ReadVectorFile(file); foreach (Vector vector in vectors) { IMac prf = CavpReader.CreatePrf(vector); KdfFeedbackBytesGenerator gen = new KdfFeedbackBytesGenerator(prf); int count = vector.ValueAsInt("COUNT"); int l = vector.ValueAsInt("L"); byte[] ki = vector.ValueAsBytes("KI"); byte[] iv = vector.ValueAsBytes("IV"); byte[] fixedInputData = vector.ValueAsBytes("FixedInputData"); KdfFeedbackParameters param = KdfFeedbackParameters.CreateWithoutCounter(ki, iv, fixedInputData); gen.Init(param); byte[] koGenerated = new byte[l / 8]; gen.GenerateBytes(koGenerated, 0, koGenerated.Length); byte[] koVectors = vector.ValueAsBytes("KO"); CompareKO(file, vector, count, koGenerated, koVectors); } }
public void Init(IDerivationParameters parameters) { KdfFeedbackParameters feedbackParams = parameters as KdfFeedbackParameters; if (feedbackParams == null) { throw new ArgumentException("Wrong type of arguments given"); } // --- init mac based PRF --- this.prf.Init(new KeyParameter(feedbackParams.Ki)); // --- set arguments --- this.fixedInputData = feedbackParams.FixedInputData; int r = feedbackParams.R; this.ios = new byte[r / 8]; if (feedbackParams.UseCounter) { // this is more conservative than the spec BigInteger maxSize = Two.Pow(r).Multiply(BigInteger.ValueOf(h)); this.maxSizeExcl = maxSize.CompareTo(IntegerMax) == 1 ? Int32.MaxValue : maxSize.IntValue; } else { this.maxSizeExcl = Int32.MaxValue; } this.iv = feedbackParams.Iv; this.useCounter = feedbackParams.UseCounter; // --- set operational state --- generatedBytes = 0; }
private void KdfFeedbackCounterTest() { string file = "KDFFeedbackCounter_gen.rsp"; ArrayList vectors = CavpReader.ReadVectorFile(file); foreach (Vector vector in vectors) { if (vector.HeaderAsString("CTRLOCATION") != "AFTER_ITER") { continue; } IMac prf = CavpReader.CreatePrf(vector); KdfFeedbackBytesGenerator gen = new KdfFeedbackBytesGenerator(prf); int r = -1; { string rlen = vector.HeaderAsString("RLEN"); if (rlen == null) { Fail("No RLEN"); } r = Int32.Parse(rlen.Split('_')[0]); } int count = vector.ValueAsInt("COUNT"); int l = vector.ValueAsInt("L"); byte[] ki = vector.ValueAsBytes("KI"); byte[] iv = vector.ValueAsBytes("IV"); byte[] fixedInputData = vector.ValueAsBytes("FixedInputData"); KdfFeedbackParameters param = KdfFeedbackParameters.CreateWithCounter(ki, iv, fixedInputData, r); gen.Init(param); byte[] koGenerated = new byte[l / 8]; gen.GenerateBytes(koGenerated, 0, koGenerated.Length); byte[] koVectors = vector.ValueAsBytes("KO"); CompareKO(file, vector, count, koGenerated, koVectors); } }