NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
ndn::security::transform::PrivateKey Class Reference

Abstraction of private key in crypto transformation. More...

#include <private-key.hpp>

Inheritance diagram for ndn::security::transform::PrivateKey:
Collaboration diagram for ndn::security::transform::PrivateKey:

Classes

class  Error
 
class  Impl
 

Public Types

typedef function< int(char *buf, size_t bufSize, bool shouldConfirm)> PasswordCallback
 Callback for application to handle password input. More...
 

Public Member Functions

 PrivateKey ()
 Create a private key instance. More...
 
 ~PrivateKey ()
 
void loadPkcs1 (const uint8_t *buf, size_t size)
 Load the private key in PKCS#1 format from a buffer buf. More...
 
void loadPkcs1 (std::istream &is)
 Load the private key in PKCS#1 format from a stream is. More...
 
void loadPkcs1Base64 (const uint8_t *buf, size_t size)
 Load the private key in base64-encoded PKCS#1 format from a buffer buf. More...
 
void loadPkcs1Base64 (std::istream &is)
 Load the private key in base64-encoded PKCS#1 format from a stream is. More...
 
void loadPkcs8 (const uint8_t *buf, size_t size, const char *pw, size_t pwLen)
 Load the private key in encrypted PKCS#8 format from a buffer buf with passphrase pw. More...
 
void loadPkcs8 (const uint8_t *buf, size_t size, PasswordCallback pwCallback=nullptr)
 Load the private key in encrypted PKCS#8 format from a buffer buf with passphrase obtained from pwCallback. More...
 
void loadPkcs8 (std::istream &is, const char *pw, size_t pwLen)
 Load the private key in encrypted PKCS#8 format from a stream is with passphrase pw. More...
 
void loadPkcs8 (std::istream &is, PasswordCallback pwCallback=nullptr)
 Load the private key in encrypted PKCS#8 format from a stream is with passphrase obtained from pwCallback. More...
 
void loadPkcs8Base64 (const uint8_t *buf, size_t size, const char *pw, size_t pwLen)
 Load the private key in base64-encoded encrypted PKCS#8 format from a buffer buf with passphrase pw. More...
 
void loadPkcs8Base64 (const uint8_t *buf, size_t size, PasswordCallback pwCallback=nullptr)
 Load the private key in encrypted PKCS#8 format from a buffer buf with passphrase obtained from pwCallback. More...
 
void loadPkcs8Base64 (std::istream &is, const char *pw, size_t pwLen)
 Load the private key in base64-encoded encrypted PKCS#8 format from a stream is with passphrase pw. More...
 
void loadPkcs8Base64 (std::istream &is, PasswordCallback pwCallback=nullptr)
 Load the private key in base64-encoded encrypted PKCS#8 format from a stream is with passphrase obtained from pwCallback. More...
 
void savePkcs1 (std::ostream &os) const
 Save the private key in PKCS#1 format into a stream os. More...
 
void savePkcs1Base64 (std::ostream &os) const
 Save the private key in base64-encoded PKCS#1 format into a stream os. More...
 
void savePkcs8 (std::ostream &os, const char *pw, size_t pwLen) const
 Save the private key in encrypted PKCS#8 format into a stream os. More...
 
void savePkcs8 (std::ostream &os, PasswordCallback pwCallback=nullptr) const
 Save the private key in encrypted PKCS#8 format into a stream os with passphrase obtained from pwCallback. More...
 
void savePkcs8Base64 (std::ostream &os, const char *pw, size_t pwLen) const
 Save the private key in base64-encoded encrypted PKCS#8 format into a stream os. More...
 
void savePkcs8Base64 (std::ostream &os, PasswordCallback pwCallback=nullptr) const
 Save the private key in base64-encoded encrypted PKCS#8 format into a stream os with passphrase obtained from pwCallback. More...
 
ConstBufferPtr derivePublicKey () const
 
ConstBufferPtr decrypt (const uint8_t *cipherText, size_t cipherLen) const
 

Friends

class SignerFilter
 

Detailed Description

Abstraction of private key in crypto transformation.

Definition at line 38 of file private-key.hpp.

Member Typedef Documentation

◆ PasswordCallback

typedef function<int(char* buf, size_t bufSize, bool shouldConfirm)> ndn::security::transform::PrivateKey::PasswordCallback

Callback for application to handle password input.

Password should be stored in buf and should not be longer than size. It is recommended to ask the user to verify the passphrase if shouldConfirm is true, e.g., by prompting for the password twice.

Definition at line 60 of file private-key.hpp.

Constructor & Destructor Documentation

◆ PrivateKey()

ndn::security::transform::PrivateKey::PrivateKey ( )

