final boolean verifyTokenSignature(UserToken t) {
        try {
            
            // get the issuer of this token
            Token token = (Token) t;
            String issuer = t.getIssuer();
            String fileServer = token.getFileServer();
            // see if the issuer is recognized
            // if not, try to re-load keys:
            if(!groupServerKeys.containsKey(issuer)) {
                loadGroupServerkeys();
            }

            PublicKey publicKey = groupServerKeys.get(issuer);

            // check if this issuer is on record:
            if(publicKey != null) {
                signature.initVerify(publicKey);
                signature.update(digest(token.getBytes()));
                return signature.verify(token.getSignature());
            } else {
                return false;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }