NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
ndnSIM
ndnSIM documentation
All Attributes
All GlobalValues
All LogComponents
All TraceSources
Todo List
Deprecated List
Modules
Namespaces
Classes
Files
File List
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
openssl-helper.cpp
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2013-2017 Regents of the University of California.
4
*
5
* This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
6
*
7
* ndn-cxx library is free software: you can redistribute it and/or modify it under the
8
* terms of the GNU Lesser General Public License as published by the Free Software
9
* Foundation, either version 3 of the License, or (at your option) any later version.
10
*
11
* ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14
*
15
* You should have received copies of the GNU General Public License and GNU Lesser
16
* General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17
* <http://www.gnu.org/licenses/>.
18
*
19
* See AUTHORS.md for complete list of ndn-cxx authors and contributors.
20
*/
21
22
#include "
openssl-helper.hpp
"
23
24
namespace
ndn
{
25
namespace
security
{
26
namespace
detail {
27
28
const
EVP_MD*
29
digestAlgorithmToEvpMd
(
DigestAlgorithm
algo)
30
{
31
switch
(algo) {
32
case
DigestAlgorithm::SHA224
:
33
return
EVP_sha224();
34
case
DigestAlgorithm::SHA256
:
35
return
EVP_sha256();
36
case
DigestAlgorithm::SHA384
:
37
return
EVP_sha384();
38
case
DigestAlgorithm::SHA512
:
39
return
EVP_sha512();
40
default
:
41
return
nullptr
;
42
}
43
}
44
45
int
46
getEvpPkeyType
(EVP_PKEY* key)
47
{
48
return
49
#if OPENSSL_VERSION_NUMBER < 0x1010000fL
50
EVP_PKEY_type(key->type);
51
#else
52
EVP_PKEY_base_id(key);
53
#endif // OPENSSL_VERSION_NUMBER < 0x1010000fL
54
}
55
56
EvpMdCtx::EvpMdCtx
()
57
#if OPENSSL_VERSION_NUMBER < 0x1010000fL
58
: m_ctx(EVP_MD_CTX_create())
59
#else
60
: m_ctx(EVP_MD_CTX_new())
61
#endif
62
{
63
if
(m_ctx ==
nullptr
)
64
BOOST_THROW_EXCEPTION(std::runtime_error(
"EVP_MD_CTX creation failed"
));
65
}
66
67
EvpMdCtx::~EvpMdCtx
()
68
{
69
#if OPENSSL_VERSION_NUMBER < 0x1010000fL
70
EVP_MD_CTX_destroy(m_ctx);
71
#else
72
EVP_MD_CTX_free(m_ctx);
73
#endif
74
}
75
76
EvpPkeyCtx::EvpPkeyCtx
(EVP_PKEY* key)
77
: m_ctx(EVP_PKEY_CTX_new(key, nullptr))
78
{
79
if
(m_ctx ==
nullptr
)
80
BOOST_THROW_EXCEPTION(std::runtime_error(
"EVP_PKEY_CTX creation failed"
));
81
}
82
83
EvpPkeyCtx::EvpPkeyCtx
(
int
id
)
84
: m_ctx(EVP_PKEY_CTX_new_id(id, nullptr))
85
{
86
if
(m_ctx ==
nullptr
)
87
BOOST_THROW_EXCEPTION(std::runtime_error(
"EVP_PKEY_CTX creation failed"
));
88
}
89
90
EvpPkeyCtx::~EvpPkeyCtx
()
91
{
92
EVP_PKEY_CTX_free(m_ctx);
93
}
94
95
Bio::Bio
(
Bio::MethodPtr
method
)
96
: m_bio(BIO_new(method))
97
{
98
if
(m_bio ==
nullptr
)
99
BOOST_THROW_EXCEPTION(std::runtime_error(
"BIO creation failed"
));
100
}
101
102
Bio::~Bio
()
103
{
104
BIO_free_all(m_bio);
105
}
106
107
bool
108
Bio::read
(uint8_t* buf,
size_t
buflen)
const
noexcept
109
{
110
BOOST_ASSERT(buflen <= std::numeric_limits<int>::max());
111
int
n = BIO_read(m_bio, buf, static_cast<int>(buflen));
112
return
n >= 0 &&
static_cast<
size_t
>
(n) == buflen;
113
}
114
115
bool
116
Bio::write
(
const
uint8_t* buf,
size_t
buflen) noexcept
117
{
118
BOOST_ASSERT(buflen <= std::numeric_limits<int>::max());
119
int
n = BIO_write(m_bio, buf, static_cast<int>(buflen));
120
return
n >= 0 &&
static_cast<
size_t
>
(n) == buflen;
121
}
122
123
}
// namespace detail
124
}
// namespace security
125
}
// namespace ndn
ndn
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-strategy-choice-helper.hpp:34
ndn::security::detail::getEvpPkeyType
int getEvpPkeyType(EVP_PKEY *key)
Definition:
openssl-helper.cpp:46
ndn::DigestAlgorithm::SHA224
websocketpp::http::parser::state::method
Definition:
parser.hpp:45
ndn::security::detail::Bio::~Bio
~Bio()
Definition:
openssl-helper.cpp:102
websocketpp::transport::asio::socket::error::security
Catch-all error for security policy errors that don't fit in other categories.
Definition:
base.hpp:79
ndn::security::detail::EvpPkeyCtx::~EvpPkeyCtx
~EvpPkeyCtx()
Definition:
openssl-helper.cpp:90
ndn::security::detail::Bio::Bio
Bio(MethodPtr method)
Definition:
openssl-helper.cpp:95
ndn::security::detail::EvpPkeyCtx::EvpPkeyCtx
EvpPkeyCtx(EVP_PKEY *key)
Definition:
openssl-helper.cpp:76
ndn::security::detail::Bio::read
bool read(uint8_t *buf, size_t buflen) const noexcept
Definition:
openssl-helper.cpp:108
ndn::security::detail::digestAlgorithmToEvpMd
const EVP_MD * digestAlgorithmToEvpMd(DigestAlgorithm algo)
Definition:
openssl-helper.cpp:29
ndn::security::detail::EvpMdCtx::~EvpMdCtx
~EvpMdCtx()
Definition:
openssl-helper.cpp:67
ndn::KeyIdType::SHA256
Use the SHA256 hash of the public key as the key id.
ndn::security::detail::Bio::MethodPtr
BIO_METHOD * MethodPtr
Definition:
openssl-helper.hpp:78
ndn::DigestAlgorithm::SHA512
ndn::DigestAlgorithm::SHA384
ndn::security::detail::EvpMdCtx::EvpMdCtx
EvpMdCtx()
Definition:
openssl-helper.cpp:56
openssl-helper.hpp
ndn::DigestAlgorithm
DigestAlgorithm
Definition:
security-common.hpp:105
ndn::security::detail::Bio::write
bool write(const uint8_t *buf, size_t buflen) noexcept
Definition:
openssl-helper.cpp:116
ndnSIM
ndn-cxx
src
security
detail
openssl-helper.cpp
Generated on Thu Nov 2 2017 03:30:28 for ndnSIM by
1.8.11