Search in sources :

Example 1 with ParametersForSkein

use of org.bouncycastle.crypto.params.ParametersForSkein in project Skein3Fish by wernerd.

the class SkeinMac method init.

public void init(CipherParameters params) throws IllegalArgumentException {
    ParametersForSkein p = (ParametersForSkein) params;
    KeyParameter kp = (KeyParameter) (p.getParameters());
    skein = new Skein(p.getStateSize(), p.getMacSize(), 0, kp.getKey());
    Xsave = skein.getState();
}
Also used : Skein(org.bouncycastle.crypto.digests.Skein) ParametersForSkein(org.bouncycastle.crypto.params.ParametersForSkein) KeyParameter(org.bouncycastle.crypto.params.KeyParameter) ParametersForSkein(org.bouncycastle.crypto.params.ParametersForSkein)

Example 2 with ParametersForSkein

use of org.bouncycastle.crypto.params.ParametersForSkein in project Skein3Fish by wernerd.

the class SkeinTest method checkKATVectors.

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;
}
Also used : ParametersForSkein(org.bouncycastle.crypto.params.ParametersForSkein) KeyParameter(org.bouncycastle.crypto.params.KeyParameter) ParametersForSkein(org.bouncycastle.crypto.params.ParametersForSkein) SkeinMac(org.bouncycastle.crypto.macs.SkeinMac)

Aggregations

KeyParameter (org.bouncycastle.crypto.params.KeyParameter)2 ParametersForSkein (org.bouncycastle.crypto.params.ParametersForSkein)2 Skein (org.bouncycastle.crypto.digests.Skein)1 SkeinMac (org.bouncycastle.crypto.macs.SkeinMac)1