byte[] publicHash = auth.getPublicKey().toByteArray();
List<byte[]> byteSig = Util.splitBytes(auth.getSig().toByteArray());
byte[] dsaR = byteSig.get(0);
byte[] dsaS = byteSig.get(1);
Nonce nonce = new Nonce(auth.getNonce().toByteArray());
String serverName = auth.getServerName();
try {
byte[] publicKey = database.getPublicKey(publicHash);
DSASignature sig =
new DSASignature(dsaR, dsaS, Util.joinBytes(toBytes(serverName), nonce.nt(), nonce.nr(), toBytes(command), Util.joinBytes(payload)));
try {
DSAVerify v = new DSAVerify(publicKey);
if (v.verify(sig)) {
boolean validNonce = database.checkAndAddNonce(nonce, publicHash);