diff options
author | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-09-16 21:19:02 +0000 |
---|---|---|
committer | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-09-16 21:19:02 +0000 |
commit | 40fdc8a404e75ab03b68cc62e9987cf208fd8c30 (patch) | |
tree | 37d9c4d3abe4aefd8a34ed797883dd2cd4862ca7 /TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_EVP_PKEY.inl | |
parent | c254b281f1b9a4ca19dd0c3ee73a0654a7718909 (diff) | |
download | ATCD-typecode-overhaul.tar.gz |
This commit was manufactured by cvs2svn to create branchtypecode-overhaul
'typecode-overhaul'.
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_EVP_PKEY.inl')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_EVP_PKEY.inl | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_EVP_PKEY.inl b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_EVP_PKEY.inl new file mode 100644 index 00000000000..e20b30e774d --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_EVP_PKEY.inl @@ -0,0 +1,129 @@ +// -*- C++ -*- +// +// $Id$ + +ACE_INLINE ::EVP_PKEY * +TAO::SSLIOP::_duplicate (::EVP_PKEY *key) +{ + // OpenSSL provides no function to increase the reference count on + // the EVP_PKEY structure, so we do it manually. + if (key != 0) + CRYPTO_add (&(key->references), 1, CRYPTO_LOCK_EVP_PKEY); + + return key; +} + +ACE_INLINE void +TAO::SSLIOP::release (::EVP_PKEY *key) +{ + // OpenSSL's EVP_PKEY_free() function already handles reference + // counting properly. + ::EVP_PKEY_free (key); +} + + +// ------------------------------------------------------------------- + +ACE_INLINE +TAO::SSLIOP::EVP_PKEY_var::EVP_PKEY_var (void) + : evp_ (0) +{ +} + +ACE_INLINE +TAO::SSLIOP::EVP_PKEY_var::EVP_PKEY_var (::EVP_PKEY *x) + : evp_ (x) +{ +} + +ACE_INLINE +TAO::SSLIOP::EVP_PKEY_var::EVP_PKEY_var (const TAO::SSLIOP::EVP_PKEY_var &p) + : TAO_Base_var (), + evp_ (TAO::SSLIOP::_duplicate (p.ptr ())) +{ +} + +ACE_INLINE +TAO::SSLIOP::EVP_PKEY_var::~EVP_PKEY_var (void) +{ + TAO::SSLIOP::release (this->evp_); +} + +ACE_INLINE TAO::SSLIOP::EVP_PKEY_var & +TAO::SSLIOP::EVP_PKEY_var::operator= (::EVP_PKEY *p) +{ + TAO::SSLIOP::release (this->evp_); + this->evp_ = p; + return *this; +} + +ACE_INLINE TAO::SSLIOP::EVP_PKEY_var & +TAO::SSLIOP::EVP_PKEY_var::operator= (const TAO::SSLIOP::EVP_PKEY_var &p) +{ + if (this != &p) + { + TAO::SSLIOP::release (this->evp_); + this->evp_ = TAO::SSLIOP::_duplicate (p.ptr ()); + } + + return *this; +} + +ACE_INLINE const ::EVP_PKEY * +TAO::SSLIOP::EVP_PKEY_var::operator-> (void) const +{ + return this->evp_; +} + +ACE_INLINE ::EVP_PKEY * +TAO::SSLIOP::EVP_PKEY_var::operator-> (void) +{ + return this->evp_; +} + +ACE_INLINE +TAO::SSLIOP::EVP_PKEY_var::operator const ::EVP_PKEY &() const +{ + return *this->evp_; +} + +ACE_INLINE +TAO::SSLIOP::EVP_PKEY_var::operator ::EVP_PKEY &() +{ + return *this->evp_; +} + +ACE_INLINE ::EVP_PKEY * +TAO::SSLIOP::EVP_PKEY_var::in (void) const +{ + return this->evp_; +} + +ACE_INLINE ::EVP_PKEY *& +TAO::SSLIOP::EVP_PKEY_var::inout (void) +{ + return this->evp_; +} + +ACE_INLINE ::EVP_PKEY *& +TAO::SSLIOP::EVP_PKEY_var::out (void) +{ + EVP_PKEY_free (this->evp_); + this->evp_ = 0; + return this->evp_; +} + +ACE_INLINE ::EVP_PKEY * +TAO::SSLIOP::EVP_PKEY_var::_retn (void) +{ + // Yield ownership of the EVP_PKEY structure. + ::EVP_PKEY *x = this->evp_; + this->evp_ = 0; + return x; +} + +ACE_INLINE ::EVP_PKEY * +TAO::SSLIOP::EVP_PKEY_var::ptr (void) const +{ + return this->evp_; +} |