char *oauth_api_token(shd_t *api_cli, shmap_t *sess) { static char ret_buf[MAX_SHARE_HASH_LENGTH]; char *token; char *login; int err; token = shmap_get_str(sess, ashkey_str("access_token")); if (!token) { shkey_t *cli_k = shkey_gen(oauth_sess_token(sess)); shkey_t *serv_k = oauth_sess_id(api_cli); shkey_t *key; key = shkey_xor(cli_k, serv_k); shkey_free(&cli_k); shkey_free(&serv_k); token = shkey_print(key); shmap_set_astr(sess, "access_token", token); shkey_free(&key); } memset(ret_buf, 0, sizeof(ret_buf)); strncpy(ret_buf, token, sizeof(ret_buf)-1); return (ret_buf); }
static int _lfunc_sexe_shdecode(lua_State *L) { const char *enc_str = luaL_checkstring(L, 1); const char *key_str = luaL_checkstring(L, 2); shkey_t *key; size_t data_len; char *data; int err; if (!enc_str) enc_str = ""; key = shkey_gen(key_str); err = shdecode(enc_str, strlen(enc_str), &data, &data_len, key); shkey_free(&key); if (err) { lua_pushnil(L); return (1); /* (1) nil */ } lua_pushstring(L, data); free(data); return (1); /* (1) encoded string */ }