Index: remoting/webapp/base/js/base.js |
diff --git a/remoting/webapp/base/js/base.js b/remoting/webapp/base/js/base.js |
index ee909bede327c38f7cac29fcca6f379d5c7ea42e..c337a7bd2019fd92f53beefd06222b5b2230f24c 100644 |
--- a/remoting/webapp/base/js/base.js |
+++ b/remoting/webapp/base/js/base.js |
@@ -422,3 +422,26 @@ base.decodeUtf8 = function(buffer) { |
return decodeURIComponent( |
escape(String.fromCharCode.apply(null, new Uint8Array(buffer)))); |
} |
+ |
+/** |
+ * Generate a nonce, to be used as an xsrf protection token. |
+ * |
+ * @return {string} A URL-Safe Base64-encoded 128-bit random value. */ |
+base.generateXsrfToken = function() { |
+ var random = new Uint8Array(16); |
+ window.crypto.getRandomValues(random); |
+ var base64Token = window.btoa(String.fromCharCode.apply(null, random)); |
+ return base64Token.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); |
+}; |
+ |
+/** |
+ * @param {string} jsonString A JSON-encoded string. |
+ * @return {*} The decoded object, or undefined if the string cannot be parsed. |
+ */ |
+base.jsonParseSafe = function(jsonString) { |
+ try { |
+ return JSON.parse(jsonString); |
+ } catch (err) { |
+ return undefined; |
+ } |
+} |