plebble
peer_t.h
Go to the documentation of this file.
1 /*
2 -------------------------------------------------------------------------------
3  PLEBBLE
4 -------------------------------------------------------------------------------
5  Copyright (C) 2019-2020 KATLAS Technology. (http://katlastechnology.com)
6  Copyright (C) 2017-2020 Marcos Mayorga. (mm@mm-studios.com)
7 
8  This file is part of our Plebble(R) Platform.
9 
10  The code below cannot be copied, used for any purpose other than the one
11  agreed and/or distributed without the express permission of
12  KATLAS Technology.
13 -------------------------------------------------------------------------------
14 
15 
16 */
17 #ifndef USGOV_623b2ff2c7648665400db382bc9542b909646b0c7f35010ee4d34b7a4e819d4c
18 #define USGOV_623b2ff2c7648665400db382bc9542b909646b0c7f35010ee4d34b7a4e819d4c
19 
20 #include <us/gov/id/peer_t.h>
21 #include <us/gov/config.h>
22 
23 namespace us{ namespace gov {
24 namespace auth {
25 using namespace std;
26 
27  struct peer_t: id::peer_t {
28  typedef id::peer_t b;
29  enum stage_t {
30  denied=0,
32  num_stages
33  };
34  constexpr static array<const char*,num_stages> stagestr={"denied","authorized"};
35 
36  #if CFG_COUNTERS==1
37  struct counters_t {
38  uint32_t successful_verifications{0};
39  uint32_t failed_verifications{0};
40  uint32_t successful_authorizations{0};
41  uint32_t failed_authorizations{0};
42 
43  void dump(ostream&os) const;
44  };
45  static counters_t counters;
46  #endif
47 
48  peer_t(int sock=-1);
49  ~peer_t() override;
50  //virtual const keys& get_keys() const=0;
51  void verification_completed(uint16_t rpport) override;
52  virtual bool authorize(const pub_t& p, uint16_t pin) const=0;
53  void dump_all(const string& prefix, ostream& os) const override;
54  void dump(const string& prefix, ostream& os) const;
55 
56  stage_t stage{denied};
57  };
58 
59 }
60 }}
61 
62 #endif
63 
64 
us::gov::id::peer_t::role_peer
@ role_peer
Definition: peer_t.h:53
anonymous_namespace{daemon.cpp}::age
string age(chrono::system_clock::time_point time)
Definition: daemon.cpp:263
us::gov.protocol.gov_id_request
static readonly short gov_id_request
Definition: protocol.cs:38
us::gov::id::peer_t::connect
ko connect(const string &host, uint16_t port, uint16_t pport, role_t, bool block)
us::is_ko
static bool is_ko(const std::string &s)
Definition: ko.h:30
us::gov::auth::peer_t::dump_all
void dump_all(const string &prefix, ostream &os) const override
us::gov.protocol::svc_encrypted_from
static constexpr uint16_t svc_encrypted_from
Definition: protocol.h:26
networking.h
us::gov::id::peer_t::stage_peer
stage_t stage_peer
Definition: peer_t.h:114
us::gov::id::peer_t::process_peer_challenge
void process_peer_challenge(datagram *d, const keys &)
CFG_AUTH_TIMEOUT_SECS
#define CFG_AUTH_TIMEOUT_SECS
Definition: config.h:38
us::gov::id::peer_t::handshake_t::handshake_t
handshake_t()
Definition: peer_t.cpp:336
us::gov::id::peer_t::get_keys
virtual const keys & get_keys() const
us.ko
Definition: ko.java:20
us::gov::socket::datagram::decode_sequence
uint16_t decode_sequence() const
us::gov::id::peer_t::se
crypto::symmetric_encryption * se
Definition: peer_t.h:121
vcs.h
protocol.h
us::gov::socket::datagram::encrypt
pair< ko, datagram * > encrypt(crypto::symmetric_encryption &) const
us::gov::dfs::peer_t
relay::peer_t peer_t
Definition: daemon.h:31
us
Definition: daemon.h:22
unlikely
#define unlikely(x)
Definition: likely.h:30
us::gov::auth::peer_t::authorized
@ authorized
Definition: peer_t.h:31
us::gov::crypto::symmetric_encryption::init
ko init(const keys::priv_t &sk, const keys::pub_t &pub_other)
us.pair.first
f first
Definition: pair.java:20
us.vcs::codehash
string codehash
Definition: vcs.h:30
us::gov::socket::client::is_finished
bool is_finished() const
Definition: client.h:95
likely.h
us::gov::id::peer_t::handshake_t::parse_role
role_t parse_role() const
Definition: peer_t.cpp:352
us::gov::auth::peer_t::b
id::peer_t b
Definition: peer_t.h:28
us::gov::peer
Definition: daemon.h:40
us::gov::id::peer_t::role
role_t role
Definition: peer_t.h:116
c
us::gov::auth::peer_t c
Definition: peer_t.cpp:22
us::gov::id::peer_t::handshakes_t::~handshakes_t
~handshakes_t()
Definition: peer_t.cpp:319
daemon.h
us::gov::crypto::sha256::output_size
static constexpr uint32_t output_size
Definition: sha256.h:35
us::gov::crypto::ec::keys::pub_t
Definition: ec.h:44
protocol.h
us::gov::id::peer_t::handshake_t::parse_pin
uint16_t parse_pin() const
Definition: peer_t.cpp:348
us::gov::crypto::ec::keys::get_pubkey
static pub_t get_pubkey(const priv_t &privkey)
us::gov::id::peer_t::handshake_t
Definition: peer_t.h:93
us::gov::socket::datagram
Definition: datagram.h:44
us::gov::id::peer_t::rolestr
constexpr static array< const char *, num_roles > rolestr
Definition: peer_t.h:58
us::gov::socket::peer_t::process_work
bool process_work(datagram *d)
us::gov::engine::peer_t
Definition: peer_t.h:27
peer_t.h
us::gov::auth::daemon
id::daemon daemon
Definition: daemon.h:25
us::gov::id::peer_t::pubkey
pub_t pubkey
Definition: peer_t.h:117
us::gov::id
Definition: daemon.h:24
us::gov::id::peer_t.verification_completed
virtual void verification_completed()
Definition: peer_t.cs:214
us::gov::id::peer_t.stage_t::verified
@ verified
Definition: peer_t.h:46
us::gov::id::peer_t::handshakes_t::peer
handshake_t * peer
Definition: peer_t.h:111
us::gov::auth::peer_t
Definition: peer_t.h:27
us::gov::socket
Definition: busyled.h:23
us::gov::socket::datagram::service
uint16_t service
Definition: datagram.h:200
us::gov::engine::auth::pub_t
peer::daemon::pub_t pub_t
Definition: auth_app.h:53
us::gov::auth::peer_t::dump
void dump(const string &prefix, ostream &os) const
us::gov::auth::peer_t::peer_t
peer_t(int sock=-1)
us::gov::id::peer_t::handshakes_t::me
handshake_t * me
Definition: peer_t.h:110
us.pair.second
s second
Definition: pair.java:21
us::gov::id::peer_t.role_t
Definition: peer_t.java:71
us::gov::socket::client::parent
server * parent
Definition: client.h:107
us::gov::peer::peer_t
Definition: peer_t.h:38
us::gov::id::daemon
Definition: daemon.h:28
us::gov::id::peer_t::stage_t
stage_t
Definition: peer_t.h:44
us::gov::auth::peer_t::stage
stage_t stage
Definition: peer_t.h:56
peer_t.h
us::ko
const ko_t * ko
Definition: ko.h:27
us::gov::socket::datagram::decode_service
uint16_t decode_service() const
datagram.h
us::gov::socket::client.disconnect
void disconnect()
Definition: client.cs:81
us::gov::auth::peer_t.stage_t
Definition: peer_t.java:23
us::ok
static constexpr ko ok
Definition: ko.h:28
us::gov::auth::peer_t::verification_completed
void verification_completed(uint16_t rpport) override
us::gov::id::peer_t.stage_t::verified_fail
@ verified_fail
Definition: peer_t.h:47
us::gov::auth::peer_t::authorize
virtual bool authorize(const pub_t &p, uint16_t pin) const =0
us::gov::id::peer_t::handshake_t::dump
void dump(const string &pfx, ostream &os) const
Definition: peer_t.cpp:356
us::gov::cash::keys
crypto::ec::keys keys
Definition: app.h:52
us::gov::id::peer_t::version_fingerprint
uint16_t version_fingerprint
Definition: peer_t.h:118
us::gov::socket::client::connect0
ko connect0(uint32_t host, uint16_t port, bool block)
us::gov::id::peer_t::handshakes_t::handshakes_t
handshakes_t()
Definition: peer_t.cpp:315
us::gov::id::peer_t::handshake_t::msg
sigmsg_hash_t msg
Definition: peer_t.h:104
us::gov::socket::peer_t
Definition: peer_t.h:28
likely
#define likely(x)
Definition: likely.h:29
us::gov::engine::networking
Definition: networking.h:32
us::gov::socket::datagram.size
long size()
Definition: datagram.cs:178
us::gov::engine
Definition: hmi.h:32
us::gov::socket::datagram::parse
ko parse(vector< t > &content) const
Definition: datagram.h:170
std
Definition: app.h:380
us::gov::auth::peer_t::denied
@ denied
Definition: peer_t.h:30
us::gov::crypto::b58::encode
std::string encode(const std::string &s)
Definition: base58.cpp:62
us::gov::id::peer_t::process_challenge_response
void process_challenge_response(datagram *d)
us::gov::socket::client::send1
virtual ko send1(datagram *)
us::gov::id::peer_t::cv_auth
condition_variable cv_auth
Definition: peer_t.h:120
us::gov::crypto::ec::keys
Definition: ec.h:43
config.h
base58.h
us::gov::id::peer_t::mx_auth
mutex mx_auth
Definition: peer_t.h:119
us.stdint.uint16_t
Definition: stdint.java:95
us::gov::socket::datagram::parse_string
string parse_string() const
us::gov::socket::client::since
chrono::system_clock::time_point since
Definition: client.h:71
us::gov::id::peer_t::role_device
@ role_device
Definition: peer_t.h:55
us::gov::auth::peer_t::~peer_t
~peer_t() override
us::gov.protocol.gov_id_peer_challenge
static readonly short gov_id_peer_challenge
Definition: protocol.cs:39
us::gov::socket::peer_t::security_level
pair< security_level_t, string > security_level() const override
us::gov.protocol.gov_id_challenge_response
static readonly short gov_id_challenge_response
Definition: protocol.cs:40
us.pair
Definition: pair.java:19
gov.h
us::gov::id::peer_t
Definition: peer_t.h:35
us::gov::id::peer_t::KO_6017
static const char * KO_6017
Definition: peer_t.h:42
us::gov::peer::daemon
Definition: daemon.h:51
us::gov::id::peer_t::dump_all
virtual void dump_all(const string &prefix, ostream &os) const override
us::gov::id::peer_t::handshake_t::parse_pport
uint16_t parse_pport() const
Definition: peer_t.cpp:344
log
#define log
Definition: gov.h:83
logdump
#define logdump
Definition: gov.h:84
us::gov::peer::daemon::nodes
nodes_t nodes
Definition: daemon.h:170
us::gov::id::peer_t::process_request
void process_request(datagram *d, const keys &)
us::gov::socket::datagram::decrypt
pair< ko, datagram * > decrypt(crypto::symmetric_encryption &) const
us::gov::id::peer_t::handshake_t::parse_version_fingerprint
uint16_t parse_version_fingerprint() const
Definition: peer_t.cpp:340