Create a private key instance.

One must call loadXXXX(...) to load private key.

Definition at line 61 of file private-key.cpp.

References ~PrivateKey().

◆ ~PrivateKey()

ndn::security::transform::PrivateKey::~PrivateKey ( )
default

Referenced by PrivateKey().

Member Function Documentation

◆ loadPkcs1() [1/2]

void ndn::security::transform::PrivateKey::loadPkcs1 ( const uint8_t *  buf,
size_t  size 
)

Load the private key in PKCS#1 format from a buffer buf.

Definition at line 69 of file private-key.cpp.

References ENSURE_PRIVATE_KEY_LOADED, and ndn::security::detail::Bio::get().

Referenced by loadPkcs1(), and loadPkcs1Base64().

◆ loadPkcs1() [2/2]

void ndn::security::transform::PrivateKey::loadPkcs1 ( std::istream &  is)

Load the private key in PKCS#1 format from a stream is.

Definition at line 80 of file private-key.cpp.

References ndn::OBufferStream::buf(), loadPkcs1(), and ndn::security::transform::streamSink().

◆ loadPkcs1Base64() [1/2]

void ndn::security::transform::PrivateKey::loadPkcs1Base64 ( const uint8_t *  buf,
size_t  size 
)

Load the private key in base64-encoded PKCS#1 format from a buffer buf.

Definition at line 88 of file private-key.cpp.

References ndn::security::transform::base64Decode(), ndn::OBufferStream::buf(), loadPkcs1(), and ndn::security::transform::streamSink().

◆ loadPkcs1Base64() [2/2]

void ndn::security::transform::PrivateKey::loadPkcs1Base64 ( std::istream &  is)

Load the private key in base64-encoded PKCS#1 format from a stream is.

Definition at line 96 of file private-key.cpp.

References ndn::security::transform::base64Decode(), ndn::OBufferStream::buf(), loadPkcs1(), and ndn::security::transform::streamSink().

◆ loadPkcs8() [1/4]

void ndn::security::transform::PrivateKey::loadPkcs8 ( const uint8_t *  buf,
size_t  size,
const char *  pw,
size_t  pwLen 
)

Load the private key in encrypted PKCS#8 format from a buffer buf with passphrase pw.

Precondition
strlen(pw) == pwLen

Definition at line 104 of file private-key.cpp.

References ENSURE_PRIVATE_KEY_LOADED, and ndn::security::detail::Bio::get().

Referenced by loadPkcs8(), and loadPkcs8Base64().

◆ loadPkcs8() [2/4]

void ndn::security::transform::PrivateKey::loadPkcs8 ( const uint8_t *  buf,
size_t  size,
PasswordCallback  pwCallback = nullptr 
)

Load the private key in encrypted PKCS#8 format from a buffer buf with passphrase obtained from pwCallback.

The default password callback is provided by OpenSSL

Definition at line 124 of file private-key.cpp.

References ENSURE_PRIVATE_KEY_LOADED, ndn::security::detail::Bio::get(), and ndn::security::transform::passwordCallback().

◆ loadPkcs8() [3/4]

void ndn::security::transform::PrivateKey::loadPkcs8 ( std::istream &  is,
const char *  pw,
size_t  pwLen 
)

Load the private key in encrypted PKCS#8 format from a stream is with passphrase pw.

Precondition
strlen(pw) == pwLen

Definition at line 139 of file private-key.cpp.

References ndn::OBufferStream::buf(), loadPkcs8(), and ndn::security::transform::streamSink().

◆ loadPkcs8() [4/4]

void ndn::security::transform::PrivateKey::loadPkcs8 ( std::istream &  is,
PasswordCallback  pwCallback = nullptr 
)

Load the private key in encrypted PKCS#8 format from a stream is with passphrase obtained from pwCallback.

The default password callback is provided by OpenSSL

Definition at line 147 of file private-key.cpp.

References ndn::OBufferStream::buf(), loadPkcs8(), and ndn::security::transform::streamSink().

◆ loadPkcs8Base64() [1/4]

void ndn::security::transform::PrivateKey::loadPkcs8Base64 ( const uint8_t *  buf,
size_t  size,
const char *  pw,
size_t  pwLen 
)

Load the private key in base64-encoded encrypted PKCS#8 format from a buffer buf with passphrase pw.

Precondition
strlen(pw) == pwLen

Definition at line 155 of file private-key.cpp.

References ndn::security::transform::base64Decode(), ndn::OBufferStream::buf(), loadPkcs8(), and ndn::security::transform::streamSink().

◆ loadPkcs8Base64() [2/4]

void ndn::security::transform::PrivateKey::loadPkcs8Base64 ( const uint8_t *  buf,
size_t  size,
PasswordCallback  pwCallback = nullptr 
)

