Botan  2.15.0
Crypto and TLS for C++11
Public Member Functions | List of all members
Botan::PKCS11::ObjectFinder Class Referencefinal

Manages calls to C_FindObjects* functions (C_FindObjectsInit -> C_FindObjects -> C_FindObjectsFinal) More...

#include <p11_object.h>

Public Member Functions

std::vector< ObjectHandlefind (std::uint32_t max_count=100) const
 
void finish ()
 Finishes the search operation manually to allow a new ObjectFinder to exist. More...
 
Modulemodule () const
 
 ObjectFinder (Session &session, const std::vector< Attribute > &search_template)
 
 ObjectFinder (const ObjectFinder &other)=default
 
 ObjectFinder (ObjectFinder &&other)=default
 
ObjectFinderoperator= (const ObjectFinder &other)=delete
 
ObjectFinderoperator= (ObjectFinder &&other)=delete
 
 ~ObjectFinder () noexcept
 Terminates a search for token and session objects (calls C_FindObjectsFinal) More...
 

Detailed Description

Manages calls to C_FindObjects* functions (C_FindObjectsInit -> C_FindObjects -> C_FindObjectsFinal)

Definition at line 127 of file p11_object.h.

Constructor & Destructor Documentation

◆ ObjectFinder() [1/3]

Botan::PKCS11::ObjectFinder::ObjectFinder ( Session session,
const std::vector< Attribute > &  search_template 
)

Initializes a search for token and session objects that match a template (calls C_FindObjectsInit)

Parameters
sessionthe session to use for the search
search_templatethe search_template as a vector of Attribute

Definition at line 87 of file p11_object.cpp.

References Botan::PKCS11::LowLevel::C_FindObjectsInit(), and module().

88  : m_session(session), m_search_terminated(false)
89  {
90  module()->C_FindObjectsInit(m_session.get().handle(),
91  const_cast< Attribute* >(search_template.data()),
92  static_cast<Ulong>(search_template.size()));
93  }
bool C_FindObjectsInit(SessionHandle session, Attribute *attribute_template_ptr, Ulong count, ReturnValue *return_value=ThrowException) const
Definition: p11.cpp:359
CK_ATTRIBUTE Attribute
Definition: p11.h:845
Module & module() const
Definition: p11_object.h:157

◆ ObjectFinder() [2/3]

Botan::PKCS11::ObjectFinder::ObjectFinder ( const ObjectFinder other)
default

◆ ObjectFinder() [3/3]

Botan::PKCS11::ObjectFinder::ObjectFinder ( ObjectFinder &&  other)
default

◆ ~ObjectFinder()

Botan::PKCS11::ObjectFinder::~ObjectFinder ( )
noexcept

Terminates a search for token and session objects (calls C_FindObjectsFinal)

Definition at line 95 of file p11_object.cpp.

References Botan::PKCS11::LowLevel::C_FindObjectsFinal(), and module().

96  {
97  try
98  {
99  if(m_search_terminated == false)
100  {
101  module()->C_FindObjectsFinal(m_session.get().handle(), nullptr);
102  }
103  }
104  catch(...)
105  {
106  // ignore error during noexcept function
107  }
108  }
bool C_FindObjectsFinal(SessionHandle session, ReturnValue *return_value=ThrowException) const
Definition: p11.cpp:377
Module & module() const
Definition: p11_object.h:157

Member Function Documentation

◆ find()

std::vector< ObjectHandle > Botan::PKCS11::ObjectFinder::find ( std::uint32_t  max_count = 100) const

Starts or continues a search for token and session objects that match a template, obtaining additional object handles (calls C_FindObjects)

Parameters
max_countmaximum amount of object handles to retrieve. Default = 100
Returns
the result of the search as a vector of ObjectHandle

Definition at line 110 of file p11_object.cpp.

References Botan::PKCS11::LowLevel::C_FindObjects(), and module().

Referenced by Botan::PKCS11::Object::search().

111  {
112  std::vector<ObjectHandle> result(max_count);
113  Ulong objectCount = 0;
114  module()->C_FindObjects(m_session.get().handle(), result.data(), max_count, &objectCount);
115  if(objectCount < max_count)
116  {
117  result.resize(objectCount);
118  }
119  return result;
120  }
bool C_FindObjects(SessionHandle session, ObjectHandle *object_ptr, Ulong max_object_count, Ulong *object_count_ptr, ReturnValue *return_value=ThrowException) const
Definition: p11.cpp:367
CK_ULONG Ulong
Definition: p11.h:836
Module & module() const
Definition: p11_object.h:157

◆ finish()

void Botan::PKCS11::ObjectFinder::finish ( )

Finishes the search operation manually to allow a new ObjectFinder to exist.

Definition at line 122 of file p11_object.cpp.

References Botan::PKCS11::LowLevel::C_FindObjectsFinal(), and module().

123  {
124  module()->C_FindObjectsFinal(m_session.get().handle());
125  m_search_terminated = true;
126  }
bool C_FindObjectsFinal(SessionHandle session, ReturnValue *return_value=ThrowException) const
Definition: p11.cpp:377
Module & module() const
Definition: p11_object.h:157

◆ module()

Module& Botan::PKCS11::ObjectFinder::module ( ) const
inline
Returns
the module this ObjectFinder belongs to

Definition at line 157 of file p11_object.h.

Referenced by find(), finish(), ObjectFinder(), and ~ObjectFinder().

158  {
159  return m_session.get().module();
160  }

◆ operator=() [1/2]

ObjectFinder& Botan::PKCS11::ObjectFinder::operator= ( const ObjectFinder other)
delete

◆ operator=() [2/2]

ObjectFinder& Botan::PKCS11::ObjectFinder::operator= ( ObjectFinder &&  other)
delete

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