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

Public Member Functions

 deserialize_impl (const DDS::OctetSeq &src)
 
 ~deserialize_impl ()
 
int operator() (X509 *&dst)
 

Private Attributes

const DDS::OctetSeqsrc_
 
BIO * buffer_
 

Detailed Description

Definition at line 583 of file Certificate.cpp.

Constructor & Destructor Documentation

◆ deserialize_impl()

OpenDDS::Security::SSL::deserialize_impl::deserialize_impl ( const DDS::OctetSeq src)
inlineexplicit

Definition at line 585 of file Certificate.cpp.

586  : src_(src), buffer_(BIO_new(BIO_s_mem()))
587  {}

◆ ~deserialize_impl()

OpenDDS::Security::SSL::deserialize_impl::~deserialize_impl ( )
inline

Definition at line 589 of file Certificate.cpp.

590  {
591  BIO_free(buffer_);
592  }

Member Function Documentation

◆ operator()()

int OpenDDS::Security::SSL::deserialize_impl::operator() ( X509 *&  dst)
inline

Definition at line 594 of file Certificate.cpp.

References ACE_ERROR, LM_WARNING, and OPENDDS_SSL_LOG_ERR.

595  {
596  if (dst) {
597  ACE_ERROR((LM_WARNING,
598  "(%P|%t) SSL::Certificate::deserialize: WARNING, an X509 certificate "
599  "has already been loaded\n"));
600  return 1;
601  }
602 
603  if (0 == src_.length()) {
604  ACE_ERROR((LM_WARNING,
605  "(%P|%t) SSL::Certificate::deserialize: WARNING, source OctetSeq contains no data"));
606  return 1;
607  }
608 
609  if (!buffer_) {
610  OPENDDS_SSL_LOG_ERR("failed to allocate buffer with BIO_new");
611  return 1;
612  }
613 
614  const int len = BIO_write(buffer_, src_.get_buffer(), src_.length());
615  if (len <= 0) {
616  OPENDDS_SSL_LOG_ERR("failed to write OctetSeq to BIO");
617  return 1;
618  }
619 
620  dst = PEM_read_bio_X509_AUX(buffer_, 0, 0, 0);
621  if (! dst) {
622  OPENDDS_SSL_LOG_ERR("failed to read X509 from BIO");
623  return 1;
624  }
625 
626  return 0;
627  }
#define ACE_ERROR(X)
#define OPENDDS_SSL_LOG_ERR(MSG)
Definition: Err.h:12

Member Data Documentation

◆ buffer_

BIO* OpenDDS::Security::SSL::deserialize_impl::buffer_
private

Definition at line 631 of file Certificate.cpp.

◆ src_

const DDS::OctetSeq& OpenDDS::Security::SSL::deserialize_impl::src_
private

Definition at line 630 of file Certificate.cpp.


The documentation for this struct was generated from the following file: