summaryrefslogtreecommitdiffstats
path: root/src/lib-oauth2/oauth2-private.h
blob: 038f9e14a3ca3ec485fab6517e98fbf81c7867ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#ifndef OAUTH2_PRIVATE_H
#define OAUTH2_PRIVATE_H

struct json_tree;
struct dcrypt_public_key;

struct oauth2_request {
	pool_t pool;

	const struct oauth2_settings *set;
	struct http_client_request *req;
	struct json_parser *parser;
	struct istream *is;
	struct io *io;

	const char *delayed_error;
	struct timeout *to_delayed_error;

	const char *username;
	const char *key_file_template;

	void (*json_parsed_cb)(struct oauth2_request *, const char *error);

	ARRAY_TYPE(oauth2_field) fields;
	char *field_name;

	oauth2_request_callback_t *req_callback;
	void *req_context;
	/* indicates whether token is valid */
	unsigned int response_status;
};

void oauth2_request_parse_json(struct oauth2_request *req);
int oauth2_json_tree_build(const buffer_t *json, struct json_tree **tree_r,
			   const char **error_r);

int oauth2_validation_key_cache_lookup_pubkey(
	struct oauth2_validation_key_cache *cache, const char *key_id,
	struct dcrypt_public_key **pubkey_r);
int oauth2_validation_key_cache_lookup_hmac_key(
	struct oauth2_validation_key_cache *cache, const char *key_id,
	const buffer_t **hmac_key_r);
void oauth2_validation_key_cache_insert_pubkey(
	struct oauth2_validation_key_cache *cache, const char *key_id,
	struct dcrypt_public_key *pubkey);
void oauth2_validation_key_cache_insert_hmac_key(
	struct oauth2_validation_key_cache *cache, const char *key_id,
	const buffer_t *hmac_key);

#endif