Botan 3.5.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)=default
 
 ObjectFinder (ObjectFinder &&other)=default
 
 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 114 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 70 of file p11_object.cpp.

70 :
71 m_session(session), m_search_terminated(false) {
72 module()->C_FindObjectsInit(m_session.get().handle(),
73 const_cast<Attribute*>(search_template.data()),
74 static_cast<Ulong>(search_template.size()));
75}
bool C_FindObjectsInit(SessionHandle session, Attribute *attribute_template_ptr, Ulong count, ReturnValue *return_value=ThrowException) const
Definition p11.cpp:291
Module & module() const
Definition p11_object.h:143
CK_ATTRIBUTE Attribute
Definition p11.h:825
CK_ULONG Ulong
Definition p11.h:816

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

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

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

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

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

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

Referenced by 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 97 of file p11_object.cpp.

97 {
98 module()->C_FindObjectsFinal(m_session.get().handle());
99 m_search_terminated = true;
100}

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

◆ module()

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

Definition at line 143 of file p11_object.h.

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

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

◆ 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: