Botan 3.13.0
Crypto and TLS for C&
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.
Modulemodule () const
 ObjectFinder (const ObjectFinder &other)=delete
 ObjectFinder (ObjectFinder &&other) noexcept
 ObjectFinder (Session &session, const std::vector< Attribute > &search_template)
ObjectFinderoperator= (const ObjectFinder &other)=delete
ObjectFinderoperator= (ObjectFinder &&other)=delete
 ~ObjectFinder () noexcept
 Terminates a search for token and session objects (calls C_FindObjectsFinal).

Detailed Description

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

Definition at line 113 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 73 of file p11_object.cpp.

73 :
74 m_session(session), m_search_terminated(false) {
75 module()->C_FindObjectsInit(m_session.get().handle(),
76 const_cast<Attribute*>(search_template.data()),
77 checked_ulong_cast(search_template.size()));
78}
bool C_FindObjectsInit(SessionHandle session, Attribute *attribute_template_ptr, Ulong count, ReturnValue *return_value=ThrowException) const
Definition p11.cpp:379
Module & module() const
Definition p11_object.h:146
Ulong checked_ulong_cast(size_t v)
Definition p11.h:1228
CK_ATTRIBUTE Attribute
Definition p11.h:1213

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

Referenced by ObjectFinder(), ObjectFinder(), operator=(), and operator=().

◆ ObjectFinder() [2/3]

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

References ObjectFinder().

◆ ObjectFinder() [3/3]

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

Definition at line 125 of file p11_object.h.

125 :
126 m_session(other.m_session), m_search_terminated(other.m_search_terminated) {
127 other.m_search_terminated = true;
128 }

References ObjectFinder().

◆ ~ObjectFinder()

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

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

Definition at line 80 of file p11_object.cpp.

80 {
81 try {
82 if(!m_search_terminated) {
83 module()->C_FindObjectsFinal(m_session.get().handle(), nullptr);
84 }
85 } catch(...) {
86 // ignore error during noexcept function
87 }
88}
bool C_FindObjectsFinal(SessionHandle session, ReturnValue *return_value=ThrowException) const
Definition p11.cpp:397

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

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 90 of file p11_object.cpp.

90 {
91 std::vector<ObjectHandle> result(max_count);
92 Ulong objectCount = 0;
93 module()->C_FindObjects(m_session.get().handle(), result.data(), max_count, &objectCount);
94 if(objectCount < max_count) {
95 result.resize(objectCount);
96 }
97 return result;
98}
bool C_FindObjects(SessionHandle session, ObjectHandle *object_ptr, Ulong max_object_count, Ulong *object_count_ptr, ReturnValue *return_value=ThrowException) const
Definition p11.cpp:387
CK_ULONG Ulong
Definition p11.h:1204

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

Referenced by operator=(), and Botan::PKCS11::Object::search().

◆ finish()

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

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

Definition at line 100 of file p11_object.cpp.

100 {
101 module()->C_FindObjectsFinal(m_session.get().handle());
102 m_search_terminated = true;
103}

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

Referenced by operator=().

◆ module()

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

Definition at line 146 of file p11_object.h.

146{ return m_session.get().module(); }

References module().

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

◆ operator=() [1/2]

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

References ObjectFinder().

◆ operator=() [2/2]

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

References find(), finish(), and ObjectFinder().


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