public object GetSignedHash(string access_token, InputAuthorizeSignHash inputAuthorizeSignHash)
        {
            RestRequest request = new RestRequest("sign", Method.POST);

            request.AddParameter("Authorization", "Bearer " + access_token, ParameterType.HttpHeader);

            JsonSerializer serializer = new JsonSerializer();
            var            postData   = serializer.Serialize(inputAuthorizeSignHash);

            request.AddJsonBody(postData);

            IRestResponse response = Execute(request);
            var           data     = serializer.Deserialize <object>(response);

            return(data);
        }
        private void PAdESHandler_OnRemoteSign(object Sender, byte[] Hash, ref byte[] SignedHash)
        {
            string[]       hashToSign  = new[] { Convert.ToBase64String(Hash) };
            JsonSerializer serializer  = new JsonSerializer();
            ErrorLogger    errorLogger = new ErrorLogger();

            AuthorizeSignClient    authorizeSignClient    = new AuthorizeSignClient(serializer, errorLogger, baseURL);
            InputAuthorizeSignHash inputAuthorizeSignHash = new InputAuthorizeSignHash()
            {
                credentialsID = credentialsID,
                hash          = hashToSign,
                hashAlgo      = hashAlgo,
                signAlgo      = signAlgo,
                numSignatures = 1,
                OTP           = otp,
                PIN           = pin
            };

            var outputAuthSign = serializer.Serialize(authorizeSignClient.GetSignedHash(access_token, inputAuthorizeSignHash));

            var signature = serializer.Deserialize <OutputSignaturesSignHash>(outputAuthSign);

            SignedHash = Encoding.UTF8.GetBytes(signature.signatures.FirstOrDefault());
        }
        public object Sign(InputAuthorizeSignHash inputAuthSign)
        {
            InputCredentialsAuthorize inputCredentialsAuthorize = new InputCredentialsAuthorize()
            {
                credentialID  = inputAuthSign.credentialsID,
                numSignatures = inputAuthSign.numSignatures,
                hash          = inputAuthSign.hash,
                PIN           = inputAuthSign.PIN,
                OTP           = inputAuthSign.OTP,
                clientData    = inputAuthSign.clientData,
                description   = inputAuthSign.description
            };

            JsonSerializer serializer  = new JsonSerializer();
            ErrorLogger    errorLogger = new ErrorLogger();
            string         baseURL     = _configuration.GetSection("Transsped").GetSection("BaseURL").Value;

            CredentialsAuthorizeClient credentialsAuthorizeClient = new CredentialsAuthorizeClient(serializer, errorLogger, baseURL);

            Microsoft.Extensions.Primitives.StringValues value;
            string access_token = "";

            if (Request.Headers.TryGetValue("Authorization", out value))
            {
                access_token = value.ToString().Replace("Bearer ", "");
            }
            else
            {
                OutputError error = new OutputError()
                {
                    error             = "invalid_access_token",
                    error_description = "Invalid access_token"
                };
                return(serializer.Serialize(error));
            }

            string response = serializer.Serialize(credentialsAuthorizeClient.GetCredentialsAuthorize(access_token, inputCredentialsAuthorize));

            if (response != null && !response.Contains("error"))
            {
                OutputCredentialsAuthorize outCredAuth = serializer.Deserialize <OutputCredentialsAuthorize>(response);

                InputSignaturesSignHash inputSignatures = new InputSignaturesSignHash()
                {
                    clientData     = inputAuthSign.clientData,
                    credentialID   = inputAuthSign.credentialsID,
                    hash           = inputAuthSign.hash,
                    hashAlgo       = inputAuthSign.hashAlgo,
                    SAD            = outCredAuth.SAD,
                    signAlgo       = inputAuthSign.signAlgo,
                    signAlgoParams = inputAuthSign.signAlgoParams
                };

                SignHashClient signHashClient = new SignHashClient(serializer, errorLogger, baseURL);
                //string signResponse = serializer.Serialize(signHashClient.GetSignedHash(access_token, inputSignatures));


                return(signHashClient.GetSignedHash(access_token, inputSignatures));
            }
            else
            {
                OutputError error = new OutputError()
                {
                    error             = "invalid_access_token",
                    error_description = "Invalid access_token"
                };
                return(error);
            }
        }