protected static ECCModel CreateError(Exception e, RequestObject request)
        {
            if (AuthKey == null)
            {
                throw new X1WalletException(HttpStatusCode.NoContent, "Please retry later.", null);
            }

            var responseObject = new ResponseObject <object>();

            if (e is X1WalletException se)
            {
                responseObject.Status     = (int)se.HttpStatusCode;
                responseObject.StatusText = se.Message;
            }
            else
            {
                responseObject.Status     = 500;
                responseObject.StatusText = $"Error: {e.Message}";
            }
            var      responseJson      = Serialize(responseObject);
            var      responseJsonBytes = responseJson.ToUTF8Bytes();
            var      cipherV2Bytes     = VCL.Encrypt(responseJsonBytes, request.CurrentPublicKey.FromBase64(), VCL.ECKeyPair.PrivateKey, AuthKey.PrivateKey);
            ECCModel eccModel          = new ECCModel
            {
                CurrentPublicKey = VCL.ECKeyPair.PublicKey.ToHexString(),
                CipherV2Bytes    = cipherV2Bytes.ToHexString(),
                AuthKey          = AuthKey.PublicKey.ToHexString()
            };

            return(eccModel);
        }
        protected static ECCModel CreateOk <T>(T data, RequestObject request)
        {
            if (AuthKey == null)
            {
                throw new X1WalletException(HttpStatusCode.NoContent, "Please retry later.", null);
            }

            var responseObject = new ResponseObject <T> {
                ResponsePayload = data, Status = 200, StatusText = "OK"
            };
            var      responseJson      = Serialize(responseObject);
            var      responseJsonBytes = responseJson.ToUTF8Bytes();
            var      cipherV2Bytes     = VCL.Encrypt(responseJsonBytes, request.CurrentPublicKey.FromBase64(), VCL.ECKeyPair.PrivateKey, AuthKey.PrivateKey);
            ECCModel eccModel          = new ECCModel
            {
                CurrentPublicKey = VCL.ECKeyPair.PublicKey.ToHexString(),
                CipherV2Bytes    = cipherV2Bytes.ToHexString(),
                AuthKey          = AuthKey.PublicKey.ToHexString()
            };

            return(eccModel);
        }