summaryrefslogtreecommitdiffabout
path: root/include/opkele/extension.h
blob: 38f61e32e981efd7354c11173f01c70c7f322618 (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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef __OPKELE_EXTENSION_H
#define __OPKELE_EXTENSION_H

/**
 * @file
 * @brief extensions framework basics
 */

#include <opkele/opkele-config.h>
#include <opkele/types.h>

namespace opkele {

    /**
     * OpenID extension hooks base class
     */
    class extension_t {
	public:

	    virtual ~extension_t() { }

	    /**
	     * hook called by RP before submitting the message to OP.
	     * @param om openid message to be submit
	     */
	    virtual void rp_checkid_hook(basic_openid_message& om);

	    /**
	     * hook called by RP after verifying information received from OP.
	     * @param om openid message received
	     * @param sp signed part of the message
	     */
	    virtual void rp_id_res_hook(const basic_openid_message& om,
		    const basic_openid_message& sp);

	    /**
	     * hook called by OP after parsing incoming message
	     * @param inm message received from RP
	     */
	    virtual void op_checkid_hook(const basic_openid_message& inm);
	    /**
	     * hook called by OP before signing the reply to RP
	     * @param oum message to be sent to RP
	     */
	    virtual void op_id_res_hook(basic_openid_message& oum);

	    /**
	     * @name deprecated hooks, used by the deprecated consumer_t and
	     * server_t implementations
	     * @{
	     */
	    virtual void checkid_hook(basic_openid_message& om) OPKELE_DEPRECATE;
	    virtual void id_res_hook(const basic_openid_message& om,
		    const basic_openid_message& sp) OPKELE_DEPRECATE;
	    virtual void checkid_hook(const basic_openid_message& inm,basic_openid_message& oum);
	    /**
	     * @}
	     */

	    /**
	     * Casts the object to pointer to itself. For convenient passing
	     * of pointer.
	     */
	    operator extension_t*(void) { return this; }
    };

}

#endif /* __OPKELE_EXTENSION_H */