boolean checkKATVectors() { KatResult kr = new KatResult(); ParametersForSkein pfs; while (scanner.fillResult(kr)) { // Skip Tree vectors in this test function if (kr.restOfLine.contains("Tree")) { notProcessed++; continue; } if (kr.restOfLine.contains("MAC")) { pfs = new ParametersForSkein(new KeyParameter(kr.macKey), kr.stateSize, kr.hashBitLength); SkeinMac sm = new SkeinMac(); sm.init(pfs); sm.updateBits(kr.msg, 0, kr.msgLength); byte[] mac = new byte[sm.getMacSize()]; sm.doFinal(mac, 0); if (!Arrays.equals(mac, kr.result)) { System.out.println( kr.stateSize + "-" + kr.hashBitLength + "-" + kr.msgLength + "-" + kr.restOfLine); hexdump("Computed mac", mac, mac.length); hexdump("Expected result", kr.result, kr.result.length); return false; } processed++; continue; } Skein skein = new Skein(kr.stateSize, kr.hashBitLength); skein.updateBits(kr.msg, 0, kr.msgLength); byte[] hash = skein.doFinal(); if (!Arrays.equals(hash, kr.result)) { System.out.println( kr.stateSize + "-" + kr.hashBitLength + "-" + kr.msgLength + "-" + kr.restOfLine); hexdump("Computed hash", hash, hash.length); hexdump("Expected result", kr.result, kr.result.length); return false; } // Enable the next few line so you can check some results manually // if ((kr.msgLength & 1) == 1) { // System.out.println(kr.stateSize + "-" + kr.hashBitLength + "-" // + kr.msgLength + "-" + kr.restOfLine); // hexdump("Computed hash", hash, hash.length); // hexdump("Expected result", kr.result, kr.result.length); // } processed++; } return true; }