package net.i2p.crypto.eddsa;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public class Ed25519TestVectors {
    public static class TestTuple {
        public static int numCases;
        public int caseNum;
        public byte[] seed;
        public byte[] pk;
        public byte[] message;
        public byte[] sig;

        public TestTuple(String line) {
            caseNum = ++numCases;
            String[] x = line.split(":");
            seed = Utils.hexToBytes(x[0].substring(0, 64));
            pk = Utils.hexToBytes(x[1]);
            message = Utils.hexToBytes(x[2]);
            sig = Utils.hexToBytes(x[3].substring(0, 128));
        }
    }

    public static Collection<TestTuple> testCases = getTestData("test.data");

    public static Collection<TestTuple> getTestData(String fileName) {
        List<TestTuple> testCases = new ArrayList<TestTuple>();
        BufferedReader file = null;
        try {
            InputStream is = Ed25519TestVectors.class.getResourceAsStream(fileName);
            if (is == null)
                throw new IOException("Resource not found: " + fileName);
            file = new BufferedReader(new InputStreamReader(is));
            String line;
            while ((line = file.readLine()) != null) {
                testCases.add(new TestTuple(line));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (file != null) try { file.close(); } catch (IOException e) {}
        }
        return testCases;
    }
}