Load the private key in encrypted PKCS#8 format from a buffer buf with passphrase obtained from pwCallback.

The default password callback is provided by OpenSSL

Definition at line 163 of file private-key.cpp.

References ndn::security::transform::base64Decode(), ndn::OBufferStream::buf(), loadPkcs8(), and ndn::security::transform::streamSink().

◆ loadPkcs8Base64() [3/4]

void ndn::security::transform::PrivateKey::loadPkcs8Base64 ( std::istream &  is,
const char *  pw,
size_t  pwLen 
)

Load the private key in base64-encoded encrypted PKCS#8 format from a stream is with passphrase pw.

Precondition
strlen(pw) == pwLen

Definition at line 171 of file private-key.cpp.

References ndn::security::transform::base64Decode(), ndn::OBufferStream::buf(), loadPkcs8(), and ndn::security::transform::streamSink().

◆ loadPkcs8Base64() [4/4]

void ndn::security::transform::PrivateKey::loadPkcs8Base64 ( std::istream &  is,
PasswordCallback  pwCallback = nullptr 
)

Load the private key in base64-encoded encrypted PKCS#8 format from a stream is with passphrase obtained from pwCallback.

The default password callback is provided by OpenSSL

Definition at line 179 of file private-key.cpp.

References ndn::security::transform::base64Decode(), ndn::OBufferStream::buf(), loadPkcs8(), and ndn::security::transform::streamSink().

◆ savePkcs1()

void ndn::security::transform::PrivateKey::savePkcs1 ( std::ostream &  os) const

Save the private key in PKCS#1 format into a stream os.

Definition at line 187 of file private-key.cpp.

References ndn::security::transform::streamSink().

◆ savePkcs1Base64()

void ndn::security::transform::PrivateKey::savePkcs1Base64 ( std::ostream &  os) const

Save the private key in base64-encoded PKCS#1 format into a stream os.

Definition at line 193 of file private-key.cpp.

References ndn::security::transform::base64Encode(), and ndn::security::transform::streamSink().

◆ savePkcs8() [1/2]

void ndn::security::transform::PrivateKey::savePkcs8 ( std::ostream &  os,
const char *  pw,
size_t  pwLen 
) const

Save the private key in encrypted PKCS#8 format into a stream os.

Definition at line 199 of file private-key.cpp.

References ndn::security::transform::streamSink().

◆ savePkcs8() [2/2]

void ndn::security::transform::PrivateKey::savePkcs8 ( std::ostream &  os,
PasswordCallback  pwCallback = nullptr 
) const

Save the private key in encrypted PKCS#8 format into a stream os with passphrase obtained from pwCallback.

The default password callback is provided by OpenSSL

Definition at line 205 of file private-key.cpp.

References ndn::security::transform::streamSink().

◆ savePkcs8Base64() [1/2]

void ndn::security::transform::PrivateKey::savePkcs8Base64 ( std::ostream &  os,
const char *  pw,
size_t  pwLen 
) const

Save the private key in base64-encoded encrypted PKCS#8 format into a stream os.

Definition at line 211 of file private-key.cpp.

References ndn::security::transform::base64Encode(), and ndn::security::transform::streamSink().

◆ savePkcs8Base64() [2/2]

void ndn::security::transform::PrivateKey::savePkcs8Base64 ( std::ostream &  os,
PasswordCallback  pwCallback = nullptr 
) const

Save the private key in base64-encoded encrypted PKCS#8 format into a stream os with passphrase obtained from pwCallback.

The default password callback is provided by OpenSSL

Definition at line 217 of file private-key.cpp.

References ndn::security::transform::base64Encode(), and ndn::security::transform::streamSink().

◆ derivePublicKey()

ConstBufferPtr ndn::security::transform::PrivateKey::derivePublicKey ( ) const
Returns
Public key bits in PKCS#8 format

Definition at line 223 of file private-key.cpp.

References ENSURE_PRIVATE_KEY_LOADED.

◆ decrypt()

ConstBufferPtr ndn::security::transform::PrivateKey::decrypt ( const uint8_t *  cipherText,
size_t  cipherLen 
) const
Returns
Plain text of cipherText decrypted using the private key.

Only RSA encryption is supported for now.

Definition at line 240 of file private-key.cpp.

References ENSURE_PRIVATE_KEY_LOADED, ndn::security::detail::EvpPkeyCtx::get(), ndn::security::detail::Bio::get(), and ndn::security::transform::passwordCallback().

Friends And Related Function Documentation

◆ SignerFilter

friend class SignerFilter
friend

Definition at line 51 of file private-key.hpp.


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