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 static const P6KEYSTOREFLAGS P6KEYSTORE_NOFLAGS = 0x00000000;
39 static const P6KEYSTOREFLAGS P6KEYSTORE_RECOVERBADSIG = 0x00000001;
40 static 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 
415  P6DECLCOMMETHOD(enumKeyLikeCipher)(P6THIS_ const P6WCHAR* pCipher, p6IEnumKeystore** ppEnum ) P6PURE;
416 
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 
662 #undef INTERFACE
663 #define INTERFACE p6IKeystore
665 {
684  P6DECLCOMMETHOD(getKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey** pKey ) P6PURE;
685 
700  P6DECLCOMMETHOD(getKeyByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey** pKey ) P6PURE;
701 
719  P6DECLCOMMETHOD(getCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert** pCert ) P6PURE;
720 
735  P6DECLCOMMETHOD(getCertificateByUUID)(P6THIS_ P6UUID* pUUID, p6ICert** pCert ) P6PURE;
736 
754  P6DECLCOMMETHOD(getCertificateByFingerprint)(P6THIS_ P6WCHAR* pFingerprint, P6DIGESTS digest, p6ICert** pCert ) P6PURE;
755 
778  P6DECLCOMMETHOD(getCertificateChain)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert** pCertChain, P6UINT32 numChain, P6UINT32* pNumWritten ) P6PURE;
779 
799  P6DECLCOMMETHOD(getCertificateChainByUUID)(P6THIS_ P6UUID* pUUID, p6ICert** pCertChain, P6UINT32 numChain, P6UINT32* pNumWritten ) P6PURE;
800 
819  P6DECLCOMMETHOD(getBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR* pBlob ) P6PURE;
820 
835  P6DECLCOMMETHOD(getBlobByUUID)(P6THIS_ P6UUID* pUUID, P6BSTR* pBlob ) P6PURE;
836 
851  P6DECLCOMMETHOD(getLinkByUUID)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_LINK* pLink ) P6PURE;
852 
867  P6DECLCOMMETHOD(getType)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ENTRY* pType ) P6PURE;
868 
889  P6DECLCOMMETHOD(setKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain, P6UUID* pUUID ) P6PURE;
890 
909  P6DECLCOMMETHOD(setCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert* pCert, P6UUID* pUUID ) P6PURE;
910 
929  P6DECLCOMMETHOD(setBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR blob, P6UUID* pUUID ) P6PURE;
930 
954  P6DECLCOMMETHOD(createLink)(P6THIS_ P6UUID* pSourceUUID, P6UUID* pTargetUUID, const P6WCHAR* pLinkType, const P6WCHAR* pMetaData, P6UUID* pUUID ) P6PURE;
955 
972  P6DECLCOMMETHOD(deleteKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
973 
990  P6DECLCOMMETHOD(deleteCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
991 
1008  P6DECLCOMMETHOD(deleteBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
1009 
1023  P6DECLCOMMETHOD(deleteItem)(P6THIS_ P6UUID* pUUID ) P6PURE;
1024 
1045  P6DECLCOMMETHOD(replaceKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain ) P6PURE;
1046 
1064  P6DECLCOMMETHOD(replaceKeyByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain ) P6PURE;
1065 
1083  P6DECLCOMMETHOD(replaceCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert* pCert ) P6PURE;
1084 
1099  P6DECLCOMMETHOD(replaceCertificateByUUID)(P6THIS_ P6UUID* pUUID, p6ICert* pCert ) P6PURE;
1100 
1118  P6DECLCOMMETHOD(replaceBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR blob ) P6PURE;
1119 
1134  P6DECLCOMMETHOD(replaceBlobByUUID)(P6THIS_ P6UUID* pUUID, P6BSTR blob ) P6PURE;
1135 
1155  P6DECLCOMMETHOD(updateKeyMetaData)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey ) P6PURE;
1156 
1173  P6DECLCOMMETHOD(updateKeyMetaDataByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey* pKey ) P6PURE;
1174 
1193  P6DECLCOMMETHOD(enumEntries)(P6THIS_ P6KEYSTORE_TYPE byType, const P6WCHAR* pNamespace, p6IEnumKeystore** ppEnum ) P6PURE;
1194 
1209  P6DECLCOMMETHOD(enumNamespaces)(P6THIS_ p6IEnumWStr** ppEnum ) P6PURE;
1210 };
1211 
1212 // {6ECB5D85-2751-49ad-99DA-2AA173FC2737}
1213 #define IF_p6IKeystore {0x6ecb5d85,0x2751,0x49ad,{0x99,0xda,0x2a,0xa1,0x73,0xfc,0x27,0x37}}
1214 
1215 // {C65CDFF1-4E4A-4bba-9E38-1273C8895E0F}
1216 #define COMP_p6Keystore {0xc65cdff1,0x4e4a,0x4bba,{0x9e,0x38,0x12,0x73,0xc8,0x89,0x5e,0xf}}
1217 
1224 #undef INTERFACE
1225 #define INTERFACE p6IKeystoreQuery2
1227 {
1248  P6DECLCOMMETHOD(enumKeyBySize)(P6THIS_ P6UINT32 size, P6INT8 comparator, p6IEnumKeystore** ppEnum ) P6PURE;
1249 
1265  P6DECLCOMMETHOD(enumKeyByState)(P6THIS_ P6CRYPTOKEYSTATE state, p6IEnumKeystore** ppEnum ) P6PURE;
1266 
1282  P6DECLCOMMETHOD(enumKeyByCipher)(P6THIS_ P6CRYPTOCIPHER cipher, p6IEnumKeystore** ppEnum ) P6PURE;
1283 
1299  P6DECLCOMMETHOD(enumKeyByClass)(P6THIS_ P6CRYPTOKEYCLASS keyClass, p6IEnumKeystore** ppEnum ) P6PURE;
1300 
1316  P6DECLCOMMETHOD(enumKeyByExpired)(P6THIS_ P6TIME expired, p6IEnumKeystore** ppEnum ) P6PURE;
1317 
1333  P6DECLCOMMETHOD(enumKeyByRenewal)(P6THIS_ P6TIME expired, p6IEnumKeystore** ppEnum ) P6PURE;
1334 
1355  P6DECLCOMMETHOD(enumKeyBySizeByCipher)(P6THIS_ P6UINT32 size, P6INT8 comparator, P6CRYPTOCIPHER cipher, p6IEnumKeystore** ppEnum ) P6PURE;
1356 
1377  P6DECLCOMMETHOD(enumKeyBySizeByClass)(P6THIS_ P6UINT32 size, P6INT8 comparator, P6CRYPTOKEYCLASS keyClass, p6IEnumKeystore** ppEnum ) P6PURE;
1378 
1398  P6DECLCOMMETHOD(enumKeyLikeCipher)(P6THIS_ const P6WCHAR* pCipher, p6IEnumKeystore** ppEnum ) P6PURE;
1399 
1418  P6DECLCOMMETHOD(enumKeyLikeDescriptiveLabel)(P6THIS_ const P6WCHAR* pDescription, p6IEnumKeystore** ppEnum ) P6PURE;
1419 
1437  P6DECLCOMMETHOD(enumKeyLikeUse)(P6THIS_ const P6WCHAR* pUse, p6IEnumKeystore** ppEnum ) P6PURE;
1438 
1453  P6DECLCOMMETHOD(enumCertBySubject)(P6THIS_ const P6WCHAR* pSubject, p6IEnumKeystore** ppEnum ) P6PURE;
1454 
1470  P6DECLCOMMETHOD(enumLinkBySource)(P6THIS_ P6UUID* pSource, p6IEnumKeystore** ppEnum ) P6PURE;
1471 
1487  P6DECLCOMMETHOD(enumLinkByTarget)(P6THIS_ P6UUID* pTarget, p6IEnumKeystore** ppEnum ) P6PURE;
1488 
1506  P6DECLCOMMETHOD(enumLinkLikeType)(P6THIS_ const P6WCHAR* pType, p6IEnumKeystore** ppEnum ) P6PURE;
1507 
1524  P6DECLCOMMETHOD(enumByAttributeName)(P6THIS_ P6KEYSTORE_TYPE entryType, const P6WCHAR* pName, p6IEnumKeystore** ppEnum ) P6PURE;
1525 
1543  P6DECLCOMMETHOD(enumByAttributeString)(P6THIS_ P6KEYSTORE_TYPE entryType, const P6WCHAR* pName, const P6WCHAR* pValueStr, p6IEnumKeystore** ppEnum ) P6PURE;
1544 
1563  P6DECLCOMMETHOD(enumByAttributeInteger)(P6THIS_ P6KEYSTORE_TYPE entryType, const P6WCHAR* pName, P6INT32 valueInt, P6INT8 comparitor, p6IEnumKeystore** ppEnum ) P6PURE;
1564 
1583  P6DECLCOMMETHOD(enumByAttributeTime)(P6THIS_ P6KEYSTORE_TYPE entryType, const P6WCHAR* pName, P6TIME timeStamp, P6INT8 comparitor, p6IEnumKeystore** ppEnum ) P6PURE;
1584 };
1585 // {319939EA-C0F5-4ad1-B401-D1EF09AA182C}
1586 #define IF_p6IKeystoreQuery2 {0x319939ea,0xc0f5,0x4ad1,{0xb4,0x1,0xd1,0xef,0x9,0xaa,0x18,0x2c}}
1587 
1588 
1606 #undef INTERFACE
1607 #define INTERFACE p6IKeystore2
1609 {
1628  P6DECLCOMMETHOD(getKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey** pKey ) P6PURE;
1629 
1644  P6DECLCOMMETHOD(getKeyByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey** pKey ) P6PURE;
1645 
1663  P6DECLCOMMETHOD(getCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert** pCert ) P6PURE;
1664 
1679  P6DECLCOMMETHOD(getCertificateByUUID)(P6THIS_ P6UUID* pUUID, p6ICert** pCert ) P6PURE;
1680 
1698  P6DECLCOMMETHOD(getCertificateByFingerprint)(P6THIS_ P6WCHAR* pFingerprint, P6DIGESTS digest, p6ICert** pCert ) P6PURE;
1699 
1722  P6DECLCOMMETHOD(getCertificateChain)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert** pCertChain, P6UINT32 numChain, P6UINT32* pNumWritten ) P6PURE;
1723 
1743  P6DECLCOMMETHOD(getCertificateChainByUUID)(P6THIS_ P6UUID* pUUID, p6ICert** pCertChain, P6UINT32 numChain, P6UINT32* pNumWritten ) P6PURE;
1744 
1763  P6DECLCOMMETHOD(getBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR* pBlob ) P6PURE;
1764 
1779  P6DECLCOMMETHOD(getBlobByUUID)(P6THIS_ P6UUID* pUUID, P6BSTR* pBlob ) P6PURE;
1780 
1795  P6DECLCOMMETHOD(getLinkByUUID)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_LINK* pLink ) P6PURE;
1796 
1811  P6DECLCOMMETHOD(getType)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ENTRY* pType ) P6PURE;
1812 
1833  P6DECLCOMMETHOD(setKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain, P6UUID* pUUID ) P6PURE;
1834 
1853  P6DECLCOMMETHOD(setCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert* pCert, P6UUID* pUUID ) P6PURE;
1854 
1873  P6DECLCOMMETHOD(setBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR blob, P6UUID* pUUID ) P6PURE;
1874 
1898  P6DECLCOMMETHOD(createLink)(P6THIS_ P6UUID* pSourceUUID, P6UUID* pTargetUUID, const P6WCHAR* pLinkType, const P6WCHAR* pMetaData, P6UUID* pUUID ) P6PURE;
1899 
1916  P6DECLCOMMETHOD(deleteKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
1917 
1934  P6DECLCOMMETHOD(deleteCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
1935 
1952  P6DECLCOMMETHOD(deleteBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
1953 
1967  P6DECLCOMMETHOD(deleteItem)(P6THIS_ P6UUID* pUUID ) P6PURE;
1968 
1989  P6DECLCOMMETHOD(replaceKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain ) P6PURE;
1990 
2008  P6DECLCOMMETHOD(replaceKeyByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain ) P6PURE;
2009 
2027  P6DECLCOMMETHOD(replaceCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert* pCert ) P6PURE;
2028 
2043  P6DECLCOMMETHOD(replaceCertificateByUUID)(P6THIS_ P6UUID* pUUID, p6ICert* pCert ) P6PURE;
2044 
2062  P6DECLCOMMETHOD(replaceBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR blob ) P6PURE;
2063 
2078  P6DECLCOMMETHOD(replaceBlobByUUID)(P6THIS_ P6UUID* pUUID, P6BSTR blob ) P6PURE;
2079 
2099  P6DECLCOMMETHOD(updateKeyMetaData)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey ) P6PURE;
2100 
2117  P6DECLCOMMETHOD(updateKeyMetaDataByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey* pKey ) P6PURE;
2118 
2137  P6DECLCOMMETHOD(enumEntries)(P6THIS_ P6KEYSTORE_TYPE byType, const P6WCHAR* pNamespace, p6IEnumKeystore** ppEnum ) P6PURE;
2138 
2153  P6DECLCOMMETHOD(enumNamespaces)(P6THIS_ p6IEnumWStr** ppEnum ) P6PURE;
2154 
2171  P6DECLCOMMETHOD(addAttribute)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ATTRIBUTE newAttrib ) P6PURE;
2172 
2189  P6DECLCOMMETHOD(updateAttribute)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ATTRIBUTE changeAttrib ) P6PURE;
2190 
2207  P6DECLCOMMETHOD(getAttribute)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ATTRIBUTE* pAttrib ) P6PURE;
2208 
2224  P6DECLCOMMETHOD(deleteAttribute)(P6THIS_ P6UUID* pUUID, const P6WCHAR* pName ) P6PURE;
2225 
2241  P6DECLCOMMETHOD(enumAttributes)(P6THIS_ P6UUID* pUUID, p6IEnumKeystoreAttrib** ppEnum ) P6PURE;
2242 };
2243 
2244 // {8B158122-6543-45c3-A84E-B274045BAC9C}
2245 #define IF_p6IKeystore2 {0x8b158122,0x6543,0x45c3,{0xa8,0x4e,0xb2,0x74,0x4,0x5b,0xac,0x9c}}
2246 
2256 #undef INTERFACE
2257 #define INTERFACE p6IKeystore3
2259 {
2278  P6DECLCOMMETHOD(getKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey** pKey ) P6PURE;
2279 
2294  P6DECLCOMMETHOD(getKeyByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey** pKey ) P6PURE;
2295 
2313  P6DECLCOMMETHOD(getCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert** pCert ) P6PURE;
2314 
2329  P6DECLCOMMETHOD(getCertificateByUUID)(P6THIS_ P6UUID* pUUID, p6ICert** pCert ) P6PURE;
2330 
2348  P6DECLCOMMETHOD(getCertificateByFingerprint)(P6THIS_ P6WCHAR* pFingerprint, P6DIGESTS digest, p6ICert** pCert ) P6PURE;
2349 
2372  P6DECLCOMMETHOD(getCertificateChain)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert** pCertChain, P6UINT32 numChain, P6UINT32* pNumWritten ) P6PURE;
2373 
2393  P6DECLCOMMETHOD(getCertificateChainByUUID)(P6THIS_ P6UUID* pUUID, p6ICert** pCertChain, P6UINT32 numChain, P6UINT32* pNumWritten ) P6PURE;
2394 
2413  P6DECLCOMMETHOD(getBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR* pBlob ) P6PURE;
2414 
2429  P6DECLCOMMETHOD(getBlobByUUID)(P6THIS_ P6UUID* pUUID, P6BSTR* pBlob ) P6PURE;
2430 
2445  P6DECLCOMMETHOD(getLinkByUUID)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_LINK* pLink ) P6PURE;
2446 
2461  P6DECLCOMMETHOD(getType)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ENTRY* pType ) P6PURE;
2462 
2483  P6DECLCOMMETHOD(setKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain, P6UUID* pUUID ) P6PURE;
2484 
2503  P6DECLCOMMETHOD(setCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert* pCert, P6UUID* pUUID ) P6PURE;
2504 
2523  P6DECLCOMMETHOD(setBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR blob, P6UUID* pUUID ) P6PURE;
2524 
2548  P6DECLCOMMETHOD(createLink)(P6THIS_ P6UUID* pSourceUUID, P6UUID* pTargetUUID, const P6WCHAR* pLinkType, const P6WCHAR* pMetaData, P6UUID* pUUID ) P6PURE;
2549 
2566  P6DECLCOMMETHOD(deleteKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
2567 
2584  P6DECLCOMMETHOD(deleteCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
2585 
2602  P6DECLCOMMETHOD(deleteBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName ) P6PURE;
2603 
2617  P6DECLCOMMETHOD(deleteItem)(P6THIS_ P6UUID* pUUID ) P6PURE;
2618 
2640  P6DECLCOMMETHOD(replaceKey)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain, P6UUID *pUUID ) P6PURE;
2641 
2660  P6DECLCOMMETHOD(replaceKeyByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey* pKey, p6ICert** pCertChain, P6UINT32 numChain, P6UUID *pnewUUID ) P6PURE;
2679  P6DECLCOMMETHOD(replaceCertificate)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICert* pCert, P6UUID *pUUID ) P6PURE;
2680 
2696  P6DECLCOMMETHOD(replaceCertificateByUUID)(P6THIS_ P6UUID* pUUID, p6ICert* pCert, P6UUID *pnewUUID ) P6PURE;
2697 
2716  P6DECLCOMMETHOD(replaceBlob)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, P6BSTR blob, P6UUID *pUUID ) P6PURE;
2717 
2733  P6DECLCOMMETHOD(replaceBlobByUUID)(P6THIS_ P6UUID* pUUID, P6BSTR blob, P6UUID *pnewUUID ) P6PURE;
2734 
2754  P6DECLCOMMETHOD(updateKeyMetaData)(P6THIS_ const P6WCHAR* pNamespace, const P6WCHAR* pName, p6ICryptoKey* pKey ) P6PURE;
2755 
2772  P6DECLCOMMETHOD(updateKeyMetaDataByUUID)(P6THIS_ P6UUID* pUUID, p6ICryptoKey* pKey ) P6PURE;
2773 
2792  P6DECLCOMMETHOD(enumEntries)(P6THIS_ P6KEYSTORE_TYPE byType, const P6WCHAR* pNamespace, p6IEnumKeystore** ppEnum ) P6PURE;
2793 
2808  P6DECLCOMMETHOD(enumNamespaces)(P6THIS_ p6IEnumWStr** ppEnum ) P6PURE;
2809 
2826  P6DECLCOMMETHOD(addAttribute)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ATTRIBUTE newAttrib ) P6PURE;
2827 
2844  P6DECLCOMMETHOD(updateAttribute)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ATTRIBUTE changeAttrib ) P6PURE;
2845 
2862  P6DECLCOMMETHOD(getAttribute)(P6THIS_ P6UUID* pUUID, P6KEYSTORE_ATTRIBUTE* pAttrib ) P6PURE;
2863 
2879  P6DECLCOMMETHOD(deleteAttribute)(P6THIS_ P6UUID* pUUID, const P6WCHAR* pName ) P6PURE;
2880 
2896  P6DECLCOMMETHOD(enumAttributes)(P6THIS_ P6UUID* pUUID, p6IEnumKeystoreAttrib** ppEnum ) P6PURE;
2897 };
2898 
2899 /*{0FF257BE-43BD-41D2-7EC5-51621C8CC48D}*/
2900 #define IF_p6IKeystore3 {0x0FF257BE,0x43BD,0x41D2,{0x7E,0xC5,0x51,0x62,0x1C,0x8C,0xC4,0x8D}}
2901 
2909 #undef INTERFACE
2910 #define INTERFACE p6IKeystoreComplexQuery
2912 {
2930  P6DECLCOMMETHOD(enumByManyAttributes)(P6THIS_ P6KEYSTORE_ATTRIBUTE* pList, P6UINT32 listCount, p6IEnumKeystore** ppEnum ) P6PURE;
2931 
2932 };
2933 // {165C1E5E-340F-4d0a-B7F1-F2F52E9AF3C7}
2934 #define IF_p6IKeystoreComplexQuery {0x165c1e5e,0x340f,0x4d0a,{0xb7,0xf1,0xf2,0xf5,0x2e,0x9a,0xf3,0xc}}
2935 
2951 #undef INTERFACE
2952 #define INTERFACE p6IKeystoreSSL
2954 {
3029  P6DECLCOMMETHOD(importCredentials)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,p6ICryptoKey *pPrvKey,p6ICert *pCert,p6ICert *parChain,P6UINT32 cChain,P6UUID *pUUID) P6PURE;
3030 
3097  P6DECLCOMMETHOD(importCredentialsPKCS12)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,const P6WCHAR *pszFilepath,const P6CHAR *pszPassPhrase,P6UUID *pUUID) P6PURE;
3098 
3172  P6DECLCOMMETHOD(importCredentialsPEM)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,const P6WCHAR *pszPrvKeyFile,const P6WCHAR *pszCertsFile,const P6CHAR *pszPassPhrase,P6UUID *pUUID) P6PURE;
3173 
3190  P6DECLCOMMETHOD(importTrustedRootCert)(P6THIS_ p6ICert *pRootCert,P6UUID *puuidCert) P6PURE;
3191 
3212  P6DECLCOMMETHOD(importTrustedRootCertFromPEMFile)(P6THIS_ const P6WCHAR *pszRootCertFile,P6UUID *puuidCert) P6PURE;
3213 };
3214 
3215 // {CAFAF35E-F45D-4D4A-85D0-E323A999FC55}
3216 #define IF_p6IKeystoreSSL {0xCAFAF35E,0xF45D,0x4D4A,{0x85,0xD0,0xE3,0x23,0xA9,0x99,0xFC,0x55}}
3217 
3218 
3226 #undef INTERFACE
3227 #define INTERFACE p6IKeystoreSSL2
3229 {
3304  P6DECLCOMMETHOD(importCredentials)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,p6ICryptoKey *pPrvKey,p6ICert *pCert,p6ICert *parChain,P6UINT32 cChain,P6UUID *pUUID) P6PURE;
3305 
3372  P6DECLCOMMETHOD(importCredentialsPKCS12)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,const P6WCHAR *pszFilepath,const P6CHAR *pszPassPhrase,P6UUID *pUUID) P6PURE;
3373 
3447  P6DECLCOMMETHOD(importCredentialsPEM)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,const P6WCHAR *pszPrvKeyFile,const P6WCHAR *pszCertsFile,const P6CHAR *pszPassPhrase,P6UUID *pUUID) P6PURE;
3448 
3465  P6DECLCOMMETHOD(importTrustedRootCert)(P6THIS_ p6ICert *pRootCert,P6UUID *puuidCert) P6PURE;
3466 
3487  P6DECLCOMMETHOD(importTrustedRootCertFromPEMFile)(P6THIS_ const P6WCHAR *pszRootCertFile,const P6CHAR *pszPassPhrase,P6UUID *puuidCert) P6PURE;
3488 
3561  P6DECLCOMMETHOD(replaceCredentials)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,p6ICryptoKey *pPrvKey,p6ICert *pCert,p6ICert *parChain,P6UINT32 cChain,P6UUID *pUUID) P6PURE;
3562 
3629  P6DECLCOMMETHOD(replaceCredentialsPKCS12)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,const P6WCHAR *pszFilepath,const P6CHAR *pszPassPhrase,P6UUID *pUUID) P6PURE;
3630 
3705  P6DECLCOMMETHOD(replaceCredentialsPEM)(P6THIS_ P6BOOL bClient,const P6WCHAR *pszID,const P6WCHAR *pszPrvKeyFile,const P6WCHAR *pszCertsFile,const P6CHAR *pszPassPhrase,P6UUID *pUUID) P6PURE;
3706 
3723  P6DECLCOMMETHOD(replaceTrustedRootCert)(P6THIS_ p6ICert *pRootCert,P6UUID *puuidCert) P6PURE;
3724 
3753  P6DECLCOMMETHOD(replaceTrustedRootCertFromPEMFile)(P6THIS_ const P6WCHAR *pszRootCertFile,const P6CHAR *pszPassPhrase,P6UUID *puuidCert) P6PURE;
3754 };
3755 
3756 /*{4550F136-49B3-6FA0-0B55-B797699F1539}*/
3757 #define IF_p6IKeystoreSSL2 {0x4550F136,0x49B3,0x6FA0,{0x0B,0x55,0xB7,0x97,0x69,0x9F,0x15,0x39}}
3758 
3759 
3760 
3765 #define P6_KEYSTORE_SERVICE_INTERFACE "p6r.com.p6IKeystore.Global"
3766 
3767 #ifdef __cplusplus
3768 } // extern "C"
3769 } // namespace
3770 #endif
3771 
3772 #endif
3773 
3774 
3775 
3776 
3777 
3778 
P6SIGNHMAC
Supported HMAC algorthms for signing:
Definition: p6sign.h:45
<div class="p6box"> This interface has been depricated in favor of p6IKeystore3.
Definition: p6keystore.h:664
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
#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
<div class="p6box"> This interface has been depricated in favor of p6IKeystore3.
Definition: p6keystore.h:1608
#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
<div class="p6box"> This interface has been depricated in favor of p6IKeystoreSSL2.
Definition: p6keystore.h:2953
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:2258
P6CRYPTOCIPHER
Cipher Type.
Definition: p6crypto.h:112
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
Provide SSL related helper methods to make it easier to store SSL client and server certificates in t...
Definition: p6keystore.h:3228
#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:2911
This interface allows the user to enumerate keys or certificates based on different sets of meta data...
Definition: p6keystore.h:1226
#define P6THIS
Definition: p6defs.h:178
P6DIGESTS
P6DIGESTS.
Definition: p6digest.h:43
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.