"use strict"; var CloudExperienceHost; (function (CloudExperienceHost) { var MSA; (function (MSA) { var Crypto = Windows.Security.Cryptography; var _userInfo = null; var _ngcBrokeredExtension = null; function createConnectedAccount(user, encodedPassword, daToken, creation, expiry, sessionKey, flowToken) { var buffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedPassword); var extension = getBrokeredExtension(); return extension.createConnectedAccountAsync(user, buffer, daToken, creation, expiry, sessionKey, flowToken); } MSA.createConnectedAccount = createConnectedAccount; function createStubAccount(username, isAdmin, localUserName) { if (typeof localUserName === 'undefined') { localUserName = ''; } var extension = getBrokeredExtension(); return extension.createStubAccountAsync(localUserName, username, isAdmin); } MSA.createStubAccount = createStubAccount; function encryptUserData(plainText) { if (!plainText) { return WinJS.Promise.as(""); } var provider = new Crypto.DataProtection.DataProtectionProvider("local=user"); var buffer = Crypto.CryptographicBuffer.convertStringToBinary(plainText, Crypto.BinaryStringEncoding.utf8); return provider.protectAsync(buffer).then(function (protectedBuffer) { return Crypto.CryptographicBuffer.encodeToBase64String(protectedBuffer); }); } MSA.encryptUserData = encryptUserData; function createUserIdKey(requireStrongAuth) { var extension = getBrokeredExtension(); return extension.createUserIdKeyAsync(requireStrongAuth); } MSA.createUserIdKey = createUserIdKey; function resetUserIdKey(requireStrongAuth) { return getMsaExtension().resetUserIdKeyAsync(requireStrongAuth); } MSA.resetUserIdKey = resetUserIdKey; function deleteNgcContainer() { return getNgcBrokeredExtension().deleteNgcContainerAsync(); } MSA.deleteNgcContainer = deleteNgcContainer; function isNgcEnabled() { return getMsaExtension().isNgcEnabledAsync(); } MSA.isNgcEnabled = isNgcEnabled; function getContextParameters(keysToInclude) { return getMsaExtension().getContextParametersAsync().then(function (params) { if (typeof keysToInclude !== 'undefined') { params = pluckKeys(params, keysToInclude); } return objectToQueryString(params); }); } MSA.getContextParameters = getContextParameters; function getContextParametersForLogin() { return getContextParameters(['mkt', 'platform', 'scid', 'ctc', 'cmn']); } MSA.getContextParametersForLogin = getContextParametersForLogin; function getContextParametersForAccount() { return getContextParameters(['mkt', 'uiflavor', 'hasngc']); } MSA.getContextParametersForAccount = getContextParametersForAccount; function getContextParametersForXbox() { var langCode = "en-US"; var regionCode = "US"; var inOobe = false; try { langCode = Windows.Xbox.System.Internal.Console.ConsoleProperties.currentNLSLanguage; regionCode = new Windows.Globalization.GeographicRegion().codeTwoLetter; var msaLocaleOverrides = Windows.Xbox.System.Internal.LiveSettings.LiveSettings.msaLocaleOverrides; if (msaLocaleOverrides) { msaLocaleOverrides = JSON.parse(msaLocaleOverrides); if (msaLocaleOverrides[langCode]) { langCode = msaLocaleOverrides[langCode]; } } } catch (e) { } try { inOobe = !Windows.Xbox.System.Internal.XConfig.XConfigProperties.getIsOobeCompleted(); } catch (e) { } return getContextParameters(['platform']).then(function (platformQueryString) { return "mkt=" + langCode + "&country=" + regionCode + (inOobe ? "&oobe=1" : "") + "&" + platformQueryString; }); } MSA.getContextParametersForXbox = getContextParametersForXbox; function getContextParametersForXboxConnectWithEmail() { return getMsaExtension().getUserEmailAsync().then(function (emailAddress) { return getContextParametersForXbox().then(function (platformQueryString) { return "username=" + emailAddress + "&" + platformQueryString; }); }); } MSA.getContextParametersForXboxConnectWithEmail = getContextParametersForXboxConnectWithEmail; function saveAuthState(daToken, creation, expiry, sessionKey) { var extension = getBrokeredExtension(); return extension.saveAuthStateAsync(daToken, creation, expiry, sessionKey); } MSA.saveAuthState = saveAuthState; function associateAccount(user, daToken, creation, expiry, flowToken, sessionKey) { var extension = getMsaExtension(); if (typeof sessionKey === "undefined") { sessionKey = null; } return extension.associateAccountAsync(user, daToken, creation, expiry, sessionKey, flowToken); } MSA.associateAccount = associateAccount; function connectAccount(encodedLocalPassword, userName, encodedMsaPassword, daToken, daCreation, daExpiration, flowToken, sessionKey) { var localPasswordBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedLocalPassword); var msaPasswordBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedMsaPassword); var extension = getMsaExtension(); return extension.connectAccountAsync(localPasswordBuffer, userName, msaPasswordBuffer, daToken, daCreation, daExpiration, flowToken, sessionKey); } MSA.connectAccount = connectAccount; function getDevicePostData() { var extension = getMsaExtension(); return extension.getDevicePostDataAsync(); } MSA.getDevicePostData = getDevicePostData; function getAuthTokenPostData() { return getMsaExtension().getSignedAuthTokensAsync().then(function (fields) { return objectToQueryString(fields); }); } MSA.getAuthTokenPostData = getAuthTokenPostData; function objectToQueryString(obj) { var components = []; Object.keys(obj).forEach(function (key) { components.push(escapeUrlParam(key) + '=' + escapeUrlParam(obj[key])); }); return components.join('&'); } function pluckKeys(obj, keysToPluck) { var result = {}; Object.keys(obj).forEach(function (key) { if (keysToPluck.indexOf(key) !== -1) { result[key] = obj[key]; } }); return result; } function setUserInfo(userInfo) { return new WinJS.Promise(function (completeDispatch, errorDispatch ) { var provider = new Crypto.DataProtection.DataProtectionProvider("local=user"); var buffer = Crypto.CryptographicBuffer.convertStringToBinary(JSON.stringify(userInfo), Crypto.BinaryStringEncoding.utf8); provider.protectAsync(buffer).then(function (bufferProtected) { _userInfo = Crypto.CryptographicBuffer.encodeToBase64String(bufferProtected); completeDispatch(); }.bind(this), errorDispatch); }.bind(this)); } MSA.setUserInfo = setUserInfo; function getUserInfo() { return new WinJS.Promise(function (completeDispatch, errorDispatch ) { if (_userInfo) { var provider = new Crypto.DataProtection.DataProtectionProvider("local=user"); var buffer = Crypto.CryptographicBuffer.decodeFromBase64String(_userInfo); provider.unprotectAsync(buffer).then(function (bufferUnprotected) { var userInfo = JSON.parse(Crypto.CryptographicBuffer.convertBinaryToString(Crypto.BinaryStringEncoding.utf8, bufferUnprotected)); completeDispatch(userInfo); }.bind(this), errorDispatch); } else { completeDispatch(null); } }.bind(this)); } MSA.getUserInfo = getUserInfo; function showKeyboardForXbox(show) { var virtualKeyboard = Windows.UI.ViewManagement.InputPane.getForCurrentView(); if ((typeof show === 'undefined') || show) { virtualKeyboard.tryShow(); } else { virtualKeyboard.tryHide(); } } MSA.showKeyboardForXbox = showKeyboardForXbox; function escapeUrlParam(value) { return encodeURIComponent(value).replace(/'/g, "%27"); } function getMsaExtension() { return new MicrosoftAccount.Extension.ExtensionWorker(); } function getBrokeredExtension() { return new MicrosoftAccount.UserOperations.Extension(); } function getNgcBrokeredExtension() { if (_ngcBrokeredExtension === null) { _ngcBrokeredExtension = new MicrosoftAccount.UserOperations.Extension(); } return _ngcBrokeredExtension; } })(MSA = CloudExperienceHost.MSA || (CloudExperienceHost.MSA = {})); })(CloudExperienceHost || (CloudExperienceHost = {}));