public ISignatureValidator Create(TokenHeader header, JwsAlgorithm algorithm)
        {
            switch (algorithm)
            {
            case JwsAlgorithm.RS256:
            case JwsAlgorithm.RS384:
            case JwsAlgorithm.RS512:
                return(new Rsa(header, algorithm, GetLogger <Rsa>()));

            case JwsAlgorithm.HS256:
            case JwsAlgorithm.HS384:
            case JwsAlgorithm.HS512:
                return(new Hmac(header, algorithm, GetLogger <Hmac>()));

            case JwsAlgorithm.ES256:
            case JwsAlgorithm.ES384:
            case JwsAlgorithm.ES512:
                return(new Ecdsa(header, algorithm, GetLogger <Ecdsa>()));

            case JwsAlgorithm.PS256:
            case JwsAlgorithm.PS384:
            case JwsAlgorithm.PS512:
                throw Logger.Exception($"The JWS signature algorithm {algorithm} is not supported yet");

            default:
                throw Logger.Exception("Invalid JWS Algorithm");
            }
        }
Ejemplo n.º 2
0
        public void UpdateHeader(Action <TokenHeader> updateAction)
        {
            var header = ParsedHeader;

            updateAction(header);
            ParsedHeader = header;
        }
Ejemplo n.º 3
0
        public static string GenerateLoginToken(int playerID, DateTime tokenTTL)
        {
            //Setup Header
            TokenHeader header    = new TokenHeader();
            string      jwtHeader = JsonSerializer.Serialize(header);

            byte[] headerBytes   = Encoding.UTF8.GetBytes(jwtHeader);
            string encodedHeader = Base64UrlEncoder.Encode(headerBytes);

            //Setup data body
            TokenBody body    = new TokenBody(playerID, tokenTTL);
            string    jwtBody = JsonSerializer.Serialize(body);

            byte[] bodyBytes   = Encoding.UTF8.GetBytes(jwtBody);
            string encodedBody = Base64UrlEncoder.Encode(bodyBytes);

            string jwtToken = $"{encodedHeader}.{encodedBody}";

            string jwtSignature     = GetTokenSignature(jwtToken);
            string encodedSignature = Base64UrlEncoder.Encode(jwtSignature);

            string signedJWTToken = $"{jwtToken}.{encodedSignature}";

            return(signedJWTToken);
        }
Ejemplo n.º 4
0
        public void GetCustomeModule_Test()
        {
            var head = new TokenHeader()
            {
                GameSourceSysNo = 10001,
                RegionSourceSysNo = 10002,
                SiteSourceSysNo = 10002,
                Token = "",
                UserSysNo = 24
            };
            m_client.GetCustomeModule(head);
            //var msg = new StringBuilder();
            ////var result = m_client.GetCustomeModule(head);
            //var lastestLottery = m_Dal.GetCurrentLottery(head.SiteSourceSysNo,GetTableName(head.RegionSourceSysNo));
            //var a = m_Dal.QueryNextLotteryWithSameNumber(lastestLottery.RetNum, head.SiteSourceSysNo,
            //                                             GetTableName(head.RegionSourceSysNo));
            //msg.AppendFormat("大={0},小={1},和={2}\n", a.BigP, a.SmallP, a.BigP + a.SmallP);
            //msg.AppendFormat("中={0},边={1},和={2}\n",a.CenterP,a.SideP,a.CenterP+ a.SideP);
            //msg.AppendFormat("单={0},双={1},和={2}\n",a.OddP,a.EvenP,a.OddP+ a.EvenP);
            //msg.Append("华丽的分隔符===============================\n");
            //var b = m_Dal.QueryLotteryByHourStep(lastestLottery.RetTime.AddMinutes(5), head.SiteSourceSysNo,
            //                                     GetTableName(head.RegionSourceSysNo));
            //msg.AppendFormat("大={0},小={1},和={2}\n",b.BigP,b.SmallP,b.BigP + b.SmallP);
            //msg.AppendFormat("中={0},边={1},和={2}\n",b.CenterP,b.SideP,b.CenterP + b.SideP);
            //msg.AppendFormat("单={0},双={1},和={2}\n",b.OddP,b.EvenP,b.OddP + b.EvenP);

            //Console.WriteLine(msg);
        }
        public RegOnlineAPIFixture()
            : base(ConfigReader.WebServiceEnum.Default)
        {
            RequiresBrowser = true;

            this.service = new RegOnlineAPISoapClient(
                CurrentWebServiceConfig.EndpointConfigName,
                RemoteAddressUri.ToString());

            header = new TokenHeader();
        }
