Skip to content
This repository has been archived by the owner on Dec 29, 2022. It is now read-only.

Commit

Permalink
Gives labels to options so they are more readable in code
Browse files Browse the repository at this point in the history
  • Loading branch information
devinlundberg committed Aug 16, 2013
1 parent 142ee49 commit edeb720
Show file tree
Hide file tree
Showing 14 changed files with 197 additions and 175 deletions.
6 changes: 3 additions & 3 deletions interop/config/ignoredTests.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
},
"java" : {
"attached" : {
"*" : [
["encoded"]
]
"*" : {
"encoding" : ["encoded"]
}
},
"*" : {
"aes256" : "*",
Expand Down
2 changes: 1 addition & 1 deletion interop/config/implementations.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"python" : ["../python/tests/keyczar_tests/interop_test.py"],
"java" : ["java", "-cp", "../java/code/tests/:../java/code/target/classes:../../.m2/repository/com/google/code/gson/gson/1.7.1/gson-1.7.1.jar:../../.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar", "org.keyczar.interop.Interop"]
"java" : ["java", "-cp", "../java/code/target/*", "org.keyczar.interop.Interop"]
}
54 changes: 27 additions & 27 deletions interop/config/operations.json
Original file line number Diff line number Diff line change
@@ -1,44 +1,44 @@
{
"unversioned" : {
"keytype" : "sign",
"generateOptions" : [
["encoded", "unencoded"]
],
"testOptions" : [
["verifier", "signer"]
]
"generateOptions" : {
"encoding" : ["encoded", "unencoded"]
},
"testOptions" : {
"class" : ["verifier", "signer"]
}
},
"signedSession" : {
"keytype" : "crypt",
"generateOptions" : [
["rsa-sign1024", "rsa-sign2048", "rsa-sign4096", "dsa1024", "hmac256"]
],
"testOptions" : []
"generateOptions" : {
"signer" : ["rsa-sign1024", "rsa-sign2048", "rsa-sign4096", "dsa1024", "hmac256"]
},
"testOptions" : {}
},
"attached" : {
"keytype" : "sign",
"generateOptions" : [
["encoded", "unencoded"]
],
"testOptions" : [
["verifier", "signer"]
]
"generateOptions" : {
"encoding" : ["encoded", "unencoded"]
},
"testOptions" : {
"class" : ["verifier", "signer"]
}
},
"sign" : {
"keytype" : "sign",
"generateOptions" : [
["encoded", "unencoded"]
],
"testOptions" : [
["verifier", "signer"]
]
"generateOptions" : {
"encoding" : ["encoded", "unencoded"]
},
"testOptions" : {
"class" : ["verifier", "signer"]
}
},
"encrypt" : {
"keytype" : "crypt",
"generateOptions" : [
["encoded", "unencoded"],
["crypter", "encrypter"]
],
"testOptions" : []
"generateOptions" : {
"encoding" : ["encoded", "unencoded"],
"class" : ["crypter", "encrypter"]
},
"testOptions" : {}
}
}
59 changes: 36 additions & 23 deletions interop/interop.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,8 @@ def _AddIgnoredTest(self, implementation, operation, algorithm, options):
if algorithm not in self.ignored_tests[implementation][operation]:
self.ignored_tests[implementation][operation][algorithm] = []
if options == "*":
all_options = self.operations[operation]["generateOptions"]
options = itertools.product(*all_options)
self.ignored_tests[implementation][operation][algorithm] = []
for option in options:
self.ignored_tests[implementation][operation][algorithm].append(option)
options = self.operations[operation]["generateOptions"]
self.ignored_tests[implementation][operation][algorithm] = options

def GetKeysByPurpose(self, purpose=""):
""" Gets names for all algorithms or ones with the given purpose. """
Expand All @@ -126,35 +123,51 @@ def _IsException(self, implementation, operation, algorithm, options):
if (implementation in self.ignored_tests and
operation in self.ignored_tests[implementation] and
algorithm in self.ignored_tests[implementation][operation]):
exceptions = [tuple(test) for test in
self.ignored_tests
[implementation][operation][algorithm]]
if tuple(options) in set(exceptions):
print "Ignoring %s with %s for %s with options %s" % (
operation, algorithm, implementation, ", ".join(options))
return True
ignored_ops = self.ignored_tests[implementation][operation][algorithm]
for option_name in options:
if options[option_name] not in ignored_ops[option_name]:
return False
print "Ignoring %s with %s for %s with options %s" % (
operation, algorithm, implementation, ", ".join(options.values()))
return True
return False

def TestAll(self, operation, algorithm, generate_options):
""" Generates all possible configurations for the Test function. """
for implementation in self.implementations:
all_options = self.operations[operation]["testOptions"]
for options in itertools.product(*all_options):
option_dict = self.operations[operation]["testOptions"]
if not option_dict:
if not self._IsException(
implementation, operation, algorithm, generate_options):
yield (implementation, options)
implementation, operation, algorithm, {}):
yield (implementation, {})
else:
names, all_options = zip(*option_dict.items())
for options in itertools.product(*all_options):
options_with_names = dict(
[(name, option) for name, option in zip(names, options)])
if not self._IsException(
implementation, operation, algorithm, generate_options):
yield (implementation, options_with_names)

