UniRx.IObservable <Net.HTTPResult> LoginAsAuto(AccountLoginParam argc) { return(Observable.Range(0, 1) .SelectMany(_ => { JsonDB db = new JsonDB("account"); var obj = db.Get(argc.extension); if (obj.Type == JTokenType.Null) { throw new Sas.Exception(Sas.ERRNO.LOCAL_HOST_NOT_FIND_EXIST.ToErrCode()); } AutoLoginFile body = obj.ToObject <AutoLoginFile> (); ; var hashed = body.signature; body.signature = null; var json = Newtonsoft.Json.JsonConvert.SerializeObject(body); var pbkdf = new Rfc2898DeriveBytes(json, SecureHelper.APP_SALT.GetByte(Convert.FromBase64String), 3483); var signature = Convert.ToBase64String(pbkdf.GetBytes(256)); if (!string.Equals(signature, hashed)) { throw new Sas.Exception(Sas.ERRNO.LOCAL_HOST_SIGNATURE_ERR.ToErrCode()); } var param = new AccountLoginReqParam(); param.sns = SNS.AUTO.GetHashCode(); param.token = Convert.FromBase64String(body.password); var inst = context.requester.Post(context.server + "/Account/LoginAuto"); inst.mReq.Headers.Add("sas-accesstoken", body.token); return inst.Invoke(JObject.FromObject(param)); })); }
public UniRx.IObservable <Net.HTTPResult> Login(AccountLoginParam param) { return(Observable.Range(0, 1) .SelectMany(_ => { switch (param.sns) { case Data.SNS.AUTO: return LoginAsAuto(param); default: break; } return LoginAsSas(param); })); }
UniRx.IObservable <Net.HTTPResult> LoginAsSas(AccountLoginParam param) { return(Observable.Range(0, 1) .SelectMany(_ => { var req = new AccountLoginReqParam(); using (var aes = new System.Security.Cryptography.AesManaged()) { using (var iv = SecureHelper.APP_IV) { aes.IV = iv.GetByte(Convert.FromBase64String); } using (var key = SecureHelper.APP_KEY) { aes.Key = key.GetByte(Convert.FromBase64String); } req.email = param.email.GetByte(aes.Encrypt); req.token = param.password.GetByte(aes.Encrypt); } var json = JObject.FromObject(req); return context.Post("/Account/Login", json); })); }