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";
16 this.appTag = config.appTag || "";
17 this.default_error = config.error || function (major, minor, error, appTag) {
20 window.addEventListener("message", this.dispatch_responses.bind(this));
22 GSSEap.prototype.dispatch_responses = function (event)
30 /* This message is destined for us only if all the following apply:
31 * - The data.method_name is one of the methods implemented by this
33 * - data.return_values exists
34 * - data.cookies exists
35 * - One of my callbacks matches the nonce in data.cookies.navigator_gss_tag
36 * - One of my methods matches the nonce in data.cookies.navigator_gss_tag
37 * and that method matches data.method
39 method = event.data.method;
41 (method != "gss_import_name") ||
42 ("undefined" == typeof (event.data.return_values)) ||
43 ("undefined" == typeof (event.data.cookies)))
48 nonce = event.data.cookies.navigator_gss_tag;
49 event.data.cookies.navigator_gss_tag = undefined;
50 callback = this.callbacks[nonce];
51 if ("undefined" == typeof (callback) || this.methods[nonce] != method) {
55 // We now know that this message is for us!
56 this.callbacks[nonce] = undefined;
57 app_tag = event.data.cookies.app_tag;
58 error = this.errors[nonce] || this.default_error;
60 if (this.gss_error(event.data.return_values.major_status))
62 var errMsg = "Error during " + method + ": " +
63 "Major status message: " +
64 event.data.return_values.errors.major_status_message +
65 "; Minor status message: " +
66 event.data.return_values.errors.minor_status_message;
68 event.data.return_values.major_status,
69 event.data.return_values.minor_status,
73 if ("gss_import_name" == method)
74 { callback(event.data.return_values, app_tag); }
75 // if( "gss_X" == method ) { callback(event.data.return_values.x, app_tag);}
79 GSSEap.prototype.import_name = function (params)
83 var name = params.name;
84 var name_type = params.name_type || "{1 2 840 113554 1 2 1 4 }";
85 var callback = params.success;
86 var error = params.error || this.default_error;
87 var app_tag = params.app_tag || this.appTag;
90 // Call an error if we don't have the required parameters.
93 if ( "undefined" == typeof(name) ||
94 "undefined" == typeof(callback) )
97 "import_name called missing either name or success callback"
102 nonce = navigator.generateNonce();
103 this.callbacks[nonce] = callback;
104 this.methods[nonce] = "gss_import_name";
105 this.errors[nonce] = error;
107 "method":"gss_import_name",
111 "input_name_type": name_type
115 "navigator_gss_tag": nonce,
122 GSSEap.prototype.gss_error = function (major)
128 callingMask = 255 << 24;
129 routineMask = 255 << 16;
130 mask = callingMask | routineMask;
132 return (0 != (major & mask));
137 navigator.gss_eap = GSSEap;