00001 00009 #if !defined(__KARIDETAILS_H__) 00010 #define __KARIDETAILS_H__ 00011 00012 #include "PKIFCMSDLL.h" 00013 #include "PKIFCMSUtils.h" 00014 #include <vector> 00015 00016 FD_MC_PTR(); 00017 FD_SMART_PTR(CPKIFKeyMaterial); 00018 FD_SMART_PTR(CPKIFBuffer); 00019 FD_SMART_PTR(CPKIFAlgorithmIdentifier); 00020 FD_SMART_PTR(CPKIFOID); 00021 FD_SMART_PTR(CPKIFCredential); 00022 FD_SMART_PTR(CPKIFCertificatePath); 00023 FD_SMART_PTR(CPKIFPathValidationResults); 00024 FD_LIST_PTR(CPKIFCertificate); 00025 struct CPKIFKARIDetailsImpl; 00026 00037 class PKIFCMS_API CPKIFKARIDetails 00038 { 00039 public: 00040 CPKIFKARIDetails(CPKIFOIDPtr & kaScheme); 00041 00042 ~CPKIFKARIDetails(); 00043 00044 void SetMediator(IPKIFMediatorPtr & med); 00045 void SetKEKAlg(CPKIFAlgorithmIdentifierPtr & alg); 00046 void AddRecipient(CPKIFCertificatePtr& cert, CPKIFCertificatePathPtr& path, CPKIFPathValidationResultsPtr& valResults, CMSPathValidationStatus minStatus = PVS_REV_STATUS_VERIFIED); 00047 void AddRecipient(CPKIFKeyMaterialPtr & recip); 00048 00049 void SetCEK(unsigned char * keyData, int keyDataLen); 00050 00051 CPKIFBufferPtr Encoded(void); 00052 CPKIFBufferPtr Encoded(CPKIFCredentialPtr & cred); 00053 00054 00055 private: 00057 CPKIFKARIDetails(const CPKIFKARIDetails& copy); 00059 CPKIFKARIDetails& operator=(const CPKIFKARIDetails& rhs); //added 4/6/2004 00060 00061 // This clas has an opaque implementation even though it is not currently 00062 // part of the DLL interface because it seems likely that we may want to expose it 00063 // at some point. 00064 struct CPKIFKARIDetailsImpl *m_impl; 00065 00066 }; 00067 DECLARE_SMART_POINTERS(CPKIFKARIDetails); 00068 typedef std::vector<CPKIFKARIDetailsPtr, PKIFAlloc<CPKIFKARIDetailsPtr> > CPKIFKARIDetailsList; 00069 DECLARE_SMART_POINTERS(CPKIFKARIDetailsList); 00070 00071 00072 #endif