Ejemplo n.º 6
0
        private async Task <Result <byte[]> > CreateTokenAsync(IDictionary <string, object> claims)
        {
            var headerPayload = new TokenHeader("RSA256", "JWT");
            var headerData    = await SerializeAsync(headerPayload);

            var header = new byte[Base64.GetMaxEncodedToUtf8Length(headerData.Length)];

            Base64.EncodeToUtf8(headerData, header, out _, out _);
            var payload = await SerializeAsync(claims);

            var length  = header.Length + 1 + Base64.GetMaxEncodedToUtf8Length(payload.Length);
            var keySize = await _hasher.GetPublicKeySizeAsync();

            var token = new byte[length + 1 + Base64.GetMaxEncodedToUtf8Length(keySize)];

            Buffer.BlockCopy(header, 0, token, 0, header.Length);
            var idx = header.Length;

            token[idx] = (byte)'.';
            idx++;
            Encode(payload, token, idx);

            var digest    = SHA256.Create();
            var digestSum = digest.ComputeHash(token, 0, length);

            var(signSuccess, _, signature, signError) = await _hasher.SignAsync(digestSum);

            if (!signSuccess)
            {
                return(Result.Failure <byte[]>(signError));
            }

            idx        = length;
            token[idx] = (byte)'.';
            Encode(signature, token, idx + 1);

            return(token);
Ejemplo n.º 7
0
 public TokenBuilder(string alg)
 {
     Header = new TokenHeader(alg, "JWT");
     Claims = new Dictionary <string, object>();
 }
 protected SignatureValidator(TokenHeader header, JwsAlgorithm algorithm, ILogger <T> logger)
 {
     Header    = header;
     Algorithm = algorithm;
     Logger    = logger;
 }
 public ResultsOfListOfRegistration FetchRegistration(string userName, string password, int registrationId)
 {
     TokenHeader header = new TokenHeader();
     header.APIToken = this.LoginToGetAPIToken(userName, password);
     return this.service.GetRegistration(header, registrationId);
 }
 public ResultsOfListOfEvent FetchEvent(string userName, string password, int eventId)
 {
     TokenHeader header = new TokenHeader();
     header.APIToken = this.LoginToGetAPIToken(userName, password);
     return this.service.GetEvent(header, eventId);
 }
Ejemplo n.º 11
0
 public void Test_ChangePsw()
 {
     var h = new TokenHeader();
     h.UserSysNo = 5;
     var result= m_client.ChangePsw(h, "12345678", "123456", "你的出生地?", "abc", "", "");
     Console.WriteLine(result.Message);
     //Console.WriteLine(m_Dal.ChangePsw(5, "jeanma", "12345678", "你的出生地?", "abc", "", ""));
     //var a = m_Dal.ChangePsw(9,"115922","12345678","你的出生地?","abc","","");
 }
Ejemplo n.º 12
0
        public void QueryTrend_Test()
        {
            //client
            var head = new TokenHeader()
                       {
                           GameSourceSysNo = 10001,
                           RegionSourceSysNo = 10001,
                           SiteSourceSysNo = 10001,
                           Token = "",
                           UserSysNo = 1
                       };
            var result = m_client.QueryTrend(head,1);

            var head2 = new TokenHeader()
            {
                GameSourceSysNo = 10001,
                RegionSourceSysNo = 10001,
                SiteSourceSysNo = 10002,
                Token = "",
                UserSysNo = 1
            };
            var result2 = m_client.QueryTrend(head2,1);

            for (var i = 0;i < 5;i++)
            {
                Console.WriteLine(string.Format("{0},{1},{2}",result.Data.DataList[i].PeriodNum,result.Data.DataList[i].RetNum,result.Data.DataList[i].RetTime.ToString()));
                Console.WriteLine(string.Format("{0},{1},{2}",result2.Data.DataList[i].PeriodNum,result2.Data.DataList[i].RetNum,result2.Data.DataList[i].RetTime.ToString()));
                Console.WriteLine("=============");
            }
        }
Ejemplo n.º 13
0
 public void QuerySupperTrend_Test()
 {
     var head = new TokenHeader()
     {
         GameSourceSysNo = 10001,
         RegionSourceSysNo = 10002,
         SiteSourceSysNo = 10001,
         Token = "",
         UserSysNo = 1
     };
     var pageIndex = 1;
     var pageSize = 20;
     var result = m_Dal.QuerySupperTrend(head.SiteSourceSysNo, pageIndex, pageSize, 5000, "2013-7-23", "", "",
                                         GetTableName(head.RegionSourceSysNo));
     //var result = m_client.QuerySupperTrend(head,1,10,"","","");
     Console.WriteLine("名称\t总数");
     foreach (var t in result.LotteryTimeses)
     {
         Console.WriteLine(string.Format("{0}\t{1}",t.Name,t.Total));
     }
     Console.WriteLine("====================================");
     Console.WriteLine(string.Format("页数:{0},当前数量:{1},{2}",result.PageCount,result.DataList.Count,result.PageIndex));
     Console.WriteLine("期号\t号码\t日期");
     foreach (var item in result.DataList)
     {
         Console.WriteLine(string.Format("{0}\t{1}\t{2}",item.PeriodNum,item.RetNum,item.RetTime.ToString()));
     }
 }
Ejemplo n.º 14
0
 public void QueryOmissionTest()
 {
     var head = new TokenHeader()
     {
         GameSourceSysNo = 10001,
         RegionSourceSysNo = 10001,
         SiteSourceSysNo = 10001,
         Token = "",
         UserSysNo = 1
     };
     var result = m_client.QueryOmission(head);
 }
Ejemplo n.º 15
0
 public Hmac(TokenHeader header, JwsAlgorithm algorithm, ILogger <Hmac> logger)
     : base(header, algorithm, logger)
 {
 }
Ejemplo n.º 16
0
 public Rsa(TokenHeader header, JwsAlgorithm algorithm, ILogger <Rsa> logger)
     : base(header, algorithm, logger)
 {
 }