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

Common attributes of all data objects. More...

#include <p11_object.h>

Inheritance diagram for Botan::PKCS11::DataObjectProperties:
Botan::PKCS11::StorageObjectProperties Botan::PKCS11::ObjectProperties Botan::PKCS11::AttributeContainer

Public Member Functions

void add_binary (AttributeType attribute, const uint8_t *value, size_t length)
 
template<typename TAlloc >
void add_binary (AttributeType attribute, const std::vector< uint8_t, TAlloc > &binary)
 
void add_bool (AttributeType attribute, bool value)
 
void add_class (ObjectClass object_class)
 
template<typename T >
void add_numeric (AttributeType attribute, T value)
 
void add_string (AttributeType attribute, const std::string &value)
 
const std::vector< Attribute > & attributes () const
 
size_t count () const
 
Attributedata () const
 
 DataObjectProperties ()
 
ObjectClass object_class () const
 
void set_application (const std::string &value)
 
void set_copyable (bool value)
 
void set_destroyable (bool value)
 
void set_label (const std::string &label)
 
void set_modifiable (bool value)
 
void set_object_id (const std::vector< uint8_t > &object_id)
 
void set_private (bool value)
 
void set_token (bool value)
 
void set_value (const secure_vector< uint8_t > &value)
 

Protected Member Functions

void add_attribute (AttributeType attribute, const uint8_t *value, uint32_t size)
 Add an attribute with the given value and size to the attribute collection m_attributes More...
 

Detailed Description

Common attributes of all data objects.

Definition at line 240 of file p11_object.h.

Constructor & Destructor Documentation

◆ DataObjectProperties()

Botan::PKCS11::DataObjectProperties::DataObjectProperties ( )

Member Function Documentation

◆ add_attribute()

void Botan::PKCS11::AttributeContainer::add_attribute ( AttributeType  attribute,
const uint8_t *  value,
uint32_t  size 
)
protectedinherited

Add an attribute with the given value and size to the attribute collection m_attributes

Definition at line 46 of file p11_object.cpp.

References Botan::PKCS11::AttributeContainer::data(), and CK_ATTRIBUTE::pValue.

Referenced by Botan::PKCS11::AttributeContainer::add_binary(), Botan::PKCS11::AttributeContainer::add_bool(), Botan::PKCS11::AttributeContainer::add_class(), and Botan::PKCS11::AttributeContainer::add_string().

47  {
48  bool exists = false;
49  // check if the attribute has been added already
50  for(auto& existing_attribute : m_attributes)
51  {
52  if(existing_attribute.type == static_cast< CK_ATTRIBUTE_TYPE >(attribute))
53  {
54  // remove old entries
55  m_strings.erase(std::remove_if(m_strings.begin(), m_strings.end(), [ &existing_attribute ](const std::string& data)
56  {
57  return data.data() == existing_attribute.pValue;
58  }), m_strings.end());
59 
60  m_numerics.erase(std::remove_if(m_numerics.begin(), m_numerics.end(), [ &existing_attribute ](const uint64_t& data)
61  {
62  return &data == existing_attribute.pValue;
63  }), m_numerics.end());
64 
65  m_vectors.erase(std::remove_if(m_vectors.begin(),
66  m_vectors.end(), [ &existing_attribute ](const secure_vector<uint8_t>& data)
67  {
68  return data.data() == existing_attribute.pValue;
69  }), m_vectors.end());
70 
71  existing_attribute.pValue = const_cast< uint8_t* >(value);
72  existing_attribute.ulValueLen = size;
73  exists = true;
74  break;
75  }
76  }
77 
78  if(!exists)
79  {
80  m_attributes.push_back(Attribute{ static_cast< CK_ATTRIBUTE_TYPE >(attribute), const_cast< uint8_t* >(value), size });
81  }
82  }
CK_ULONG CK_ATTRIBUTE_TYPE
Definition: pkcs11t.h:416
Attribute * data() const
Definition: p11_object.h:56
CK_ATTRIBUTE Attribute
Definition: p11.h:845
CK_VOID_PTR pValue
Definition: pkcs11t.h:566

◆ add_binary() [1/2]

void Botan::PKCS11::AttributeContainer::add_binary ( AttributeType  attribute,
const uint8_t *  value,
size_t  length 
)
inherited

Add a binary attribute (e.g. CKA_ID / AttributeType::Id).

Parameters
attributeattribute type
valuebinary attribute value to add
lengthsize of the binary attribute value in bytes

Definition at line 34 of file p11_object.cpp.

References Botan::PKCS11::AttributeContainer::add_attribute().

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