def GenerateAll(self):
""" Generates all possible configurations for the Generate function. """
for implementation in self.implementations:
for operation in self.operations:
purpose = self.operations[operation]["keytype"]
for algorithm in self.GetKeysByPurpose(purpose):
all_options = self.operations[operation]["generateOptions"]
for options in itertools.product(*all_options):
option_dict = self.operations[operation]["generateOptions"]
if not option_dict:
if not self._IsException(
implementation, operation, algorithm, options):
yield (implementation, operation, algorithm, options)
implementation, operation, algorithm, {}):
yield (implementation, operation, algorithm, {})
else:
names, all_options = zip(*option_dict.items())
for options in itertools.product(*all_options):
chosen_options = dict(
[(name, option) for name, option in zip(names, options)])
if not self._IsException(
implementation, operation, algorithm, chosen_options):
yield (implementation, operation, algorithm, chosen_options)

def _MakeDirs(self, location):
""" Makes directories, will empty the leaf if it exists """
Expand Down Expand Up @@ -280,8 +293,8 @@ def SetupInteropTests(self):
generate_implementation,
operation,
algorithm,
"_".join(generate_options),
"_".join(test_options),
"_".join(generate_options.values()),
"_".join(test_options.values()),
)

test = self.InteropTestGenerator(
Expand Down Expand Up @@ -309,6 +322,6 @@ def Suite():

if __name__ == "__main__":
runner = InteropTestRunner()
runner.CreateKeys()
#runner.CreateKeys()
runner.SetupInteropTests()
unittest.main(defaultTest="Suite")
5 changes: 3 additions & 2 deletions java/code/src/org/keyczar/interop/Generator.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import org.keyczar.exceptions.KeyczarException;
import org.keyczar.interop.operations.Operation;

import java.util.Map;
import java.util.Set;

/**
Expand All @@ -14,12 +15,12 @@ public class Generator {
private final String operation;
private final String keyPath;
private final String algorithm;
private final Set<String> generateOptions;
private final Map<String, String> generateOptions;
private final String testData;

private Generator(
String command, String operation, String keyPath,
String algorithm, Set<String> generateOptions, String testData) {
String algorithm, Map<String, String> generateOptions, String testData) {
this.command = command;
this.operation = operation;
this.keyPath = keyPath;
Expand Down
3 changes: 3 additions & 0 deletions java/code/src/org/keyczar/interop/Interop.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.varia.NullAppender;
import org.keyczar.exceptions.KeyczarException;

/**
Expand All @@ -16,6 +18,7 @@ public class Interop {
* @param args
*/
public static void main(String[] args) {
BasicConfigurator.configure(new NullAppender());
Gson gson = new Gson();
switch (getCommandType(args[0])) {
case GENERATE:
Expand Down
7 changes: 4 additions & 3 deletions java/code/src/org/keyczar/interop/Tester.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import org.keyczar.exceptions.KeyczarException;
import org.keyczar.interop.operations.Operation;

import java.util.Map;
import java.util.Set;

/**
Expand All @@ -14,14 +15,14 @@ public class Tester {
private final String operation;
private final String keyPath;
private final String algorithm;
private final Set<String> generateOptions;
private final Set<String> testOptions;
private final Map<String, String> generateOptions;
private final Map<String, String> testOptions;
private final String output;
private final String testData;

public Tester(
String command, String operation, String keyPath, String algorithm,
Set<String> generateOptions, Set<String> testOptions, String output, String testData) {
Map<String, String> generateOptions, Map<String, String> testOptions, String output, String testData) {
this.command = command;
this.operation = operation;
this.keyPath = keyPath;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.keyczar.Verifier;
import org.keyczar.exceptions.KeyczarException;

import java.util.Map;
import java.util.Set;

/**
Expand All @@ -16,13 +17,13 @@ public AttachedSignOperation(String keyPath, String testData) {
}

@Override
public byte[] generate(String algorithm, Set<String> generateParams) throws KeyczarException{
public byte[] generate(String algorithm, Map<String, String> generateParams) throws KeyczarException {
Signer signer = new Signer(getKeyPath(algorithm));
if (generateParams.contains("encoded")) {
if (generateParams.get("encoding").equals("encoded")) {
// String signature = signer.attachedSign(testData, "".getBytes());
// Not implemented
return "".getBytes();
} else if (generateParams.contains("unencoded")) {
} else if (generateParams.get("encoding").equals("unencoded")) {
byte[] signature = signer.attachedSign(testData.getBytes(), "".getBytes());
return signature;
} else {
Expand All @@ -32,22 +33,23 @@ public byte[] generate(String algorithm, Set<String> generateParams) throws Keyc

@Override
public void test(
byte[] output, String algorithm, Set<String> generateParams, Set<String> testParams)
byte[] output, String algorithm,
Map<String, String> generateParams, Map<String, String> testParams)
throws KeyczarException {
if (testParams.contains("signer")) {
if (testParams.get("class").equals("signer")) {
Signer verifier = new Signer(getKeyPath(algorithm));
if (generateParams.contains("encoded")) {
if (generateParams.get("encoding").equals("encoded")) {
throw new KeyczarException("Not Implemented");
} else if (generateParams.contains("unencoded")) {
} else if (generateParams.get("encoding").equals("unencoded")) {
assert(verifier.verify(testData.getBytes(), output));
} else {
throw new KeyczarException("Expects encoded or unencoded in parameters");
}
} else if (testParams.contains("verifier")) {
} else if (testParams.get("class").equals("verifier")) {
Verifier verifier = new Verifier(getKeyPath(algorithm));
if (generateParams.contains("encoded")) {
if (generateParams.get("encoding").equals("encoded")) {
throw new KeyczarException("Not Implemented");
} else if (generateParams.contains("unencoded")) {
} else if (generateParams.get("encoding").equals("unencoded")) {
assert(verifier.attachedVerify(testData.getBytes(), output));
} else {
throw new KeyczarException("Expects encoded or unencoded in parameters");
Expand Down
21 changes: 11 additions & 10 deletions java/code/src/org/keyczar/interop/operations/EncryptOperation.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.keyczar.Encrypter;
import org.keyczar.exceptions.KeyczarException;

import java.util.Map;
import java.util.Set;

/**
Expand All @@ -16,24 +17,24 @@ public EncryptOperation(String keyPath, String testData) {
}

@Override
public byte[] generate(String algorithm, Set<String> generateParams) throws KeyczarException {
if (generateParams.contains("crypter")) {
public byte[] generate(String algorithm, Map<String, String> generateParams) throws KeyczarException {
if (generateParams.get("class").equals("crypter")) {
Crypter crypter = new Crypter(getKeyPath(algorithm));
if (generateParams.contains("encoded")) {
if (generateParams.get("encoding").equals("encoded")) {
String ciphertext = crypter.encrypt(testData);
return ciphertext.getBytes();
} else if (generateParams.contains("unencoded")) {
} else if (generateParams.get("encoding").equals("unencoded")) {
byte[] ciphertext = crypter.encrypt(testData.getBytes());
return ciphertext;
} else {
throw new KeyczarException("Expects encoded or unencoded in parameters");
}
} else if (generateParams.contains("encrypter")) {
} else if (generateParams.get("class").equals("encrypter")) {
Encrypter crypter = new Encrypter(getKeyPath(algorithm));
if (generateParams.contains("encoded")) {
if (generateParams.get("encoding").equals("encoded")) {
String ciphertext = crypter.encrypt(testData);
return ciphertext.getBytes();
} else if (generateParams.contains("unencoded")) {
} else if (generateParams.get("encoding").equals("unencoded")) {
byte[] ciphertext = crypter.encrypt(testData.getBytes());
return ciphertext;
} else {
Expand All @@ -46,13 +47,13 @@ public byte[] generate(String algorithm, Set<String> generateParams) throws Keyc

@Override
public void test(
byte[] output, String algorithm, Set<String> generateParams, Set<String> testParams)
byte[] output, String algorithm, Map<String, String> generateParams, Map<String, String> testParams)
throws KeyczarException {
Crypter crypter = new Crypter(getKeyPath(algorithm));
if (generateParams.contains("encoded")) {
if (generateParams.get("encoding").equals("encoded")) {
String plaintext = crypter.decrypt(new String(output));
assert(plaintext.equals(testData));
} else if (generateParams.contains("unencoded")) {
} else if (generateParams.get("encoding").equals("unencoded")) {
byte[] plaintext = crypter.decrypt(output);
assert((new String(plaintext)).equals(testData));
} else {
Expand Down
7 changes: 4 additions & 3 deletions java/code/src/org/keyczar/interop/operations/Operation.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import org.keyczar.util.Base64Coder;

import java.io.File;
import java.util.Set;
import java.util.Map;

/**
* Base class for all operations. An operation is a basic
Expand Down Expand Up @@ -75,7 +75,7 @@ protected Operation(String keyPath, String testData) {
*
* @raise NotImplementedError: If the child class does not implement
*/
public abstract byte[] generate(String algorithm, Set<String> generateParams)
public abstract byte[] generate(String algorithm, Map<String, String> generateParams)
throws KeyczarException;

/**
Expand All @@ -100,7 +100,8 @@ public abstract byte[] generate(String algorithm, Set<String> generateParams)
* @param algorithm
*/
public abstract void test(
byte[] output, String algorithm, Set<String> generateParams, Set<String> testParams)
byte[] output, String algorithm,
Map<String, String> generateParams, Map<String, String> testParams)
throws KeyczarException;

/**
Expand Down
Loading

0 comments on commit edeb720

Please sign in to comment.