// Skein-512-512 self test. // Author: Thomas Mueller, 2008-2010. // Public domain. package skein object Test extends Application { val lines = scala.io.Source.fromFile("src/testVectors.txt").getLines while (lines.hasNext) { var line = lines.next if (line.startsWith("Len")) { val len = Integer.parseInt(line.split("=")(1).trim) val msg = toBytes(lines.next.split("=")(1).trim) val digest = toBytes(lines.next.split("=")(1).trim) test(msg, len, digest) } } def test(msg: Array[Byte], bitCount: Int, expected: Array[Byte]) = { val result = new Array[Byte](expected.length) if (msg.length == bitCount / 8) { Skein512.hash(msg, result) if (!java.util.Arrays.equals(expected, result)) { throw new AssertionError("bitCount=" + bitCount); } } } def toBytes(s: String): Array[byte] = { var len = s.length() if (len % 2 != 0) { throw new IllegalArgumentException(s) } len /= 2 val buff = new Array[Byte](len) for (i <- 0 until len) { buff(i) = Integer.parseInt(s.substring(i + i, i + i + 2), 16).toByte } return buff; } }