public String toString() {
		StringBuilder sb = new StringBuilder(HawkContext.SCHEME);
		char delim = BLANK;
		if (id != null) {
			sb.append(delim).append("id=\"").append(id).append(ESCDQUOTE);
			delim = COMMA;
		}
		if (mac != null) {
			sb.append(delim).append("mac=\"").append(mac).append(ESCDQUOTE);
			delim = COMMA;
		}
		if (hash != null) {
			sb.append(delim).append("hash=\"").append(hash).append(ESCDQUOTE);
			delim = COMMA;
		}
		if (ts != 0) {
			sb.append(delim).append("ts=\"").append(ts).append(ESCDQUOTE);
			delim = COMMA;
		}
		if (nonce != null) {
			sb.append(delim).append("nonce=\"").append(nonce).append(ESCDQUOTE);
			delim = COMMA;
		}
		if (ext != null) {
			// Regarding escaping see https://github.com/algermissen/hawkj/issues/1
			String escaped = ext.replace(ESCDQUOTE, "\\\"");
			sb.append(delim).append("ext=\"").append(escaped).append(ESCDQUOTE);
			delim = COMMA;
		}
        if (app != null) {
            sb.append(delim).append("app=\"").append(app).append(ESCDQUOTE);
            delim = COMMA;
        }
        if (dlg != null) {
            sb.append(delim).append("dlg=\"").append(dlg).append(ESCDQUOTE);
        }
		return sb.toString();
	}