Digital Authentication Framework  6.0.1.37
basic_metadata.h
Go to the documentation of this file.
1 /*
2  * (c) 2014 Good Technology Corporation. All rights reserved.
3  */
4 
10 #ifndef BASIC_METADATA_H
11 #define BASIC_METADATA_H
12 
14 
15 #include <map>
16 
17 #include "basic_error.h"
18 
25 class BasicMetaData : public DAMetaData
26 {
27 public:
28  typedef std::vector<DAData> DADataList;
29 
37  : m_error(err)
38  , m_strings()
39  , m_flags()
40  , m_datas()
41  {}
42 
47  void copyFrom(const DAMetaData &meta)
48  {
49  const BasicMetaData *other = dynamic_cast<const BasicMetaData *>(&meta);
50  if (other)
51  {
52  m_strings = other->m_strings;
53  m_flags = other->m_flags;
54  m_datas = other->m_datas;
55  }
56  }
57 
60  void setString(DAAttrib which, const std::string &value)
61  {
62  m_strings[which] = value;
63  }
64 
67  void setFlag(DAAttrib which, bool value=true)
68  {
69  m_flags[which] = value;
70  }
71 
74  void setData(DAAttrib which, const DAData &value)
75  {
76  DADataList dlist;
77  dlist.push_back(value);
78  m_datas[which] = dlist;
79  }
80 
83  void setData(DAAttrib which, const DADataList &values)
84  {
85  m_datas[which] = values;
86  }
87 
90  void setSize(DAAttrib which, size_t len)
91  {
92  m_sizes[which] = len;
93  }
94 
95  virtual bool getString(DAAttrib which, std::string &out)
96  {
97  string_map::iterator it = m_strings.find(which);
98 
99  if (it != m_strings.end())
100  {
101  out = it->second;
102  m_error.clear();
103  return true;
104  }
105 
106  out = "";
108  return false;
109  }
110 
111  virtual bool getFlag(DAAttrib which)
112  {
113  flag_map::iterator it = m_flags.find(which);
114 
115  if (it != m_flags.end())
116  {
117  m_error.clear();
118  return it->second;
119  }
120 
122  return false;
123  }
124 
125  virtual bool getData(DAAttrib which, DAData &out, size_t index)
126  {
127  data_map::iterator it = m_datas.find(which);
128 
129  out.clear();
130  if (it == m_datas.end())
131  {
133  return false;
134  }
135 
136  DADataList &dlist = it->second;
137  if ( index >= dlist.size() )
138  {
140  return false;
141  }
142 
143  out = dlist.at(index);
144  m_error.clear();
145  return true;
146  }
147 
148  virtual bool getSize(DAAttrib which, size_t &len_r)
149  {
150  size_map::iterator it = m_sizes.find(which);
151 
152  if ( it != m_sizes.end() )
153  {
154  m_error.clear();
155  len_r = it->second;
156  return true;
157  }
158 
159  len_r = 0;
161  return false;
162  }
163 
164 protected:
166 
167  typedef std::map<DAAttrib, std::string> string_map;
168  typedef std::map<DAAttrib, bool> flag_map;
169  typedef std::map<DAAttrib, DADataList> data_map;
170  typedef std::map<DAAttrib, size_t> size_map;
171 
172  string_map m_strings;
173  flag_map m_flags;
174  data_map m_datas;
175  size_map m_sizes;
176 };
177 
178 #endif
virtual bool getSize(DAAttrib which, size_t &len_r)
Get size attribute.
Definition: basic_metadata.h:148
std::map< DAAttrib, DADataList > data_map
Holds data attributes.
Definition: basic_metadata.h:169
Main C++ interface to authentication device.
void setString(DAAttrib which, const std::string &value)
Set a string attribute.
Definition: basic_metadata.h:60
General metadata interface.
Definition: DigitalAuthenticationFramework.h:652
bool setCode(int e)
Set error code in error code.
Definition: basic_error.h:36
DAAttrib
Attribute selector.
Definition: DigitalAuthenticationFramework.h:620
std::vector< DAData > DADataList
0, 1 or many data items (e.g. an X.509 certificate chain)
Definition: basic_metadata.h:28
void setSize(DAAttrib which, size_t len)
Set a size attribute.
Definition: basic_metadata.h:90
std::map< DAAttrib, bool > flag_map
Holds flag attributes.
Definition: basic_metadata.h:168
string_map m_strings
Map containing all std::string attribute values.
Definition: basic_metadata.h:172
BasicMetaData(BasicError &err)
Constructor Produces a metadata container with no values.
Definition: basic_metadata.h:36
data_map m_datas
Map containing all DAData attribute values.
Definition: basic_metadata.h:174
virtual bool getData(DAAttrib which, DAData &out, size_t index)
Get byteblock attribute.
Definition: basic_metadata.h:125
void setData(DAAttrib which, const DAData &value)
Set a (single) byte-block attribute.
Definition: basic_metadata.h:74
void copyFrom(const DAMetaData &meta)
Copy data values from another DAMetaData.
Definition: basic_metadata.h:47
std::map< DAAttrib, size_t > size_map
Holds data attributes.
Definition: basic_metadata.h:170
size_map m_sizes
Map containing all DASize attribute values.
Definition: basic_metadata.h:175
std::map< DAAttrib, std::string > string_map
Holds string attributes.
Definition: basic_metadata.h:167
Simple implementation of DAMetaData.
Definition: basic_metadata.h:25
void setData(DAAttrib which, const DADataList &values)
Sets a (list of) byte-block attributes.
Definition: basic_metadata.h:83
virtual bool getString(DAAttrib which, std::string &out)
Get String attribute.
Definition: basic_metadata.h:95
virtual bool getFlag(DAAttrib which)
Get boolean attribute.
Definition: basic_metadata.h:111
std::vector< uint8_t > DAData
A data block represented as a sequence of bytes.
Definition: DigitalAuthenticationFramework.h:28
Simple implementation of DAError.
Requested attribute not available.
Definition: DigitalAuthenticationFramework.h:94
void setFlag(DAAttrib which, bool value=true)
Set a boolean(flag) attribute.
Definition: basic_metadata.h:67
virtual void clear()
reset the current error state.
Definition: basic_error.h:42
flag_map m_flags
Map containing all bool attribute values.
Definition: basic_metadata.h:173
BasicError & m_error
Reference to error object to use on failure.
Definition: basic_metadata.h:165
Simple implementation of DAError.
Definition: basic_error.h:22