35  {
36  m_vectors.push_back(secure_vector<uint8_t>(value, value + length));
37  add_attribute(attribute, reinterpret_cast< const uint8_t* >(m_vectors.back().data()), length);
38  }
void add_attribute(AttributeType attribute, const uint8_t *value, uint32_t size)
Add an attribute with the given value and size to the attribute collection m_attributes ...
Definition: p11_object.cpp:46

◆ add_binary() [2/2]

template<typename TAlloc >
void Botan::PKCS11::AttributeContainer::add_binary ( AttributeType  attribute,
const std::vector< uint8_t, TAlloc > &  binary 
)
inlineinherited

Add a binary attribute (e.g. CKA_ID / AttributeType::Id).

Parameters
attributeattribute type
binarybinary attribute value to add

Definition at line 94 of file p11_object.h.

95  {
96  add_binary(attribute, binary.data(), binary.size());
97  }
void add_binary(AttributeType attribute, const uint8_t *value, size_t length)
Definition: p11_object.cpp:34

◆ add_bool()

void Botan::PKCS11::AttributeContainer::add_bool ( AttributeType  attribute,
bool  value 
)
inherited

Add a bool attribute (e.g. CKA_SENSITIVE / AttributeType::Sensitive).

Parameters
attributeattribute type
valueboolean value to add

Definition at line 40 of file p11_object.cpp.

References Botan::PKCS11::AttributeContainer::add_attribute(), Botan::PKCS11::False, and Botan::PKCS11::True.

41  {
42  m_numerics.push_back(value ? True : False);
43  add_attribute(attribute, reinterpret_cast< uint8_t* >(&m_numerics.back()), sizeof(Bbool));
44  }
const Bbool False
Definition: p11.h:856
const Bbool True
Definition: p11.h:855
void add_attribute(AttributeType attribute, const uint8_t *value, uint32_t size)
Add an attribute with the given value and size to the attribute collection m_attributes ...
Definition: p11_object.cpp:46
CK_BBOOL Bbool
Definition: p11.h:834

◆ add_class()

void Botan::PKCS11::AttributeContainer::add_class ( ObjectClass  object_class)
inherited

Add a class attribute (CKA_CLASS / AttributeType::Class).

Parameters
object_classclass attribute to add

Definition at line 22 of file p11_object.cpp.

References Botan::PKCS11::AttributeContainer::add_attribute(), and Botan::PKCS11::Class.

Referenced by Botan::PKCS11::AttributeContainer::AttributeContainer().

23  {
24  m_numerics.push_back(static_cast< uint64_t >(object_class));
25  add_attribute(AttributeType::Class, reinterpret_cast< uint8_t* >(&m_numerics.back()), sizeof(ObjectClass));
26  }
void add_attribute(AttributeType attribute, const uint8_t *value, uint32_t size)
Add an attribute with the given value and size to the attribute collection m_attributes ...
Definition: p11_object.cpp:46

◆ add_numeric()

template<typename T >
void Botan::PKCS11::AttributeContainer::add_numeric ( AttributeType  attribute,
T  value 
)
inlineinherited

Add a numeric attribute (e.g. CKA_MODULUS_BITS / AttributeType::ModulusBits).

Parameters
attributeattribute type
valuenumeric value to add

Definition at line 112 of file p11_object.h.

References T.

Referenced by Botan::PKCS11::CertificateProperties::CertificateProperties(), Botan::PKCS11::DomainParameterProperties::DomainParameterProperties(), and Botan::PKCS11::KeyProperties::KeyProperties().

113  {
114  static_assert(std::is_integral<T>::value, "Numeric value required.");
115  m_numerics.push_back(static_cast< uint64_t >(value));
116  add_attribute(attribute, reinterpret_cast< uint8_t* >(&m_numerics.back()), sizeof(T));
117  }
void add_attribute(AttributeType attribute, const uint8_t *value, uint32_t size)
Add an attribute with the given value and size to the attribute collection m_attributes ...
Definition: p11_object.cpp:46
fe T
Definition: ge.cpp:37

◆ add_string()

void Botan::PKCS11::AttributeContainer::add_string ( AttributeType  attribute,
const std::string &  value 
)
inherited

Add a string attribute (e.g. CKA_LABEL / AttributeType::Label).

Parameters
attributeattribute type
valuestring value to add

Definition at line 28 of file p11_object.cpp.

References Botan::PKCS11::AttributeContainer::add_attribute().

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

29  {
30  m_strings.push_back(value);
31  add_attribute(attribute, reinterpret_cast< const uint8_t* >(m_strings.back().data()), value.size());
32  }
void add_attribute(AttributeType attribute, const uint8_t *value, uint32_t size)
Add an attribute with the given value and size to the attribute collection m_attributes ...
Definition: p11_object.cpp:46

◆ attributes()

const std::vector<Attribute>& Botan::PKCS11::AttributeContainer::attributes ( ) const
inlineinherited
Returns
the attributes this container contains

