m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl/edu/mimuw/cloudatlas/querysigner
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/querysigner')
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/querysigner/QuerySignerApiImplementation.java32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/querysigner/QuerySignerApiImplementation.java b/src/main/java/pl/edu/mimuw/cloudatlas/querysigner/QuerySignerApiImplementation.java
index 3acaacf..3ab2931 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/querysigner/QuerySignerApiImplementation.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/querysigner/QuerySignerApiImplementation.java
@@ -75,16 +75,19 @@ public class QuerySignerApiImplementation implements QuerySignerApi {
return digest;
}
- private static byte[] serializeQuery(String queryName, String queryCode) {
+ private static byte[] serializeQuery(String queryName, String queryCode, Boolean install) {
ByteSerializer byteSerializer = new ByteSerializer();
- return byteSerializer.serialize(queryName + queryCode);
+ if (install) {
+ return byteSerializer.serialize(queryName + queryCode + install.toString());
+ } else {
+ return byteSerializer.serialize(queryName + install.toString());
+ }
}
- @Override
- public QueryData signInstallQuery(String queryName, String queryCode) throws RemoteException {
+ private QueryData signQuery(String queryName, String queryCode, Boolean install) throws RemoteException {
QueryUtils.validateQueryName(queryName);
try {
- byte[] serializedQuery = serializeQuery(queryName, queryCode);
+ byte[] serializedQuery = serializeQuery(queryName, queryCode, install);
byte[] hashedQuery = cryptographicHash(serializedQuery);
byte[] querySignature = encryptQuery(hashedQuery);
return new QueryData(queryCode, querySignature);
@@ -94,10 +97,19 @@ public class QuerySignerApiImplementation implements QuerySignerApi {
}
}
+ @Override
+ public QueryData signInstallQuery(String queryName, String queryCode) throws RemoteException {
+ return signQuery(queryName, queryCode, true);
+ }
+
public static void validateInstallQuery(String queryName, QueryData query, PublicKey publicKey) throws RemoteException,IllegalBlockSizeException, InvalidKeyException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException, QuerySigner.InvalidQueryException {
+ validateQuery(queryName, query, publicKey, true);
+ }
+
+ public static void validateQuery(String queryName, QueryData query, PublicKey publicKey, boolean install) throws RemoteException,IllegalBlockSizeException, InvalidKeyException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException, QuerySigner.InvalidQueryException {
QueryUtils.validateQueryName(queryName);
byte[] decryptedQuery = decryptQuery(query.getSignature(), publicKey);
- byte[] serializedQuery = serializeQuery(queryName, query.getCode());
+ byte[] serializedQuery = serializeQuery(queryName, query.getCode(), install);
byte[] hashedSerializedQuery = cryptographicHash(serializedQuery);
String decryptedQueryString = byteArrayToString(decryptedQuery, 0, decryptedQuery.length);
String hashedSerializedQueryString = byteArrayToString(hashedSerializedQuery, 0, hashedSerializedQuery.length);
@@ -106,14 +118,12 @@ public class QuerySignerApiImplementation implements QuerySignerApi {
}
}
- // TODO
@Override
public QueryData signUninstallQuery(String queryName) throws RemoteException {
- return null;
+ return signQuery(queryName, "", false);
}
- // TODO
- public static void validateUninstallQuery(String queryName, QueryData query, PublicKey publicKey) throws RemoteException {
-
+ public static void validateUninstallQuery(String queryName, QueryData query, PublicKey publicKey) throws RemoteException, NoSuchAlgorithmException, IllegalBlockSizeException, BadPaddingException, QuerySigner.InvalidQueryException, NoSuchPaddingException, InvalidKeyException {
+ validateQuery(queryName, query, publicKey, false);
}
}