OpenDDS  Snapshot(2023/04/28-20:55)
Public Member Functions | Private Attributes | List of all members
OpenDDS::Security::CredentialHash Class Reference

#include <LocalAuthCredentialData.h>

Collaboration diagram for OpenDDS::Security::CredentialHash:
Collaboration graph
[legend]

Public Member Functions

 CredentialHash (const SSL::Certificate &cid, const SSL::DiffieHellman &dh, const DDS::OctetSeq &cpdata, const DDS::OctetSeq &cperm)
 
int operator() (DDS::OctetSeq &dst) const
 

Private Attributes

const SSL::Certificatepubcert_
 
const SSL::DiffieHellmandh_
 
const DDS::OctetSeqparticipant_topic_data_
 
const DDS::OctetSeqpermissions_data_
 

Detailed Description

Definition at line 25 of file LocalAuthCredentialData.h.

Constructor & Destructor Documentation

◆ CredentialHash()

OpenDDS::Security::CredentialHash::CredentialHash ( const SSL::Certificate cid,
const SSL::DiffieHellman dh,
const DDS::OctetSeq cpdata,
const DDS::OctetSeq cperm 
)
inline

Definition at line 28 of file LocalAuthCredentialData.h.

29  : pubcert_(cid), dh_(dh), participant_topic_data_(cpdata), permissions_data_(cperm)
30  {
31  }

Member Function Documentation

◆ operator()()

int OpenDDS::Security::CredentialHash::operator() ( DDS::OctetSeq dst) const

Definition at line 25 of file LocalAuthCredentialData.cpp.

References OpenDDS::Security::SSL::hash_serialized(), DDS::BinaryProperty_t::name, DDS::BinaryProperty_t::propagate, and DDS::BinaryProperty_t::value.

26 {
27  const DDS::OctetSeq& perm_data = permissions_data_;
28  const DDS::OctetSeq& topic_data = participant_topic_data_;
29 
30  DDS::BinaryPropertySeq hash_data;
31  DCPS::SequenceBackInsertIterator<DDS::BinaryPropertySeq> inserter(hash_data);
32 
33  DDS::BinaryProperty_t cid, cperm, cpdata, cdsign_algo, ckagree_algo;
34 
35  cid.name = "c.id";
37  cid.propagate = true;
38 
39  cperm.name = "c.perm";
40  cperm.value = perm_data;
41  cperm.propagate = true;
42 
43  cpdata.name = "c.pdata";
44  cpdata.value = topic_data;
45  cpdata.propagate = true;
46 
47  cdsign_algo.name = "c.dsign_algo";
48  const char* cdsign_algo_str = pubcert_.dsign_algo();
49  cdsign_algo.value.length(static_cast<unsigned int>(std::strlen(cdsign_algo_str)) + 1);
50  std::memcpy(cdsign_algo.value.get_buffer(), cdsign_algo_str, cdsign_algo.value.length());
51  cdsign_algo.propagate = true;
52 
53  ckagree_algo.name = "c.kagree_algo";
54  const char* ckagree_algo_str = dh_.kagree_algo();
55  ckagree_algo.value.length(static_cast<unsigned int>(std::strlen(ckagree_algo_str)) + 1);
56  std::memcpy(ckagree_algo.value.get_buffer(), ckagree_algo_str, ckagree_algo.value.length());
57  ckagree_algo.propagate = true;
58 
59  *inserter = cid;
60  *inserter = cperm;
61  *inserter = cpdata;
62  *inserter = cdsign_algo;
63  *inserter = ckagree_algo;
64 
65  return SSL::hash_serialized(hash_data, dst);
66 }
const DDS::OctetSeq & original_bytes() const
Definition: Certificate.h:90
int hash_serialized(const DDS::BinaryPropertySeq &src, DDS::OctetSeq &dst)
const char * dsign_algo() const
Definition: Certificate.h:92
DDS::BinaryPropertySeq BinaryPropertySeq
sequence< octet > OctetSeq
Definition: DdsDcpsCore.idl:64

Member Data Documentation

◆ dh_

const SSL::DiffieHellman& OpenDDS::Security::CredentialHash::dh_
private

Definition at line 37 of file LocalAuthCredentialData.h.

◆ participant_topic_data_

const DDS::OctetSeq& OpenDDS::Security::CredentialHash::participant_topic_data_
private

Definition at line 38 of file LocalAuthCredentialData.h.

◆ permissions_data_

const DDS::OctetSeq& OpenDDS::Security::CredentialHash::permissions_data_
private

Definition at line 39 of file LocalAuthCredentialData.h.

◆ pubcert_

const SSL::Certificate& OpenDDS::Security::CredentialHash::pubcert_
private

Definition at line 36 of file LocalAuthCredentialData.h.


The documentation for this class was generated from the following files: