From b6d6766fef9b73db70bda8b6b398128ba5a41ab2 Mon Sep 17 00:00:00 2001 From: J08nY Date: Sat, 11 Aug 2018 21:52:48 +0200 Subject: Add various ECDSA tests. --- src/cz/crcs/ectester/data/EC_Store.java | 62 ++++-- src/cz/crcs/ectester/data/categories.xml | 2 +- src/cz/crcs/ectester/data/cofactor/keys.xml | 4 +- src/cz/crcs/ectester/data/composite/keys.xml | 4 +- src/cz/crcs/ectester/data/degenerate/keys.xml | 4 +- src/cz/crcs/ectester/data/invalid/keys.xml | 4 +- src/cz/crcs/ectester/data/schema.xsd | 29 ++- src/cz/crcs/ectester/data/test/keys.xml | 4 +- src/cz/crcs/ectester/data/test/results.xml | 84 +++---- src/cz/crcs/ectester/data/twist/keys.xml | 4 +- src/cz/crcs/ectester/data/wrong/keys.xml | 16 ++ src/cz/crcs/ectester/data/wrong/results.xml | 140 ++++++++++++ src/cz/crcs/ectester/data/wycheproof/keys.xml | 4 +- src/cz/crcs/ectester/data/wycheproof/results.xml | 272 +++++++++++------------ 14 files changed, 411 insertions(+), 222 deletions(-) create mode 100644 src/cz/crcs/ectester/data/wrong/keys.xml create mode 100644 src/cz/crcs/ectester/data/wrong/results.xml (limited to 'src/cz/crcs/ectester/data') diff --git a/src/cz/crcs/ectester/data/EC_Store.java b/src/cz/crcs/ectester/data/EC_Store.java index cb65402..3eaef27 100644 --- a/src/cz/crcs/ectester/data/EC_Store.java +++ b/src/cz/crcs/ectester/data/EC_Store.java @@ -203,27 +203,15 @@ public class EC_Store { if (direct instanceof Element) { Element elem = (Element) direct; - Node id = elem.getElementsByTagName("id").item(0); - Node ka = elem.getElementsByTagName("ka").item(0); - Node curve = elem.getElementsByTagName("curve").item(0); - Node onekey = elem.getElementsByTagName("onekey").item(0); - Node otherkey = elem.getElementsByTagName("otherkey").item(0); - - NodeList descc = elem.getElementsByTagName("desc"); - String descs = null; - if (descc.getLength() != 0) { - descs = descc.item(0).getTextContent(); + NodeList ids = elem.getElementsByTagName("id"); + if (ids.getLength() != 1) { + throw new SAXException("result no id?"); } + String id = ids.item(0).getTextContent(); - EC_KAResult kaResult = new EC_KAResult(id.getTextContent(), ka.getTextContent(), curve.getTextContent(), onekey.getTextContent(), otherkey.getTextContent(), descs); - - InputStream csv = parseDataElement(dir, elem); - if (!kaResult.readCSV(csv)) { - throw new IOException("Invalid csv data. " + id.getTextContent()); - } - csv.close(); + EC_Data result = parseResultlike(dir, elem); - objMap.put(id.getTextContent(), kaResult); + objMap.put(id, result); } else { throw new SAXException("?"); } @@ -234,6 +222,44 @@ public class EC_Store { return new EC_Category(name, dir, desc, objMap); } + private EC_Data parseResultlike(String dir, Element elem) throws SAXException, IOException { + String tag = elem.getTagName(); + Node id = elem.getElementsByTagName("id").item(0); + + NodeList descc = elem.getElementsByTagName("desc"); + String descs = null; + if (descc.getLength() != 0) { + descs = descc.item(0).getTextContent(); + } + + Node curve = elem.getElementsByTagName("curve").item(0); + + EC_Data result; + if (tag.equals("kaResult")) { + Node ka = elem.getElementsByTagName("ka").item(0); + Node onekey = elem.getElementsByTagName("onekey").item(0); + Node otherkey = elem.getElementsByTagName("otherkey").item(0); + + result = new EC_KAResult(id.getTextContent(), ka.getTextContent(), curve.getTextContent(), onekey.getTextContent(), otherkey.getTextContent(), descs); + } else if (tag.equals("sigResult")) { + Node sig = elem.getElementsByTagName("sig").item(0); + Node signkey = elem.getElementsByTagName("signkey").item(0); + Node verifykey = elem.getElementsByTagName("verifykey").item(0); + + result = new EC_SigResult(id.getTextContent(), sig.getTextContent(), curve.getTextContent(), signkey.getTextContent(), verifykey.getTextContent()); + } else { + throw new SAXException("?"); + } + + InputStream csv = parseDataElement(dir, elem); + if (!result.readCSV(csv)) { + throw new IOException("Invalid csv data. " + id.getTextContent()); + } + csv.close(); + + return result; + } + private EC_Params parseKeylike(String dir, Element elem) throws SAXException, IOException { Node id = elem.getElementsByTagName("id").item(0); Node curve = elem.getElementsByTagName("curve").item(0); diff --git a/src/cz/crcs/ectester/data/categories.xml b/src/cz/crcs/ectester/data/categories.xml index 38ce683..082f92c 100644 --- a/src/cz/crcs/ectester/data/categories.xml +++ b/src/cz/crcs/ectester/data/categories.xml @@ -77,7 +77,7 @@ wrong wrong - Wrong field curves. These should definitely give an error when used. Since the "prime" used for the field is not prime, and the field polynomials are also not irreducible. Simply put these parameters don't specify a valid elliptic curve. + Wrong field curves and other wrong parameters. These should definitely give an error when used. Since the "prime" used for the field is not prime, and the field polynomials are also not irreducible. Simply put these parameters don't specify a valid elliptic curve. test diff --git a/src/cz/crcs/ectester/data/cofactor/keys.xml b/src/cz/crcs/ectester/data/cofactor/keys.xml index 8cf19a1..b4c0c90 100644 --- a/src/cz/crcs/ectester/data/cofactor/keys.xml +++ b/src/cz/crcs/ectester/data/cofactor/keys.xml @@ -3,9 +3,7 @@ ]> + xsi:noNamespaceSchemaLocation="../schema.xsd"> cofactor128p2/0 diff --git a/src/cz/crcs/ectester/data/composite/keys.xml b/src/cz/crcs/ectester/data/composite/keys.xml index 8a98135..da770d8 100644 --- a/src/cz/crcs/ectester/data/composite/keys.xml +++ b/src/cz/crcs/ectester/data/composite/keys.xml @@ -1,8 +1,6 @@ + xsi:noNamespaceSchemaLocation="../schema.xsd"> composite128/1 0x746fa441b3a54d3c531bd59d119f400d,0x73aff68dbd96e1485cd2de0f6389cc70 diff --git a/src/cz/crcs/ectester/data/degenerate/keys.xml b/src/cz/crcs/ectester/data/degenerate/keys.xml index cbeecce..b999ca0 100644 --- a/src/cz/crcs/ectester/data/degenerate/keys.xml +++ b/src/cz/crcs/ectester/data/degenerate/keys.xml @@ -4,9 +4,7 @@ ]> + xsi:noNamespaceSchemaLocation="../schema.xsd">