         self.secondsToExpire = secondsToExpire
       }
 
-    /// Gets token signature key
-    ///
-    /// - Returns: signature key
-    public func getTokenSignatureKey() -> Bytes {
+    /// The Bytes representation of the signatureKey
+    var signatureKeyBytes : Bytes {
         return Array(self.signatureKey.utf8)
-
-    }
-
-    /// Gets token public key
-    ///
-    /// - Returns: public key
-    /// - Throws: if cannot retrieve signature key
-    public func getTokenPublicKey() throws -> Bytes {
-        return Array(self.publicKey!.utf8)
-
+    }
+
+    /// The Bytes representation of the publicKey (may be nil)
+    var publicKeyBytes: Bytes? {
+      if let publicKey = publicKey {
+         return Array(publicKey.utf8)
+      } else {
+         return nil
+      }
     }
 
     /// Generates the expiration date based on the

            // Validate our current access token
            let receivedJWT = try JWT(token: token)

            var key: Bytes = self.getTokenSignatureKey()

            if self.publicKey != nil {

                key = try self.getTokenPublicKey()
            }

            // Verify signature


    }

    private func getSigner(key: Bytes) -> Signer {

        switch self.signer {

