Certificate has now label and id; refs #28
This commit is contained in:
		| @@ -145,7 +145,26 @@ namespace suisseid { | |||||||
|   /*! @addtogroup suisseidtypes */ |   /*! @addtogroup suisseidtypes */ | ||||||
|   //@{ |   //@{ | ||||||
|   /// DER encoded binary certificate |   /// DER encoded binary certificate | ||||||
|   typedef std::string Certificate; |   class Certificate: public std::string { | ||||||
|  |     public: | ||||||
|  |       Certificate(const std::string& v, | ||||||
|  |                   const std::string& l, | ||||||
|  |                   const cryptoki::Attribute& i): | ||||||
|  |           std::string(v), | ||||||
|  |           _label(l), | ||||||
|  |           _id(i) { | ||||||
|  |       } | ||||||
|  |       const std::string& label() { | ||||||
|  |         return _label; | ||||||
|  |       } | ||||||
|  |       const cryptoki::Attribute& id() { | ||||||
|  |         return _id; | ||||||
|  |       } | ||||||
|  |     private: | ||||||
|  |       std::string _label; | ||||||
|  |       cryptoki::Attribute _id; | ||||||
|  |   }; | ||||||
|  |    | ||||||
|   /// List of DER encoded binary certificates |   /// List of DER encoded binary certificates | ||||||
|   typedef std::vector<Certificate> Certificates; |   typedef std::vector<Certificate> Certificates; | ||||||
|   //@} |   //@} | ||||||
| @@ -248,7 +267,9 @@ namespace suisseid { | |||||||
|                           .from<CK_OBJECT_CLASS>(CKO_CERTIFICATE))); |                           .from<CK_OBJECT_CLASS>(CKO_CERTIFICATE))); | ||||||
|         for (cryptoki::ObjectList::iterator cert(certs.begin()); |         for (cryptoki::ObjectList::iterator cert(certs.begin()); | ||||||
|              cert!=certs.end(); ++cert) |              cert!=certs.end(); ++cert) | ||||||
|           res.push_back(cert->attribute(CKA_VALUE).value); |           res.push_back(Certificate(cert->attribute(CKA_VALUE).value, | ||||||
|  |                                     cert->attribute(CKA_LABEL).value, | ||||||
|  |                                     cert->attribute(CKA_ID))); | ||||||
|         return res; |         return res; | ||||||
|       } |       } | ||||||
|        |        | ||||||
| @@ -268,7 +289,9 @@ namespace suisseid { | |||||||
|                             <<id)); |                             <<id)); | ||||||
|           for (cryptoki::ObjectList::iterator cert(certs.begin()); |           for (cryptoki::ObjectList::iterator cert(certs.begin()); | ||||||
|                cert!=certs.end(); ++cert) { // return first matching cert |                cert!=certs.end(); ++cert) { // return first matching cert | ||||||
|             return cert->attribute(CKA_VALUE).value; |             return Certificate(cert->attribute(CKA_VALUE).value, | ||||||
|  |                                cert->attribute(CKA_LABEL).value, | ||||||
|  |                                id); | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|         throw no_certfound(keylabel); |         throw no_certfound(keylabel); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user