![]() |
PIP 5.6.1
Platform-Independent Primitives
|
Peer authentication state machine with signed key exchange. More...
#include <piauth.h>

Public Types | |
| enum | State { NotConnected , AuthProbe , PassRequest , AuthReply , KeyExchange , Connected } |
| Handshake state. More... | |
Public Member Functions | |
| PIAuth (const PIByteArray &sign) | |
| Creates an authentication endpoint from a signing secret key. | |
| void | setInfoData (const PIByteArray &info) |
| Sets application-defined info exchanged during authorization. | |
| void | setServerPassword (const PIString &ps) |
| Sets the server password used for password-based peer validation. | |
| void | setAuthorizedPublicKeys (const PIVector< PIByteArray > &pkeys) |
| Replaces the list of trusted peer signing public keys. | |
| PIVector< PIByteArray > | getAuthorizedPublicKeys () |
| Returns the list of trusted peer signing public keys. | |
| PIByteArray | getSignPublicKey () |
| Returns the public signing key derived from the local secret key. | |
| void | stop () |
| Stops the current authorization session and clears transient keys. | |
| void | startClient () |
| Starts the handshake in client mode. | |
| PIByteArray | startServer () |
| Starts the handshake in server mode and returns the first packet for the client. | |
| State | receive (PIByteArray &ba) |
| Processes an incoming handshake packet, updates the state and writes the reply back to ba. | |
| PIByteArray | getSecretKey () |
| Returns the session secret key after the state becomes Connected. | |
Public Member Functions inherited from PIObject | |
| PIObject (const PIString &name=PIString()) | |
Constructs an object and initializes its name property. | |
| virtual | ~PIObject () |
| Destroys the object, raises deleted() and disconnects it from the event graph. | |
| PIString | name () const |
Returns the name property of this object. | |
| virtual const char * | className () const |
| Returns the registered class name of this object. | |
| virtual uint | classNameID () const |
| Returns the hash of className(). | |
| virtual const char * | parentClassName () const |
| Returns the registered parent class name, or an empty string for the root. | |
| bool | debug () const |
| Returns whether piCoutObj output is enabled for this object. | |
| void | setName (const PIString &name) |
Sets the name property of this object. | |
| void | setDebug (bool debug) |
| Enables or disables piCoutObj output for this object. | |
| PIVariant | property (const char *name) const |
| Returns the property with name "name". | |
| void | setProperty (const char *name, const PIVariant &value) |
| Sets the property "name" to "value" and creates it if needed. More... | |
| bool | isPropertyExists (const char *name) const |
| Returns whether the property "name" exists. | |
| void | setThreadSafe (bool yes) |
| Enables or disables the internal object mutex during handler execution. More... | |
| bool | isThreadSafe () const |
| Returns whether the internal object mutex is enabled for handler execution. | |
| bool | execute (const PIString &method, const PIVector< PIVariantSimple > &vl) |
| Executes a registered method or handler method by name with the supplied arguments. More... | |
| bool | execute (const PIString &method) |
| Overload of execute() for a method without arguments. | |
| bool | execute (const PIString &method, const PIVariantSimple &v0) |
| Overload of execute() for one argument. | |
| bool | execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1) |
| Overload of execute() for two arguments. | |
| bool | execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2) |
| Overload of execute() for three arguments. | |
| bool | execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3) |
| Overload of execute() for four arguments. | |
| bool | executeQueued (PIObject *performer, const PIString &method, const PIVector< PIVariantSimple > &vl) |
| Queues execution of a registered method on the performer object. More... | |
| bool | executeQueued (PIObject *performer, const PIString &method) |
| Overload of executeQueued() for a method without arguments. | |
| bool | executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0) |
| Overload of executeQueued() for one argument. | |
| bool | executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1) |
| Overload of executeQueued() for two arguments. | |
| bool | executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2) |
| Overload of executeQueued() for three arguments. | |
| bool | executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3) |
| Overload of executeQueued() for four arguments. | |
| void | dump (const PIString &line_prefix=PIString()) const |
| Dumps object diagnostics to the project output stream. | |
| PIStringList | scopeList () const |
| Returns the registered inheritance scope of this object, including its own class. | |
| PIStringList | methodsEH () const |
| Returns full signatures of all registered event and handler methods for this class scope. | |
| bool | isMethodEHContains (const PIString &name) const |
| Returns whether a registered event or handler method with this name exists. | |
| PIString | methodEHArguments (const PIString &name) const |
| Returns the comma-separated argument type list of a registered method. | |
| PIString | methodEHFullFormat (const PIString &name) const |
| Returns the full registered signature of a method. | |
| PIString | methodEHFromAddr (const void *addr) const |
| Returns the registered method name for the specified entry-point address. | |
| void | piDisconnect (const PIString &sig, PIObject *dest, void *ev_h) |
| Disconnects this source object from a specific destination handler for event "sig". | |
| void | piDisconnect (const PIString &sig, PIObject *dest) |
| Disconnects this source object from all connections of event "sig" to destination object "dest". | |
| void | piDisconnect (const PIString &sig) |
| Disconnects this source object from all connections of event "sig". | |
| bool | isPIObject () const |
| Returns whether this pointer still refers to a live PIObject instance. | |
| template<typename T > | |
| bool | isTypeOf () const |
| Returns whether this object belongs to class "T" or one of its registered descendants. | |
| template<typename T > | |
| T * | cast () const |
Returns this object cast to "T" when isTypeOf<T>() succeeds, otherwise nullptr. | |
| void | callQueuedEvents () |
| Executes all queued deliveries posted to this performer object. | |
| bool | maybeCallQueuedEvents () |
| Executes queued deliveries only when this object was used as a performer. More... | |
| void | deleteLater () |
| Schedules the object for deferred deletion. More... | |
| void | deleted (PIObject *o) |
| Raised immediately before object destruction. More... | |
Static Public Member Functions | |
| static PIByteArray | generateSign (const PIByteArray &seed) |
| Generates a signing secret key from seed. | |
Static Public Member Functions inherited from PIObject | |
| static bool | execute (PIObject *o, const PIString &method, const PIVector< PIVariantSimple > &vl) |
| Static convenience wrapper for execute(). | |
| static bool | execute (PIObject *o, const PIString &method) |
| Static overload of execute() without arguments. | |
| static bool | execute (PIObject *o, const PIString &method, const PIVariantSimple &v0) |
| Static overload of execute() for one argument. | |
| static bool | execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1) |
| Static overload of execute() for two arguments. | |
| static bool | execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2) |
| Static overload of execute() for three arguments. | |
| static bool | execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3) |
| Static overload of execute() for four arguments. | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVector< PIVariantSimple > &vl) |
| Static convenience wrapper for executeQueued(). | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method) |
| Static overload of executeQueued() without arguments. | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0) |
| Static overload of executeQueued() for one argument. | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1) |
| Static overload of executeQueued() for two arguments. | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2) |
| Static overload of executeQueued() for three arguments. | |
| static bool | executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3) |
| Static overload of executeQueued() for four arguments. | |
| static PIObject::Connection | piConnect (PIObject *src, const PIString &sig, PIObject *dest_o, void *dest, void *ev_h, void *e_h, int args, const char *loc) |
Low-level direct connection helper behind the legacy CONNECT* macros. | |
| static PIObject::Connection | piConnectU (PIObject *src, const PIString &sig, PIObject *dest_o, void *dest, const PIString &hname, const char *loc, PIObject *performer=0) |
| Low-level name-based connection helper behind CONNECTU() and CONNECTU_QUEUED(). | |
| static PIObject::Connection | piConnectLS (PIObject *src, const PIString &sig, std::function< void()> *f, const char *loc) |
| Low-level helper that connects an event to a lambda or functor wrapper. | |
| static void | piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h) |
| Disconnects source object "src" from a specific destination handler for event "sig". | |
| static void | piDisconnect (PIObject *src, const PIString &sig, PIObject *dest) |
| Disconnects source object "src" from all connections of event "sig" to destination object "dest". | |
| static void | piDisconnect (PIObject *src, const PIString &sig) |
| Disconnects source object "src" from all connections of event "sig". | |
| static void | raiseEvent (PIObject *sender, const uint eventID) |
| Internal event delivery helper for registered events without arguments. | |
| template<typename T0 > | |
| static void | raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0()) |
| Internal event delivery helper for registered events with one argument. | |
| template<typename T0 , typename T1 > | |
| static void | raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1()) |
| Internal event delivery helper for registered events with two arguments. | |
| template<typename T0 , typename T1 , typename T2 > | |
| static void | raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1(), const T2 &v2=T2()) |
| Internal event delivery helper for registered events with three arguments. | |
| template<typename T0 , typename T1 , typename T2 , typename T3 > | |
| static void | raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1(), const T2 &v2=T2(), const T3 &v3=T3()) |
| Internal event delivery helper for registered events with four arguments. | |
| static PIObject * | findByName (const PIString &name) |
Returns the first live object with name "name", or nullptr. | |
| static bool | isPIObject (const PIObject *o) |
| Returns whether "o" points to a live PIObject instance. | |
| static bool | isPIObject (const void *o) |
| Overload of isPIObject() for an untyped pointer. | |
| template<typename T > | |
| static bool | isTypeOf (const PIObject *o) |
| Returns whether "o" belongs to class "T" or one of its registered descendants. | |
| template<typename T > | |
| static bool | isTypeOf (const void *o) |
| Overload of isTypeOf() for an untyped pointer. | |
| static PIString | simplifyType (const char *a, bool readable=true) |
| Simplifies a C++ type spelling for registered-method metadata. | |
Events | |
| void | disconnected (PIString reason) |
| Raised when the handshake is aborted or an established session is dropped. | |
| void | connected (PIString info) |
| Raised after the peer reaches state Connected. | |
| void | authorize (PIByteArray info, bool *ok) |
| Client-side callback used to approve an unknown server and optionally trust its signing key. | |
| void | passwordRequest (PIString *pass) |
| Client-side callback requesting the server password. | |
| void | passwordCheck (bool result) |
| Server-side callback reporting the result of client password validation. | |
Additional Inherited Members | |
Protected Member Functions inherited from PIObject | |
| PIObject * | emitter () const |
| Returns the source object that raised the current event. More... | |
| virtual void | propertyChanged (const char *name) |
| Virtual method called after property "name" has been changed by setProperty(). | |
Related Functions inherited from PIObject | |
| #define | piCoutObj |
| Macro used for conditional (piDebug && PIObject::debug()) output to PICout(StdOut) for subclasses of PIObject. | |
| #define | piCerrObj |
| Macro used for conditional (piDebug && PIObject::debug()) output to PICout(StdErr) for subclasses of PIObject. | |
| #define | PIOBJECT(name) |
| Put this macro inside a direct PIObject subclass definition to enable registered events, event handlers and class metadata. | |
| #define | PIOBJECT_SUBCLASS(name, parent) |
| Put this macro inside a PIObject subclass definition to inherit registered methods and class scope from "parent". | |
| #define | EVENT_HANDLER0(ret, name) ret name() |
Declare a registered event handler method with signature ret name(). | |
| #define | EVENT_HANDLER1(ret, name, type0, var0) ret name(type0 var0) |
| Declare a registered event handler method with one argument. | |
| #define | EVENT_HANDLER2(ret, name, type0, var0, type1, var1) ret name(type0 var0, type1 var1) |
| Declare a registered event handler method with two arguments. | |
| #define | EVENT_HANDLER3(ret, name, type0, var0, type1, var1, type2, var2) ret name(type0 var0, type1 var1, type2 var2) |
| Declare a registered event handler method with three arguments. | |
| #define | EVENT_HANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Declare a registered event handler method with four arguments. | |
| #define | EVENT_HANDLER EVENT_HANDLER0 |
| Synonym of EVENT_HANDLER0. | |
| #define | EVENT_VHANDLER0(ret, name) virtual ret name() |
Declare a virtual registered event handler method with signature virtual ret name(). | |
| #define | EVENT_VHANDLER1(ret, name, type0, var0) virtual ret name(type0 var0) |
| Declare a virtual registered event handler method with one argument. | |
| #define | EVENT_VHANDLER2(ret, name, type0, var0, type1, var1) virtual ret name(type0 var0, type1 var1) |
| Declare a virtual registered event handler method with two arguments. | |
| #define | EVENT_VHANDLER3(ret, name, type0, var0, type1, var1, type2, var2) virtual ret name(type0 var0, type1 var1, type2 var2) |
| Declare a virtual registered event handler method with three arguments. | |
| #define | EVENT_VHANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Declare a virtual registered event handler method with four arguments. | |
| #define | EVENT_VHANDLER EVENT_VHANDLER0 |
| Synonym of EVENT_VHANDLER0. | |
| #define | EVENT0(name) void name(); |
| Declare an event method with no arguments. | |
| #define | EVENT1(name, type0, var0) void name(type0 var0); |
| Declare an event method with one argument. | |
| #define | EVENT2(name, type0, var0, type1, var1) void name(type0 var0, type1 var1); |
| Declare an event method with two arguments. | |
| #define | EVENT3(name, type0, var0, type1, var1, type2, var2) void name(type0 var0, type1 var1, type2 var2); |
| Declare an event method with three arguments. | |
| #define | EVENT4(name, type0, var0, type1, var1, type2, var2, type3, var3) void name(type0 var0, type1 var1, type2 var2, type3 var3); |
| Declare an event method with four arguments. | |
| #define | EVENT EVENT0 |
| Synonym of EVENT0. | |
| #define | RAISE_EVENT0(src, event) |
| Compatibility helper that raises event "event" on source object "src". | |
| #define | RAISE_EVENT1(src, event, v0) |
| Compatibility helper that raises event "event" with one argument. | |
| #define | RAISE_EVENT2(src, event, v0, v1) |
| Compatibility helper that raises event "event" with two arguments. | |
| #define | RAISE_EVENT3(src, event, v0, v1, v2) |
| Compatibility helper that raises event "event" with three arguments. | |
| #define | RAISE_EVENT4(src, event, v0, v1, v2, v3) |
| Compatibility helper that raises event "event" with four arguments. | |
| #define | CONNECTU(src, event, dest, handler) |
| Connect event "event" from object "src" to event handler or event "handler" of object "dest". More... | |
| #define | CONNECTU_QUEUED(src, event, dest, handler, performer) |
| Connect event "event" from object "src" to event handler or event "handler" of object "dest". More... | |
| #define | CONNECTL(src, event, functor) |
| Connect event "event" from object "src" to lambda-expression "functor". More... | |
| #define | CONNECT0(ret, src, event, dest, handler) |
| Legacy compatibility helper that connects an event to a registered handler with compile-time signature spelling. More... | |
| #define | CONNECT1(ret, type0, src, event, dest, handler) |
| Legacy compatibility helper for a one-argument registered event or handler. More... | |
| #define | CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Legacy compatibility helper for a two-argument registered event or handler. More... | |
| #define | CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Legacy compatibility helper for a three-argument registered event or handler. More... | |
| #define | CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Legacy compatibility helper for a four-argument registered event or handler. More... | |
| #define | CONNECT CONNECT0 |
| Synonym of CONNECT0. More... | |
| #define | WEAK_CONNECT0(ret, src, event, dest, handler) |
| Legacy compatibility helper that skips source method verification. More... | |
| #define | WEAK_CONNECT1(ret, type0, src, event, dest, handler) |
| Legacy compatibility helper that skips source method verification for one argument. More... | |
| #define | WEAK_CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Legacy compatibility helper that skips source method verification for two arguments. More... | |
| #define | WEAK_CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Legacy compatibility helper that skips source method verification for three arguments. More... | |
| #define | WEAK_CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Legacy compatibility helper that skips source method verification for four arguments. More... | |
| #define | WEAK_CONNECT WEAK_CONNECT0 |
| Synonym of WEAK_CONNECT0. More... | |
| #define | DISCONNECT0(ret, src, event, dest, handler) |
| Disconnect a registered event from a registered event handler. | |
| #define | DISCONNECT1(ret, type0, src, event, dest, handler) |
| Disconnect a one-argument registered event from a registered event handler. | |
| #define | DISCONNECT2(ret, type0, type1, src, event, dest, handler) |
| Disconnect a two-argument registered event from a registered event handler. | |
| #define | DISCONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Disconnect a three-argument registered event from a registered event handler. | |
| #define | DISCONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Disconnect a four-argument registered event from a registered event handler. | |
| #define | DISCONNECT DISCONNECT0 |
| Synonym of DISCONNECT0. | |
| #define | HANDLER(handler) |
| Low-level helper that expands to the registered handler entry point. | |
Peer authentication state machine with signed key exchange.
| enum PIAuth::State |
Handshake state.