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));
                }));
            }
            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);
                }));
            }