Definition at line 50 of file p11_object.h.

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

51  {
52  return m_attributes;
53  }

◆ count()

size_t Botan::PKCS11::AttributeContainer::count ( ) const
inlineinherited
Returns
the number of attributes in this container

Definition at line 62 of file p11_object.h.

Referenced by Botan::PKCS11::Object::copy(), and Botan::PKCS11::Object::Object().

63  {
64  return m_attributes.size();
65  }

◆ data()

Attribute* Botan::PKCS11::AttributeContainer::data ( ) const
inlineinherited
Returns
raw attribute data

Definition at line 56 of file p11_object.h.

Referenced by Botan::PKCS11::AttributeContainer::add_attribute(), Botan::PKCS11::Object::copy(), and Botan::PKCS11::Object::Object().

57  {
58  return const_cast< Attribute* >(m_attributes.data());
59  }
CK_ATTRIBUTE Attribute
Definition: p11.h:845

◆ object_class()

ObjectClass Botan::PKCS11::ObjectProperties::object_class ( ) const
inlineinherited
Returns
the object class of this object

Definition at line 183 of file p11_object.h.

184  {
185  return m_object_class;
186  }

◆ set_application()

void Botan::PKCS11::DataObjectProperties::set_application ( const std::string &  value)
inline
Parameters
valuedescription of the application that manages the object (RFC2279 string)

Definition at line 246 of file p11_object.h.

References Botan::PKCS11::Application.

247  {
249  }
void add_string(AttributeType attribute, const std::string &value)
Definition: p11_object.cpp:28

◆ set_copyable()

void Botan::PKCS11::StorageObjectProperties::set_copyable ( bool  value)
inlineinherited
Parameters
valueif true the object can be copied using C_CopyObject

Definition at line 227 of file p11_object.h.

References Botan::PKCS11::Copyable.

228  {
230  }
void add_bool(AttributeType attribute, bool value)
Definition: p11_object.cpp:40

◆ set_destroyable()

void Botan::PKCS11::StorageObjectProperties::set_destroyable ( bool  value)
inlineinherited
Parameters
valueif true the object can be destroyed using C_DestroyObject

Definition at line 233 of file p11_object.h.

References Botan::PKCS11::Destroyable.

234  {
236  }
void add_bool(AttributeType attribute, bool value)
Definition: p11_object.cpp:40

◆ set_label()

void Botan::PKCS11::StorageObjectProperties::set_label ( const std::string &  label)
inlineinherited
Parameters
labeldescription of the object (RFC2279 string)

Definition at line 200 of file p11_object.h.

References Botan::PKCS11::Label.

201  {
203  }
void add_string(AttributeType attribute, const std::string &value)
Definition: p11_object.cpp:28

◆ set_modifiable()

void Botan::PKCS11::StorageObjectProperties::set_modifiable ( bool  value)
inlineinherited
Parameters
valueif true the object can be modified, otherwise it is read-only

Definition at line 221 of file p11_object.h.

References Botan::PKCS11::Modifiable.

222  {
224  }
void add_bool(AttributeType attribute, bool value)
Definition: p11_object.cpp:40

◆ set_object_id()

void Botan::PKCS11::DataObjectProperties::set_object_id ( const std::vector< uint8_t > &  object_id)
inline
Parameters
object_idDER-encoding of the object identifier indicating the data object type

Definition at line 252 of file p11_object.h.

References Botan::PKCS11::ObjectId.

253  {
255  }
void add_binary(AttributeType attribute, const uint8_t *value, size_t length)
Definition: p11_object.cpp:34

◆ set_private()

void Botan::PKCS11::StorageObjectProperties::set_private ( bool  value)
inlineinherited
Parameters
valueif true the object is a private object; otherwise the object is a public object When private, a user may not access the object until the user has been authenticated to the token

Definition at line 215 of file p11_object.h.

References Botan::PKCS11::Private.

216  {
218  }
void add_bool(AttributeType attribute, bool value)
Definition: p11_object.cpp:40

◆ set_token()

void Botan::PKCS11::StorageObjectProperties::set_token ( bool  value)
inlineinherited
Parameters
valueif true the object is a token object; otherwise the object is a session object

Definition at line 206 of file p11_object.h.

References Botan::PKCS11::Token.

207  {
209  }
void add_bool(AttributeType attribute, bool value)
Definition: p11_object.cpp:40

◆ set_value()

void Botan::PKCS11::DataObjectProperties::set_value ( const secure_vector< uint8_t > &  value)
inline
Parameters
valuevalue of the object

Definition at line 258 of file p11_object.h.

References Botan::PKCS11::Value.

259  {
261  }
void add_binary(AttributeType attribute, const uint8_t *value, size_t length)
Definition: p11_object.cpp:34

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