public async Task <ActionResult> StarteSealTspFlow([FromQuery(Name = "env_slt")] string envSlt)
        {
            // First step is to get a token with the retrieve friom the query param
            SignatureOAuthUserToken signatureOAuthUserToken;

            try
            {
                signatureOAuthUserToken = await DocuSignService.GetBearerTokenFromEnvSltAsync(_httpClientFactory, _dsConfig, envSlt);
            }
            catch (Exception e)
            {
                // If you ending up in this case, make sure you clientId/clientSecret are good
                // Also make sure you are hitting the right environement
                return(BadRequest(e));
            }


            // Initialize DocuSign ApiClient
            var apiClient = new eSign.Client.ApiClient(signatureOAuthUserToken.user_api + "/restapi");

            apiClient.Configuration.AddDefaultHeader("Authorization", "Bearer " + signatureOAuthUserToken.access_token);

            DocuSign.eSign.Api.SignatureApi signatureApi = new eSign.Api.SignatureApi(apiClient);

            // UserInfo
            var userInfoResult = signatureApi.UserInfo();

            UserCertificate userCertificate = new UserCertificate(userInfoResult.User.DisplayName, userInfoResult.User.Email, userInfoResult.Language.ToUpper(), "DocuSign");

            var SignHashSessionInfoResult = signatureApi.SignHashSessionInfo(new eSign.Model.SignSessionInfoRequest(Convert.ToBase64String(userCertificate.CertContainer.Certificate.GetEncoded())));

            if (SignHashSessionInfoResult.Documents[0] == null || SignHashSessionInfoResult.Documents[0].RemainingSignatures == 0L)
            {
                return(Ok("Nothing to sign"));
            }

            byte[] hashBytes     = System.Convert.FromBase64String(SignHashSessionInfoResult.Documents[0].Data);
            byte[] signedCmsData = SignatureProvider.SignatureProvider.Sign(hashBytes, userCertificate);

            eSign.Model.DocumentUpdateInfo docInfo = new eSign.Model.DocumentUpdateInfo()
            {
                DocumentId   = SignHashSessionInfoResult.Documents[0].DocumentId,
                Data         = Convert.ToBase64String(signedCmsData),
                ReturnFormat = "CMS"
            };
            var CompleteSignHashResult = signatureApi.CompleteSignHash(new eSign.Model.CompleteSignRequest()
            {
                DocumentUpdateInfos = new List <eSign.Model.DocumentUpdateInfo> {
                    docInfo
                }
            });

            ViewBag.CompleteResult = CompleteSignHashResult;

            return(Redirect(CompleteSignHashResult.RedirectionUrl));
        }
Ejemplo n.º 2
0
        public async Task OnGetAsync(string authorizationCode)
        {
            // First step is to get a token with the retrieve friom the query param
            try
            {
                SignatureOAuthUserToken = await DocuSignService.GetBearerTokenFromCodeAsync(_httpClientFactory, _dsConfig, authorizationCode);
            }
            catch (Exception e)
            {
                // If you ending up in this case, make sure you clientId/clientSecret are good
                // Also make sure you are hitting the right environement
                ViewData["Error"] = e;
            }


            // Initialize DocuSign ApiClient
            var apiClient = new eSign.Client.ApiClient(SignatureOAuthUserToken.user_api + "/restapi");

            apiClient.Configuration.AddDefaultHeader("Authorization", "Bearer " + SignatureOAuthUserToken.access_token);

            DocuSign.eSign.Api.SignatureApi signatureApi = new eSign.Api.SignatureApi(apiClient);

            // Get UserInfo
            var userInfoResponse = signatureApi.UserInfo();

            ViewData["UserInfo"] = JsonConvert.SerializeObject(userInfoResponse);
            UserCertificate userCertificate = new UserCertificate(UserInfoResponse.User.DisplayName, UserInfoResponse.User.Email, UserInfoResponse.Language.ToUpper(), "DocuSign");


            //var SignHashSessionInfoResult = signatureApi.SignHashSessionInfo(new eSign.Model.SignSessionInfoRequest(Convert.ToBase64String(userCertificate.CertContainer.Certificate.GetEncoded())));

            //if (SignHashSessionInfoResult.Documents[0] == null || SignHashSessionInfoResult.Documents[0].RemainingSignatures == "0")
            //{
            //    return Ok("Nothing to sign");
            //}

            //byte[] hashBytes = System.Convert.FromBase64String(SignHashSessionInfoResult.Documents[0].Data);
            //byte[] signedCmsData = SignatureProvider.SignatureProvider.Sign(hashBytes, userCertificate);

            //eSign.Model.DocumentUpdateInfo docInfo = new eSign.Model.DocumentUpdateInfo()
            //{
            //    DocumentId = SignHashSessionInfoResult.Documents[0].DocumentId,
            //    Data = Convert.ToBase64String(signedCmsData),
            //    ReturnFormat = "CMS"
            //};
            //var CompleteSignHashResult = signatureApi.CompleteSignHash(new eSign.Model.CompleteSignRequest() { DocumentUpdateInfos = new List<eSign.Model.DocumentUpdateInfo> { docInfo } });

            //ViewBag.CompleteResult = CompleteSignHashResult;

            //return Redirect(CompleteSignHashResult.RedirectionUrl);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Gets the DocuSign permission profiles and groups
        /// </summary>
        /// <param name="accessToken">Access Token for API call (OAuth)</param>
        /// <param name="basePath">BasePath for API calls (URI)</param>
        /// <param name="accountId">The DocuSign Account ID (GUID or short version) for which the APIs call would be made</param>
        /// <returns>The tuple with DocuSign permission profiles and groups information</returns>
        public static (PermissionProfileInformation, GroupInformation) GetPermissionProfilesAndGroups(
            string accessToken, string basePath, string accountId)
        {
            var apiClient = new eSign.Client.ApiClient(basePath);

            apiClient.Configuration.DefaultHeader.Add("Authorization", "Bearer " + accessToken);

            var accountsApi        = new AccountsApi(apiClient);
            var permissionProfiles = accountsApi.ListPermissions(accountId);

            var dsGroupsApi = new GroupsApi(apiClient);
            var groups      = dsGroupsApi.ListGroups(accountId);

            return(permissionProfiles, groups);
        }