diff options
Diffstat (limited to 'includes/external/school/node_modules/node-forge/tests/loginDemo.js')
-rw-r--r-- | includes/external/school/node_modules/node-forge/tests/loginDemo.js | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/includes/external/school/node_modules/node-forge/tests/loginDemo.js b/includes/external/school/node_modules/node-forge/tests/loginDemo.js new file mode 100644 index 0000000..859e1f0 --- /dev/null +++ b/includes/external/school/node_modules/node-forge/tests/loginDemo.js @@ -0,0 +1,149 @@ +/** + * Forge Web ID Tests + * + * @author Dave Longley + * + * Copyright (c) 2010 Digital Bazaar, Inc. All rights reserved. + */ +(function($) +{ + // load flash socket pool + window.forge.socketPool = {}; + window.forge.socketPool.ready = function() + { + // init page + init($); + }; + swfobject.embedSWF( + 'forge/SocketPool.swf', 'socketPool', '0', '0', '9.0.0', + false, {}, {allowscriptaccess: 'always'}, {}); +})(jQuery); + +var init = function($) +{ + // logging category + var cat = 'forge.tests.loginDemo'; + + // local alias + var forge = window.forge; + try + { + // get query variables + var query = forge.util.getQueryVariables(); + var domain = query.domain || ''; + var auth = query.auth || ''; + var redirect = query.redirect || ''; + var pport = query.pport || 843; + redirect = 'https://' + domain + '/' + redirect; + if(domain) + { + $('#domain').html('`' + domain + '`'); + } + + // for chosen webid + var chosen = null; + + // init forge xhr + forge.xhr.init({ + flashId: 'socketPool', + msie: $.browser.msie, + url: 'https://' + domain, + policyPort: pport, + connections: 1, + caCerts: [], + verify: function(c, verified, depth, certs) + { + // don't care about cert verification for test + return true; + }, + getCertificate: function(c) + { + forge.log.debug(cat, 'using cert', chosen.certificate); + return chosen.certificate; + }, + getPrivateKey: function(c) + { + //forge.log.debug(cat, 'using private key', chosen.privateKey); + return chosen.privateKey; + } + }); + + // get flash API + var flashApi = document.getElementById('socketPool'); + + // get web ids collection + var webids = forge.util.getItem( + flashApi, 'forge.test.webid', 'webids'); + webids = webids || {}; + + var id = 0; + var list = $('<ul/>'); + for(var key in webids) + { + (function(webid) + { + var cert = forge.pki.certificateFromPem(webid.certificate); + var item = $('<li/>'); + var button = $('<button>'); + button.attr('id', '' + (webid + id++)); + button.html('Choose'); + button.click(function() + { + button.attr('disabled', 'disabled'); + + // set chosen webid + chosen = webid; + + // do webid call + $.ajax( + { + type: 'GET', + url: '/' + auth, + success: function(data, textStatus, xhr) + { + if(data !== '') + { + forge.log.debug(cat, 'authentication completed'); + forge.log.debug(cat, data); + window.name = data; + } + else + { + forge.log.debug(cat, 'authentication failed'); + window.name = ''; + } + window.location = redirect; + }, + error: function(xhr, textStatus, errorThrown) + { + forge.log.error(cat, 'authentication failed'); + }, + xhr: forge.xhr.create + }); + }); + item.append(button); + item.append(' ' + key + '<br/>'); + + // display certificate attributes + var attr; + for(var n = 0; n < cert.subject.attributes.length; ++n) + { + attr = cert.subject.attributes[n]; + item.append(attr.name + ': ' + attr.value + '<br/>'); + } + + list.append(item); + })(webids[key]); + } + if(list.html() === '<ul/>') + { + list.append('None'); + } + + $('#webids').append(list); + } + catch(ex) + { + forge.log.error(cat, ex); + } +}; |