SD_CODE loginfunTest() { Request::CURL_Init(); std::string response; AccessToken token; Request curl; curl.Init(); std::string account = "*****@*****.**"; std::string plainpwd ="aA111111"; std::string md5pwd = Digestor::HashPassword(plainpwd); printf("pwd:%s,md5pwd:%s\r\n",plainpwd.c_str(),md5pwd.c_str()); SD_CODE ret = curl.Ent_Login("https://e.surdoc.net",account,md5pwd,15000,response); if(ret != SD_SUCCESSED){ printf("\r\nEnt_login error\r\n"); Request::CURL_UnInit(); return ret;} else{ printf("\r\nEnt_login successed.\r\n");} AccessToken temp_token; SDContext *ctx = &CTX; CJsonParse parse(response); if(!parse.IsValid()|| !parse.Enterprise_GetAccessToken(&temp_token, ctx)) printf("failed to parse login response.\r\n"); printf("privatekey:%s\r\n",temp_token.privatekey.c_str()); printf("rootid:%s\r\n",ctx->root_dir_id.c_str()); uint64_t key=TokenManager::get().SetToken(temp_token); AccessToken tm_token; TokenManager::get().GetToken(key,tm_token); printf("TokenManage privatekey:%s\r\n",tm_token.privatekey.c_str()); ByteArray pk; int iret = EciesHelper::TryParsePrivKey(temp_token.privatekey,plainpwd,&pk); if(iret == 1) { token.privatekey = pk.toUrlBase64Str(); printf("token.privatekey:%s\r\n",token.privatekey.c_str()); }else{ printf("failed to parse user`s private key\r\n"); return SD_FAILED; } ByteArray admin_pk; iret = EciesHelper::TryParsePrivKey(temp_token.admin_privkey, plainpwd, &admin_pk); if (iret == 1) { token.admin_privkey = admin_pk.toUrlBase64Str(); printf("token.admin_privkey:%s\r\n",token.admin_privkey.c_str()); } else { printf("failed to parse admin's private key\r\n"); return SD_FAILED; } token.server = temp_token.server; token.dbserver = temp_token.dbserver; token.svgserver = temp_token.svgserver; token.webserver = temp_token.webserver; token.user_department = temp_token.user_department; token.user_email = temp_token.user_email; token.user_name = temp_token.user_name; token.user_role = temp_token.user_role; token.user_space = temp_token.user_space; if (!temp_token.access_token.empty()) { token.access_token = temp_token.access_token; token.refresh_token = temp_token.refresh_token; token.resource_server = temp_token.resource_server; token.expires_in = temp_token.expires_in; } //uint64_t key = TokenManager::get().SetToken(token); Request::CURL_UnInit(); return SD_SUCCESSED; }