1 console.log('Loading navigator.gss.js - #7');
3 /* This file gets injected into the web page verbatim */
7 var GSSEap = (function ()
9 function GSSEap(config)
12 this.version = "0.0.1";
15 this.appTag = config.appTag || "";
16 this.error = config.error || function (major, minor, error, appTag) {
19 window.addEventListener("message", this.dispatch_responses.bind(this));
21 GSSEap.prototype.dispatch_responses = function (event)
28 /* This message is destined for us only if all the following apply:
29 * - The data.method_name is one of the methods implemented by this
31 * - data.return_values exists
32 * - data.cookies exists
33 * - One of my callbacks matches the nonce in data.cookies.navigator_gss_tag
34 * - One of my methods matches the nonce in data.cookies.navigator_gss_tag
35 * and that method matches data.method
37 method = event.data.method;
39 (method != "gss_import_name") ||
40 ("undefined" == typeof (event.data.return_values)) ||
41 ("undefined" == typeof (event.data.cookies)))
46 nonce = event.data.cookies.navigator_gss_tag;
47 event.data.cookies.navigator_gss_tag = undefined;
48 callback = this.callbacks[nonce];
49 if ("undefined" == typeof (callback) || this.methods[nonce] != method) {
53 // We now know that this message is for us!
54 this.callbacks[nonce] = undefined;
55 app_tag = event.data.cookies.app_tag;
57 if (this.gss_error(event.data.return_values.major_status))
59 var errMsg = "Error during " + method + ": " +
60 "Major status message: " +
61 event.data.return_values.errors.major_status_message +
62 "; Minor status message: " +
63 event.data.return_values.errors.minor_status_message;
65 event.data.return_values.major_status,
66 event.data.return_values.minor_status,
70 if ("gss_import_name" == method)
71 { callback(event.data.return_values, app_tag); }
72 // if( "gss_X" == method ) { callback(event.data.return_values.x, app_tag);}
76 GSSEap.prototype.import_name = function (params)
80 var name = params.name;
81 var name_type = params.name_type || "{1 2 840 113554 1 2 1 4 }";
82 var callback = params.success;
83 var error = params.error || this.error;
84 var app_tag = params.app_tag || this.appTag;
87 // Call an error if we don't have the required parameters.
90 if ( "undefined" == typeof(name) ||
91 "undefined" == typeof(callback) )
94 "import_name called missing either name or success callback"
99 nonce = navigator.generateNonce();
100 this.callbacks[nonce] = callback;
101 this.methods[nonce] = "gss_import_name";
103 "method":"gss_import_name",
107 "input_name_type": name_type
111 "navigator_gss_tag": nonce,
118 GSSEap.prototype.gss_error = function (major)
124 callingMask = 377 << 24;
125 routineMask = 377 << 16;
126 mask = callingMask | routineMask;
128 return (0 != (major & mask));
133 navigator.gss_eap = GSSEap;