Botan 3.0.0-alpha0
Crypto and TLS for C&
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 (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) 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 90 of file p11_object.cpp.

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

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

99 {
100 try
101 {
102 if(m_search_terminated == false)
103 {
104 module()->C_FindObjectsFinal(m_session.get().handle(), nullptr);
105 }
106 }
107 catch(...)
108 {
109 // ignore error during noexcept function
110 }
111 }
bool C_FindObjectsFinal(SessionHandle session, ReturnValue *return_value=ThrowException) const
Definition: p11.cpp:375

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

114 {
115 std::vector<ObjectHandle> result(max_count);
116 Ulong objectCount = 0;
117 module()->C_FindObjects(m_session.get().handle(), result.data(), max_count, &objectCount);
118 if(objectCount < max_count)
119 {
120 result.resize(objectCount);
121 }
122 return result;
123 }
bool C_FindObjects(SessionHandle session, ObjectHandle *object_ptr, Ulong max_object_count, Ulong *object_count_ptr, ReturnValue *return_value=ThrowException) const
Definition: p11.cpp:365

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

126 {
127 module()->C_FindObjectsFinal(m_session.get().handle());
128 m_search_terminated = true;
129 }

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 157 of file p11_object.h.

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

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: