Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
p6keystore.h
Go to the documentation of this file.
1 
10 #ifndef P6KEYSTORE_H__
11 #define P6KEYSTORE_H__ 1
12 
13 #include "p6crypto.h"
14 #include "p6sign.h"
15 #include "p6cert.h"
16 #include "p6cryptokey.h"
17 #include "p6symmetric.h"
18 #include "p6enumwstr.h"
19 
20 #ifdef __cplusplus
21 namespace P6R {
22 extern "C" {
23 #endif
24 
38 const P6KEYSTOREFLAGS P6KEYSTORE_NOFLAGS = 0x00000000;
39 const P6KEYSTOREFLAGS P6KEYSTORE_RECOVERBADSIG = 0x00000001;
40 const P6KEYSTOREFLAGS P6KEYSTORE_NOLOADMETA = 0x00000002;
41 
55 typedef enum {
56  ENTRY_NULL = 0x00,
57  ENTRY_KEY = 0x01,
58  ENTRY_CERT = 0x02,
59  ENTRY_BLOB = 0x03,
60  ENTRY_LINK = 0x04
62 
63 
64 #define P6KSMAXNAMESPACE 500
65 #define P6KSMAXNAME 500
66 #define P6KSMAXLINKTYPE 300
67 #define P6KSMAXLINKMETA 300
68 #define P6KSMAXATTRIBNAME 300
69 #define P6KSMAXATTRIBSTR 500
70 
85 typedef struct
86 {
88  P6WCHAR szNamespace[ P6KSMAXNAMESPACE ];
89  P6WCHAR szName[ P6KSMAXNAME ];
92 
93 
113 typedef struct
114 {
120  P6WCHAR szMetaData[ P6KSMAXLINKMETA ];
122 
123 
142 typedef struct
143 {
146  union {
147  P6WCHAR szValueStr[ P6KSMAXATTRIBSTR ];
150  } value;
151 } P6KEYSTORE_ATTRIBUTE;
152 
153 
160 #undef INTERFACE
161 #define INTERFACE p6IEnumKeystore
163 {
179  P6DECLCOMMETHOD(next)(P6THIS_ P6UINT32 cElements, P6KEYSTORE_ENTRY* parElements, P6UINT32* pcReturned ) P6PURE;
180 
189  P6DECLCOMMETHOD(reset)(P6THIS) P6PURE;
190 };
191 // {2FEA7C69-C0CF-4a80-842F-01974B79EBDA}
192 #define IF_p6IEnumKeystore {0x2fea7c69,0xc0cf,0x4a80,{0x84,0x2f,0x1,0x97,0x4b,0x79,0xeb,0xda}}
193 
194 
200 #undef INTERFACE
201 #define INTERFACE p6IEnumKeystoreAttrib
203 {
219  P6DECLCOMMETHOD(next)(P6THIS_ P6UINT32 cElements, P6KEYSTORE_ATTRIBUTE* parElements, P6UINT32* pcReturned ) P6PURE;
220 
229  P6DECLCOMMETHOD(reset)(P6THIS) P6PURE;
230 };
231 // {2A52D3F3-F42C-4a0b-AE85-B0AACC82B4BF}
232 #define IF_p6IEnumKeystoreAttrib {0x2a52d3f3,0xf42c,0x4a0b,{0xae,0x85,0xb0,0xaa,0xcc,0x82,0xb4,0xbf}}
233 
234 
241 #undef INTERFACE
242 #define INTERFACE p6IKeystoreQuery
244 {
265  P6DECLCOMMETHOD(enumKeyBySize)(P6THIS_ P6UINT32 size, P6INT8 comparator, p6IEnumKeystore** ppEnum ) P6PURE;
266 
282  P6DECLCOMMETHOD(enumKeyByState)(P6THIS_ P6CRYPTOKEYSTATE state, p6IEnumKeystore** ppEnum ) P6PURE;
283 
299  P6DECLCOMMETHOD(enumKeyByCipher)(P6THIS_ P6CRYPTOCIPHER cipher, p6IEnumKeystore** ppEnum ) P6PURE;
300 
316  P6DECLCOMMETHOD(enumKeyByClass)(P6THIS_ P6CRYPTOKEYCLASS keyClass, p6IEnumKeystore** ppEnum ) P6PURE;
317 
333  P6DECLCOMMETHOD(enumKeyByExpired)(P6THIS_ P6TIME expired, p6IEnumKeystore** ppEnum ) P6PURE;
334 
350  P6DECLCOMMETHOD(enumKeyByRenewal)(P6THIS_ P6TIME expired, p6IEnumKeystore** ppEnum ) P6PURE;
351 
372  P6DECLCOMMETHOD(enumKeyBySizeByCipher)(P6THIS_ P6UINT32 size, P6INT8 comparator, P6CRYPTOCIPHER cipher, p6IEnumKeystore** ppEnum ) P6PURE;
373 
394  P6DECLCOMMETHOD(enumKeyBySizeByClass)(P6THIS_ P6UINT32 size, P6INT8 comparator, P6CRYPTOKEYCLASS keyClass, p6IEnumKeystore** ppEnum ) P6PURE;
395 
416  P6DECLCOMMETHOD(enumKeyLikeCipher)(P6THIS_ const P6WCHAR* pCipher, p6IEnumKeystore** ppEnum ) P6PURE;
417 
435  P6DECLCOMMETHOD(enumKeyLikeDescriptiveLabel)(P6THIS_ const P6WCHAR* pDescription, p6IEnumKeystore** ppEnum ) P6PURE;
436 
454  P6DECLCOMMETHOD(enumKeyLikeUse)(P6THIS_ const P6WCHAR* pUse, p6IEnumKeystore** ppEnum ) P6PURE;
455 
470  P6DECLCOMMETHOD(enumCertBySubject)(P6THIS_ const P6WCHAR* pSubject, p6IEnumKeystore** ppEnum ) P6PURE;
471 
487  P6DECLCOMMETHOD(enumLinkBySource)(P6THIS_ P6UUID* pSource, p6IEnumKeystore** ppEnum ) P6PURE;
488 
504  P6DECLCOMMETHOD(enumLinkByTarget)(P6THIS_ P6UUID* pTarget, p6IEnumKeystore** ppEnum ) P6PURE;
505 
523  P6DECLCOMMETHOD(enumLinkLikeType)(P6THIS_ const P6WCHAR* pType, p6IEnumKeystore** ppEnum ) P6PURE;
524 };
525 // {B3541C2E-703E-416d-B0CD-3035A7B76098}
526 #define IF_p6IKeystoreQuery {0xb3541c2e,0x703e,0x416d,{0xb0,0xcd,0x30,0x35,0xa7,0xb7,0x60,0x98}}
527 
538 #undef INTERFACE
539 #define INTERFACE p6IKeystoreInit
541 {
563  P6DECLCOMMETHOD(initialize)(P6THIS_ P6KEYSTOREFLAGS flags,
564  p6ISymmetricCrypto* pEncryptKey,
565  P6SIGNHMAC signAlg,
566  p6ICryptoKey* pSignKey ) P6PURE;
567 
595  P6DECLCOMMETHOD(openSigned)(P6THIS_ const P6WCHAR* pPath, const P6WCHAR* pKeystoreName ) P6PURE;
596 
617  P6DECLCOMMETHOD(open)(P6THIS_ const P6WCHAR* pURI ) P6PURE;
618 
628  P6DECLCOMMETHOD(close)(P6THIS) P6PURE;
629 
640  P6DECLCOMMETHOD(resetStore)(P6THIS) P6PURE;
641 };
642 
643 /*{CE121684-4E87-63FD-BFA6-AF86BE5C6DA5}*/
644 #define IF_p6IKeystoreInit {0xCE121684,0x4E87,0x63FD,{0xBF,0xA6,0xAF,0x86,0xBE,0x5C,0x6D,0xA5}}
645 
654 #undef INTERFACE
655 #define INTERFACE p6IKeystore
657 {
676  P6DECLCOMMETHOD(getKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey** pKey ) P6PURE;
677 
692  P6DECLCOMMETHOD(getKeyByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey** pKey ) P6PURE;
693 
711  P6DECLCOMMETHOD(getCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert** pCert ) P6PURE;
712 
727  P6DECLCOMMETHOD(getCertificateByUUID)(P6THIS_ P6UUID* pUUID, p6ICert** pCert ) P6PURE;
728 
745  P6DECLCOMMETHOD(getCertificateByFingerprint)(P6THIS_ P6WCHAR* pFingerprint, P6DIGESTS digest, p6ICert** pCert ) P6PURE;
746 
768  P6DECLCOMMETHOD(getCertificateChain)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert** pCertChain, P6UINT32 numChain, P6UINT32* pNumWritten ) P6PURE;
769 
788  P6DECLCOMMETHOD(getCertificateChainByUUID)(P6THIS_ P6UUID* pUUID, p6ICert** pCertChain, P6UINT32 numChain, P6UINT32* pNumWritten ) P6PURE;
789 
808  P6DECLCOMMETHOD(getBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR* pBlob ) P6PURE;
809 
824  P6DECLCOMMETHOD(getBlobByUUID)(P6THIS_ P6UUID* pUUID, P6BSTR* pBlob ) P6PURE;
825 
840  P6DECLCOMMETHOD(getLinkByUUID)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_LINK* pLink ) P6PURE;
841 
856  P6DECLCOMMETHOD(getType)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ENTRY* pType ) P6PURE;
857 
878  P6DECLCOMMETHOD(setKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain, P6UUID* pUUID ) P6PURE;
879 
898  P6DECLCOMMETHOD(setCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert* pCert, P6UUID* pUUID ) P6PURE;
899 
918  P6DECLCOMMETHOD(setBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR blob, P6UUID* pUUID ) P6PURE;
919 
941  P6DECLCOMMETHOD(createLink)(P6THIS_ P6UUID* pSourceUUID, P6UUID* pTargetUUID, const P6WCHAR* pLinkType, const P6WCHAR* pMetaData, P6UUID* pUUID ) P6PURE;
942 
959  P6DECLCOMMETHOD(deleteKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
960 
977  P6DECLCOMMETHOD(deleteCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
978 
995  P6DECLCOMMETHOD(deleteBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
996 
1010  P6DECLCOMMETHOD(deleteItem)(P6THIS_ P6UUID* pUUID ) P6PURE;
1011 
1032  P6DECLCOMMETHOD(replaceKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain ) P6PURE;
1033 
1051  P6DECLCOMMETHOD(replaceKeyByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain ) P6PURE;
1052 
1070  P6DECLCOMMETHOD(replaceCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert* pCert ) P6PURE;
1071 
1086  P6DECLCOMMETHOD(replaceCertificateByUUID)(P6THIS_ P6UUID* pUUID, p6ICert* pCert ) P6PURE;
1087 
1105  P6DECLCOMMETHOD(replaceBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR blob ) P6PURE;
1106 
1121  P6DECLCOMMETHOD(replaceBlobByUUID)(P6THIS_ P6UUID* pUUID, P6BSTR blob ) P6PURE;
1122 
1143  P6DECLCOMMETHOD(updateKeyMetaData)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey ) P6PURE;
1144 
1162  P6DECLCOMMETHOD(updateKeyMetaDataByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey* pKey ) P6PURE;
1163 
1182  P6DECLCOMMETHOD(enumEntries)(P6THIS_ P6KEYSTORE_TYPE byType, const P6WCHAR* pNamespace, p6IEnumKeystore** ppEnum ) P6PURE;
1183 
1198  P6DECLCOMMETHOD(enumNamespaces)(P6THIS_ p6IEnumWStr** ppEnum ) P6PURE;
1199 };
1200 
1201 // {6ECB5D85-2751-49ad-99DA-2AA173FC2737}
1202 #define IF_p6IKeystore {0x6ecb5d85,0x2751,0x49ad,{0x99,0xda,0x2a,0xa1,0x73,0xfc,0x27,0x37}}
1203 
1204 // {C65CDFF1-4E4A-4bba-9E38-1273C8895E0F}
1205 #define COMP_p6Keystore {0xc65cdff1,0x4e4a,0x4bba,{0x9e,0x38,0x12,0x73,0xc8,0x89,0x5e,0xf}}
1206 
1207 
1208 
1215 #undef INTERFACE
1216 #define INTERFACE p6IKeystoreQuery2
1218 {
1239  P6DECLCOMMETHOD(enumKeyBySize)(P6THIS_ P6UINT32 size, P6INT8 comparator, p6IEnumKeystore** ppEnum ) P6PURE;
1240 
1256  P6DECLCOMMETHOD(enumKeyByState)(P6THIS_ P6CRYPTOKEYSTATE state, p6IEnumKeystore** ppEnum ) P6PURE;
1257 
1273  P6DECLCOMMETHOD(enumKeyByCipher)(P6THIS_ P6CRYPTOCIPHER cipher, p6IEnumKeystore** ppEnum ) P6PURE;
1274 
1290  P6DECLCOMMETHOD(enumKeyByClass)(P6THIS_ P6CRYPTOKEYCLASS keyClass, p6IEnumKeystore** ppEnum ) P6PURE;
1291 
1307  P6DECLCOMMETHOD(enumKeyByExpired)(P6THIS_ P6TIME expired, p6IEnumKeystore** ppEnum ) P6PURE;
1308 
1324  P6DECLCOMMETHOD(enumKeyByRenewal)(P6THIS_ P6TIME expired, p6IEnumKeystore** ppEnum ) P6PURE;
1325 
1346  P6DECLCOMMETHOD(enumKeyBySizeByCipher)(P6THIS_ P6UINT32 size, P6INT8 comparator, P6CRYPTOCIPHER cipher, p6IEnumKeystore** ppEnum ) P6PURE;
1347 
1368  P6DECLCOMMETHOD(enumKeyBySizeByClass)(P6THIS_ P6UINT32 size, P6INT8 comparator, P6CRYPTOKEYCLASS keyClass, p6IEnumKeystore** ppEnum ) P6PURE;
1369 
1390  P6DECLCOMMETHOD(enumKeyLikeCipher)(P6THIS_ const P6WCHAR* pCipher, p6IEnumKeystore** ppEnum ) P6PURE;
1391 
1409  P6DECLCOMMETHOD(enumKeyLikeDescriptiveLabel)(P6THIS_ const P6WCHAR* pDescription, p6IEnumKeystore** ppEnum ) P6PURE;
1410 
1428  P6DECLCOMMETHOD(enumKeyLikeUse)(P6THIS_ const P6WCHAR* pUse, p6IEnumKeystore** ppEnum ) P6PURE;
1429 
1444  P6DECLCOMMETHOD(enumCertBySubject)(P6THIS_ const P6WCHAR* pSubject, p6IEnumKeystore** ppEnum ) P6PURE;
1445 
1461  P6DECLCOMMETHOD(enumLinkBySource)(P6THIS_ P6UUID* pSource, p6IEnumKeystore** ppEnum ) P6PURE;
1462 
1478  P6DECLCOMMETHOD(enumLinkByTarget)(P6THIS_ P6UUID* pTarget, p6IEnumKeystore** ppEnum ) P6PURE;
1479 
1497  P6DECLCOMMETHOD(enumLinkLikeType)(P6THIS_ const P6WCHAR* pType, p6IEnumKeystore** ppEnum ) P6PURE;
1498 
1515  P6DECLCOMMETHOD(enumByAttributeName)(P6THIS_ P6KEYSTORE_TYPE entryType, const P6WCHAR* pName, p6IEnumKeystore** ppEnum ) P6PURE;
1516 
1534  P6DECLCOMMETHOD(enumByAttributeString)(P6THIS_ P6KEYSTORE_TYPE entryType, const P6WCHAR* pName, const P6WCHAR* pValueStr, p6IEnumKeystore** ppEnum ) P6PURE;
1535 
1557  P6DECLCOMMETHOD(enumByAttributeInteger)(P6THIS_ P6KEYSTORE_TYPE entryType, const P6WCHAR* pName, P6INT32 valueInt, P6INT8 comparitor, p6IEnumKeystore** ppEnum ) P6PURE;
1558 
1580  P6DECLCOMMETHOD(enumByAttributeTime)(P6THIS_ P6KEYSTORE_TYPE entryType, const P6WCHAR* pName, P6TIME timeStamp, P6INT8 comparitor, p6IEnumKeystore** ppEnum ) P6PURE;
1581 };
1582 // {319939EA-C0F5-4ad1-B401-D1EF09AA182C}
1583 #define IF_p6IKeystoreQuery2 {0x319939ea,0xc0f5,0x4ad1,{0xb4,0x1,0xd1,0xef,0x9,0xaa,0x18,0x2c}}
1584 
1585 
1595 #undef INTERFACE
1596 #define INTERFACE p6IKeystore2
1598 {
1617  P6DECLCOMMETHOD(getKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey** pKey ) P6PURE;
1618 
1633  P6DECLCOMMETHOD(getKeyByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey** pKey ) P6PURE;
1634 
1652  P6DECLCOMMETHOD(getCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert** pCert ) P6PURE;
1653 
1668  P6DECLCOMMETHOD(getCertificateByUUID)(P6THIS_ P6UUID* pUUID, p6ICert** pCert ) P6PURE;
1669 
1686  P6DECLCOMMETHOD(getCertificateByFingerprint)(P6THIS_ P6WCHAR* pFingerprint, P6DIGESTS digest, p6ICert** pCert ) P6PURE;
1687 
1709  P6DECLCOMMETHOD(getCertificateChain)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert** pCertChain, P6UINT32 numChain, P6UINT32* pNumWritten ) P6PURE;
1710 
1729  P6DECLCOMMETHOD(getCertificateChainByUUID)(P6THIS_ P6UUID* pUUID, p6ICert** pCertChain, P6UINT32 numChain, P6UINT32* pNumWritten ) P6PURE;
1730 
1749  P6DECLCOMMETHOD(getBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR* pBlob ) P6PURE;
1750 
1765  P6DECLCOMMETHOD(getBlobByUUID)(P6THIS_ P6UUID* pUUID, P6BSTR* pBlob ) P6PURE;
1766 
1781  P6DECLCOMMETHOD(getLinkByUUID)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_LINK* pLink ) P6PURE;
1782 
1797  P6DECLCOMMETHOD(getType)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ENTRY* pType ) P6PURE;
1798 
1819  P6DECLCOMMETHOD(setKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain, P6UUID* pUUID ) P6PURE;
1820 
1839  P6DECLCOMMETHOD(setCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert* pCert, P6UUID* pUUID ) P6PURE;
1840 
1859  P6DECLCOMMETHOD(setBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR blob, P6UUID* pUUID ) P6PURE;
1860 
1882  P6DECLCOMMETHOD(createLink)(P6THIS_ P6UUID* pSourceUUID, P6UUID* pTargetUUID, const P6WCHAR* pLinkType, const P6WCHAR* pMetaData, P6UUID* pUUID ) P6PURE;
1883 
1900  P6DECLCOMMETHOD(deleteKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
1901 
1918  P6DECLCOMMETHOD(deleteCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
1919 
1936  P6DECLCOMMETHOD(deleteBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
1937 
1951  P6DECLCOMMETHOD(deleteItem)(P6THIS_ P6UUID* pUUID ) P6PURE;
1952 
1973  P6DECLCOMMETHOD(replaceKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain ) P6PURE;
1974 
1992  P6DECLCOMMETHOD(replaceKeyByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain ) P6PURE;
1993 
2011  P6DECLCOMMETHOD(replaceCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert* pCert ) P6PURE;
2012 
2027  P6DECLCOMMETHOD(replaceCertificateByUUID)(P6THIS_ P6UUID* pUUID, p6ICert* pCert ) P6PURE;
2028 
2046  P6DECLCOMMETHOD(replaceBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR blob ) P6PURE;
2047 
2062  P6DECLCOMMETHOD(replaceBlobByUUID)(P6THIS_ P6UUID* pUUID, P6BSTR blob ) P6PURE;
2063 
2084  P6DECLCOMMETHOD(updateKeyMetaData)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey ) P6PURE;
2085 
2103  P6DECLCOMMETHOD(updateKeyMetaDataByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey* pKey ) P6PURE;
2104 
2123  P6DECLCOMMETHOD(enumEntries)(P6THIS_ P6KEYSTORE_TYPE byType, const P6WCHAR* pNamespace, p6IEnumKeystore** ppEnum ) P6PURE;
2124 
2139  P6DECLCOMMETHOD(enumNamespaces)(P6THIS_ p6IEnumWStr** ppEnum ) P6PURE;
2140 
2157  P6DECLCOMMETHOD(addAttribute)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ATTRIBUTE newAttrib ) P6PURE;
2158 
2175  P6DECLCOMMETHOD(updateAttribute)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ATTRIBUTE changeAttrib ) P6PURE;
2176 
2193  P6DECLCOMMETHOD(getAttribute)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ATTRIBUTE* pAttrib ) P6PURE;
2194 
2210  P6DECLCOMMETHOD(deleteAttribute)(P6THIS_ P6UUID* pUUID, const P6WCHAR* pName ) P6PURE;
2211 
2227  P6DECLCOMMETHOD(enumAttributes)(P6THIS_ P6UUID* pUUID, p6IEnumKeystoreAttrib** ppEnum ) P6PURE;
2228 };
2229 
2230 // {8B158122-6543-45c3-A84E-B274045BAC9C}
2231 #define IF_p6IKeystore2 {0x8b158122,0x6543,0x45c3,{0xa8,0x4e,0xb2,0x74,0x4,0x5b,0xac,0x9c}}
2232 
2233 // {1878D1AA-F326-4f82-AA05-AE1F30156AF0}
2234 #define COMP_p6Keystore2 {0x1878d1aa,0xf326,0x4f82,{0xaa,0x5,0xae,0x1f,0x30,0x15,0x6a,0xf0}}
2235 
2236 
2244 #undef INTERFACE
2245 #define INTERFACE p6IKeystoreComplexQuery
2247 {
2265  P6DECLCOMMETHOD(enumByManyAttributes)(P6THIS_ P6KEYSTORE_ATTRIBUTE* pList, P6UINT32 listCount, p6IEnumKeystore** ppEnum ) P6PURE;
2266 
2267 };
2268 // {165C1E5E-340F-4d0a-B7F1-F2F52E9AF3C7}
2269 #define IF_p6IKeystoreComplexQuery {0x165c1e5e,0x340f,0x4d0a,{0xb7,0xf1,0xf2,0xf5,0x2e,0x9a,0xf3,0xc}}
2270 
2278 #undef INTERFACE
2279 #define INTERFACE p6IKeystoreSSL
2281 {
2356  P6DECLCOMMETHOD(importCredentials)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,p6ICryptoKey *pPrvKey,p6ICert *pCert,p6ICert *parChain,P6UINT32 cChain,P6UUID *pUUID) P6PURE;
2357 
2424  P6DECLCOMMETHOD(importCredentialsPKCS12)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,const P6WCHAR *pszFilepath,const P6CHAR *pszPassPhrase,P6UUID *pUUID) P6PURE;
2425 
2499  P6DECLCOMMETHOD(importCredentialsPEM)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,const P6WCHAR *pszPrvKeyFile,const P6WCHAR *pszCertsFile,const P6CHAR *pszPassPhrase,P6UUID *pUUID) P6PURE;
2500 
2517  P6DECLCOMMETHOD(importTrustedRootCert)(P6THIS_ p6ICert *pRootCert,P6UUID *puuidCert) P6PURE;
2518 
2539  P6DECLCOMMETHOD(importTrustedRootCertFromPEMFile)(P6THIS_ const P6WCHAR *pszRootCertFile,P6UUID *puuidCert) P6PURE;
2540 };
2541 
2542 // {CAFAF35E-F45D-4D4A-85D0-E323A999FC55}
2543 #define IF_p6IKeystoreSSL {0xCAFAF35E,0xF45D,0x4D4A,{0x85,0xD0,0xE3,0x23,0xA9,0x99,0xFC,0x55}}
2544 
2545 
2550 #define P6_KEYSTORE_SERVICE_INTERFACE "p6r.com.p6IKeystore.Global"
2551 
2552 #ifdef __cplusplus
2553 } // extern "C"
2554 } // namespace
2555 #endif
2556 
2557 #endif
2558 
2559 
2560 
2561 
2562 
2563 
P6SIGNHMAC
Supported HMAC algorthms for signing:
Definition: p6sign.h:45
This interface allows the caller to find an existing key, certificate, or blob (e.g., password) by a namespace and name pair.
Definition: p6keystore.h:656
Cryptography component definitions.
This interface provides key metadata infrormation and key access.
Definition: p6cryptokey.h:1195
P6KEYSTORE_TYPE sourceType
Definition: p6keystore.h:115
unsigned int P6UINT32
Definition: p6types.h:46
This is an often used construct where an application needs to provide an unknown number of wide strin...
#define P6KSMAXATTRIBSTR
Definition: p6keystore.h:69
#define P6KSMAXLINKTYPE
Definition: p6keystore.h:66
#define P6DECLAREICOM
Definition: p6defs.h:175
P6UINT32 P6KEYSTOREFLAGS
P6KEYSTOREFLAGS.
Definition: p6keystore.h:37
const P6KEYSTOREFLAGS P6KEYSTORE_NOFLAGS
Definition: p6keystore.h:38
#define P6PURE
Definition: p6defs.h:176
This interface allows the user to enumerate keys or certificates based on different sets of meta data...
Definition: p6keystore.h:243
This interface allows the caller to find an existing key, certificate, or blob (e.g., password) by a namespace and name pair.
Definition: p6keystore.h:1597
#define P6KSMAXNAME
Definition: p6keystore.h:65
P6CRYPTOKEYCLASS
Used to categorize keys:
Definition: p6cryptokey.h:49
unsigned char P6BOOL
Boolean type.
Definition: p6types.h:112
char P6INT8
Definition: p6types.h:37
P6KEYSTORE_TYPE
Value indicates the type of data returned in a P6R::p6IEnumKeystore enumerator.
Definition: p6keystore.h:55
Provide SSL related helper methods to make it easier to store SSL client and server certificates in t...
Definition: p6keystore.h:2280
P6CRYPTOCIPHER
Cipher Type.
Definition: p6crypto.h:112
const P6KEYSTOREFLAGS P6KEYSTORE_RECOVERBADSIG
Definition: p6keystore.h:39
const P6KEYSTOREFLAGS P6KEYSTORE_NOLOADMETA
Definition: p6keystore.h:40
wchar_t P6WCHAR
Wide character type see p6i18n.h.
Definition: p6types.h:90
Interface definitions for symmetric key encryption.
int P6INT32
Definition: p6types.h:47
The base interface all [p6]COM components must derive from and implement.
Definition: p6comdef.h:97
#define P6KSMAXATTRIBNAME
Definition: p6keystore.h:68
P6KEYSTORE_TYPE type
Definition: p6keystore.h:87
The p6IEnumKeystore returns this type in order to distinguish between the keys, certs, blobs, and links that can all be stored in the same keystore.
Definition: p6keystore.h:85
This interface is a general purpose string enumerator.
Definition: p6enumwstr.h:29
Binary string.
Definition: p6types.h:164
P6CRYPTOKEYSTATE
The current state of the key as defined in: NIST DRAFT Special Publication 800-130, A Framework for Designing Cryptographic Key Management Systems, June 15, 2010.
Definition: p6cryptokey.h:756
Interface definition for X509 V3 Certificates.
A universally unique indentifier (UUID).
Definition: p6types.h:141
This enumerator allows the caller to get a list of all defined entries that exist in the openned keys...
Definition: p6keystore.h:162
#define P6KSMAXLINKMETA
Definition: p6keystore.h:67
This interface allows the caller to access parts of an X509 V3 certificate for use in protocols and i...
Definition: p6cert.h:111
#define P6DECLCOMMETHOD(method)
Definition: p6defs.h:173
This interface provides symmetric key encryption/decryption using AES, Blowfish, CAST5 DES and varian...
Definition: p6symmetric.h:62
#define P6KSMAXNAMESPACE
Definition: p6keystore.h:64
P6INT64 P6TIME
The wallclock time represented as the number of microseconds since midnight January 1 1970 UTC...
Definition: p6types.h:238
A key, certificate, and blob can have any number of associated attributes.
Definition: p6keystore.h:142
The p6IKeystore interface uses the following definition for link retrival.
Definition: p6keystore.h:113
#define P6THIS_
Definition: p6defs.h:177
This enumerator allows the caller to get a list of all defined attributes associated with a specific ...
Definition: p6keystore.h:202
Interface definition for the cryptographic signature generation and verification. ...
P6KEYSTORE_TYPE targetType
Definition: p6keystore.h:116
This interface allows the user to build complex queries of multiple attributes at the same time to pe...
Definition: p6keystore.h:2246
This interface allows the user to enumerate keys or certificates based on different sets of meta data...
Definition: p6keystore.h:1217
#define P6THIS
Definition: p6defs.h:178
P6DIGESTS
Definition: p6digest.h:298
char P6CHAR
Narrow character type.
Definition: p6types.h:84
This interface is used to create/open/manage the keystore.
Definition: p6keystore.h:540
#define P6DECLAREIF_(iface, baseif)
Definition: p6defs.h:172
P6R Cryptographic key interface definitions.