1@startuml
2
3
4
5
6
7/' Objects '/
8
9namespace eIDMW {
10	class CAutoLock {
11		+CAutoLock(CCard* poCard)
12		+CAutoLock(CPCSC* poPCSC, SCARDHANDLE hCard)
13		+~CAutoLock()
14		-m_poCard : CCard*
15		-m_poPCSC : CPCSC*
16		-m_hCard : SCARDHANDLE
17	}
18}
19
20
21namespace eIDMW {
22	class CBeidP15Correction {
23		+CheckCerts(std::vector< tCert>& certVector) : void
24		+CheckPINs(std::vector< tPin>& pinVector) : void
25		+CheckPrKeys(std::vector< tPrivKey>& keyVector) : void
26	}
27}
28
29
30namespace eIDMW {
31	class CCard {
32		-CCard(const CCard& oCard)
33		+CCard(SCARDHANDLE hCard, CContext* poContext, CPinpad* poPinpad, tSelectAppletMode selectAppletMode, tCardType cardType)
34		+~CCard(void)
35		#p15correction : CBeidP15Correction
36		+GetATR() : CByteArray
37		+GetIFDVersion() : CByteArray
38		+GetInfo() : CByteArray
39		+GetSerialNrBytes() : CByteArray
40		#MakePinBuf(const tPin& Pin, const std::string& csPin, bool bEmptyPin) : CByteArray
41		#MakePinCmd(tPinOperation operation, const tPin& Pin) : CByteArray
42		#ReadBinary(unsigned long ulOffset, unsigned long ulLen) : CByteArray
43		+ReadFile(const std::string& csPath, unsigned long ulOffset, unsigned long ulMaxLen, bool bDoNotCache) : CByteArray
44		+ReadUncachedFile(const std::string& csPath, unsigned long ulOffset, unsigned long ulMaxLen) : CByteArray
45		#SelectByPath(const std::string& csPath, bool bReturnFileInfo) : CByteArray
46		-SelectByPath_2(const std::string& csPath, bool bReturnFileInfo) : CByteArray
47		+SendAPDU(unsigned char ucINS, unsigned char ucP1, unsigned char ucP2, unsigned long ulOutLen) : CByteArray
48		+SendAPDU(unsigned char ucINS, unsigned char ucP1, unsigned char ucP2, const CByteArray& oData) : CByteArray
49		+SendAPDU(const CByteArray& oCmdAPDU) : CByteArray
50		+Sign(const tPrivKey& key, const tPin& Pin, unsigned long algo, const CByteArray& oData) : CByteArray
51		#SignInternal(const tPrivKey& key, unsigned long algo, const CByteArray& oData, const tPin* pPin) : CByteArray
52		#UpdateBinary(unsigned long ulOffset, const CByteArray& oData) : CByteArray
53		#VerifyAndSign(const tPrivKey& key, const tPin& Pin, unsigned long algo, const CByteArray& oData) : CByteArray
54		#m_oCardData : CByteArray
55		#m_oSerialNr : CByteArray
56		-operator=(const CCard& oCard) : CCard&
57		+{static} Connect(const std::string& csReader, CContext* poContext, CPinpad* poPinpad) : CCard*
58		#m_poContext : CContext*
59		+GetP15Correction() : CP15Correction*
60		#m_poPinpad : CPinpad*
61		#PinOperation2Dlg(tPinOperation operation) : DlgPinOperation
62		+PinUsage2Dlg(const tPin& Pin, const tPrivKey* pKey) : DlgPinUsage
63		+m_hCard : SCARDHANDLE
64		#AskPinRetry(tPinOperation operation, const tPin& Pin, unsigned long ulRemaining, const tPrivKey* pKey) : bool
65		#IsDigit(char c) : bool
66		+IsPinpadReader() : bool
67		+LogOff(const tPin& Pin) : bool
68		+PinCmd(tPinOperation operation, const tPin& Pin, const std::string& csPin1, const std::string& csPin2, unsigned long& ulRemaining, const tPrivKey* pKey) : bool
69		-PinCmd_2(tPinOperation operation, const tPin& Pin, const std::string& csPin1, const std::string& csPin2, unsigned long& ulRemaining, const tPrivKey* pKey) : bool
70		#SelectApplet() : bool
71		#SerialNrPresent(const CByteArray& oData) : bool
72		#ShouldSelectApplet(unsigned char ins, unsigned long ulSW12) : bool
73		+Status() : bool
74		#m_bSerialNrString : bool
75		#getDF(const std::string& csPath, unsigned long& ulOffset) : int
76		+GetLabel() : std::string
77		+GetPinpadPrefix() : std::string
78		+GetSerialNr() : std::string
79		#m_csSerialNr : std::string
80		#>m_verifiedPINs : std::vector< unsigned long
81		+GetCacheInfo(const std::string& csPath) : tCacheInfo
82		+GetType() : tCardType
83		#m_cardType : tCardType
84		#ParseFileInfo(CByteArray& oFCI) : tFileInfo
85		#SelectFile(const std::string& csPath, bool bReturnFileInfo) : tFileInfo
86		-SelectFile_2(const std::string& csPath, bool bReturnFileInfo) : tFileInfo
87		#m_selectAppletMode : tSelectAppletMode
88		+GetAppletVersion() : unsigned char
89		#Hex2Byte(char cHex) : unsigned char
90		#Hex2Byte(const std::string& csHex, unsigned long ulIdx) : unsigned char
91		#PinUsage2Pinpad(const tPin& Pin, const tPrivKey* pKey) : unsigned char
92		#m_ucAppletVersion : unsigned char
93		#m_ucCLA : unsigned char
94		+GetPrivKeySize() : unsigned int
95		#Get6CDelay() : unsigned long
96		+GetSupportedAlgorithms() : unsigned long
97		+PinStatus(const tPin& Pin) : unsigned long
98		#getSW12(const CByteArray& oRespAPDU, unsigned long ulExpected) : unsigned long
99		#m_ul6CDelay : unsigned long
100		#m_ulLockCount : unsigned long
101		#m_ulRemaining : unsigned long
102		#AskPin(tPinOperation operation, const tPin& Pin, std::string& csPin1, std::string& csPin2, const tPrivKey* pKey) : void
103		+Disconnect(tDisconnectMode disconnectMode) : void
104		+Lock() : void
105		+SelectApplication(const CByteArray& oAID) : void
106		#SetSecurityEnv(const tPrivKey& key, unsigned long algo, unsigned long ulInputLen) : void
107		+Unlock() : void
108		#showPinDialog(tPinOperation operation, const tPin& Pin, std::string& csPin1, std::string& csPin2, const tPrivKey* pKey) : void
109	}
110}
111
112
113namespace eIDMW {
114	class CCardLayer {
115		-CCardLayer(const CCardLayer& oCardLayer)
116		+CCardLayer(void)
117		+~CCardLayer(void)
118		-operator=(const CCardLayer& oCardLayer) : CCardLayer&
119		-m_oContext : CContext
120		+getReader(const std::string& csReaderName) : CReader&
121		-m_tpReaders : CReader*
122		+ListReaders() : CReadersInfo
123		+GetStatusChange(unsigned long ulTimeout, SCARD_READERSTATEA* txReaderStates, unsigned long ulReaderCount) : long
124		+PCSCServiceRunning(bool* pRunning) : long
125		-m_szDefaultReaderName : std::string
126		-GetDefaultReader() : std::string*
127		-m_ulReaderCount : unsigned long
128		+CancelActions() : void
129		+ForceRelease() : void
130		+PCSCReEstablishContext() : void
131	}
132}
133
134
135namespace eIDMW {
136	class CCardReaderInfo {
137		-CCardReaderInfo(void)
138		+{static} GetCardReaderInfo(void) : CCardReaderInfo*
139		+GetNoOfReaders(void) : int
140		-m_NoOfReaders : int
141		-{static} m_CardReaderInfo : static CCardReaderInfo*
142		+CollectInfo(void) : void
143	}
144}
145
146
147namespace eIDMW {
148	class CContext {
149		+CContext()
150		+~CContext()
151		+m_oPCSC : CPCSC
152		+m_bSSO : bool
153		+m_ulConnectionDelay : unsigned long
154	}
155}
156
157
158namespace eIDMW {
159	abstract class CP15Correction {
160		+CheckCerts(std::vector< tCert>& certVector) : void
161		+{abstract} CheckPINs(std::vector< tPin>& pinVector) : void
162		+{abstract} CheckPrKeys(std::vector< tPrivKey>& keyVector) : void
163		+{abstract} CP15Correction() : ~
164	}
165}
166
167
168namespace eIDMW {
169	class CPCSC {
170		+CPCSC(void)
171		+~CPCSC(void)
172		+Control(SCARDHANDLE hCard, unsigned long ulControl, const CByteArray& oCmd, unsigned long ulMaxResponseSize) : CByteArray
173		+GetATR(SCARDHANDLE hCard) : CByteArray
174		+GetIFDVersion(SCARDHANDLE hCard) : CByteArray
175		+ListReaders() : CByteArray
176		+Transmit(SCARDHANDLE hCard, const CByteArray& oCmdAPDU, long* plRetVal, void* pSendPci, void* pRecvPci) : CByteArray
177		+GetContext() : SCARDCONTEXT
178		-m_hContext : SCARDCONTEXT
179		+Connect(const std::string& csReader, unsigned long ulShareMode, unsigned long ulPreferredProtocols) : SCARDHANDLE
180		+GetStatusChange(unsigned long ulTimeout, tReaderInfo* pReaderInfos, unsigned long ulReaderCount) : bool
181		+Status(const std::string& csReader) : bool
182		+Status(SCARDHANDLE hCard) : bool
183		-m_iListReadersCount : int
184		-m_iTimeoutCount : int
185		+GetTheStatusChange(unsigned long ulTimeout, SCARD_READERSTATEA* txReaderStates, unsigned long ulReaderCount) : long
186		-PcscToErr(unsigned long lRet) : long
187		+SW12ToErr(unsigned long ulSW12) : long
188		-m_ulCardTxDelay : unsigned long
189		+BeginTransaction(SCARDHANDLE hCard) : void
190		+Cancel() : void
191		+Disconnect(SCARDHANDLE hCard, tDisconnectMode disconnectMode) : void
192		+EndTransaction(SCARDHANDLE hCard) : void
193		+EstablishContext() : void
194		+Recover(SCARDHANDLE hCard, unsigned long* pulLockCount) : void
195		+ReleaseContext() : void
196	}
197}
198
199
200namespace eIDMW {
201	class CPKCS15 {
202		+CPKCS15(void)
203		+~CPKCS15(void)
204		-m_poCard : CCard*
205		-m_poParser : PKCS15Parser*
206		+GetCardLabel() : std::string
207		+GetSerialNr() : std::string
208		-m_csLabel : std::string
209		-m_csSerial : std::string
210		-m_oCertificates : std::vector< tCert>
211		-m_oPins : std::vector< tPin>
212		-m_oPrKeys : std::vector< tPrivKey>
213		+GetCert(unsigned long ulIndex) : tCert
214		+GetCertByID(unsigned long ulID) : tCert
215		-m_tDir : tDirInfo
216		-m_xAODF : tPKCSFile
217		-m_xCDF : tPKCSFile
218		-m_xCert : tPKCSFile
219		-m_xDir : tPKCSFile
220		-m_xODF : tPKCSFile
221		-m_xPin : tPKCSFile
222		-m_xPrKDF : tPKCSFile
223		-m_xPrKey : tPKCSFile
224		-m_xPuKDF : tPKCSFile
225		-m_xTokenInfo : tPKCSFile
226		+GetPin(unsigned long ulIndex) : tPin
227		+GetPinByID(unsigned long ulID) : tPin
228		+GetPinByRef(unsigned long ulPinRef) : tPin
229		+GetPrivKey(unsigned long ulIndex) : tPrivKey
230		+GetPrivKeyByID(unsigned long ulID) : tPrivKey
231		+CertCount() : unsigned long
232		+PinCount() : unsigned long
233		+PrivKeyCount() : unsigned long
234		+Clear(CCard* poCard) : void
235		-ReadFile(tPKCSFile* pFile, int upperLevel) : void
236		-ReadLevel1() : void
237		-ReadLevel2(tPKCSFileName name) : void
238		-ReadLevel3(tPKCSFileName name) : void
239		+SetCard(CCard* poCard) : void
240	}
241}
242
243
244namespace eIDMW {
245	class CPinpad {
246		+CPinpad(void)
247		+PinCmd(tPinOperation operation, const tPin& pin, unsigned char ucPinType, const CByteArray& oAPDU, unsigned long& ulRemaining) : CByteArray
248		#PinCmd1(tPinOperation operation, const tPin& pin, unsigned char ucPinType, const CByteArray& oAPDU, unsigned long& ulRemaining) : CByteArray
249		#PinCmd2(tPinOperation operation, const tPin& pin, unsigned char ucPinType, const CByteArray& oAPDU, unsigned long& ulRemaining) : CByteArray
250		#PinpadControl(unsigned long ulControl, const CByteArray& oCmd, tPinOperation operation, unsigned char ucPintype, const std::string& csPinLabel, bool bShowDlg) : CByteArray
251		#PinpadPPDU(BYTE cbControl, const CByteArray& oCmd, tPinOperation operation, unsigned char ucPintype, const std::string& csPinLabel, bool bShowDlg) : CByteArray
252		#m_poContext : CContext*
253		#m_oPinpadLib : CPinpadLib
254		#m_hCard : SCARDHANDLE
255		+UsePinpad(tPinOperation operation) : bool
256		#m_bCanChangeUnlock : bool
257		#m_bCanUsePPDU : bool
258		#m_bCanVerifyUnlock : bool
259		#m_bNewCard : bool
260		#m_bUsePinpadLib : bool
261		#m_csPinpadPrefix : std::string
262		#m_csReader : std::string
263		#GetMaxPinLen(const tPin& pin) : unsigned char
264		#PinOperation2Lib(tPinOperation operation) : unsigned char
265		#ToFormatString(const tPin& pin) : unsigned char
266		#ToPinBlockString(const tPin& pin) : unsigned char
267		#ToPinLengthFormat(const tPin& pin) : unsigned char
268		#GetLanguage() : unsigned long
269		#m_ioctlChangeDirect : unsigned long
270		#m_ioctlChangeFinish : unsigned long
271		#m_ioctlChangeStart : unsigned long
272		#m_ioctlVerifyDirect : unsigned long
273		#m_ioctlVerifyFinish : unsigned long
274		#m_ioctlVerifyStart : unsigned long
275		#m_ulLangCode : unsigned long
276		#m_usReaderFirmVers : unsigned short
277		#GetFeatureList() : void
278		#GetPPDUFeatureList() : void
279		+Init(CContext* poContext, SCARDHANDLE hCard, const std::string& csReader, const std::string& csPinpadPrefix) : void
280		+Init(CContext* poContext, SCARDHANDLE hCard, const std::string& csReader, const std::string& csPinpadPrefix, CByteArray usReaderFirmVers) : void
281		#UnloadPinpadLib() : void
282	}
283}
284
285
286namespace eIDMW {
287	class CReader {
288		-CReader(const std::string& csReader, CContext* poContext)
289		-CReader(const CReader& oReader)
290		+~CReader(void)
291		+GetATR() : CByteArray
292		+GetInfo() : CByteArray
293		+ReadFile(const std::string& csPath, unsigned long ulOffset, unsigned long ulMaxLen, bool bDoNotCache) : CByteArray
294		+SendAPDU(const CByteArray& oCmdAPDU) : CByteArray
295		+Sign(const tPrivKey& key, unsigned long algo, const CByteArray& oData) : CByteArray
296		-m_poCard : CCard*
297		-m_poContext : CContext*
298		-m_oPKCS15 : CPKCS15
299		-m_oPinpad : CPinpad
300		-operator=(const CReader& oReader) : CReader&
301		+GetPinUsage(const tPin& pin) : PinUsage
302		+{static} CardPresent(unsigned long ulState) : bool
303		+Connect() : bool
304		+IsPinpadReader() : bool
305		+PinCmd(tPinOperation operation, const tPin& Pin, const std::string& csPin1, const std::string& csPin2, unsigned long& ulRemaining) : bool
306		-m_bIgnoreRemoval : bool
307		+GetCardLabel() : std::string
308		+GetSerialNr() : std::string
309		-m_csReader : std::string
310		+GetReaderName() : std::string&
311		-m_wsReader : std::wstring
312		+Status(bool bReconnect) : tCardStatus
313		+GetCardType() : tCardType
314		+GetCert(unsigned long ulIndex) : tCert
315		+GetCertByID(unsigned long ulID) : tCert
316		+GetPin(unsigned long ulIndex) : tPin
317		+GetPinByID(unsigned long ulID) : tPin
318		+GetPrivKey(unsigned long ulIndex) : tPrivKey
319		+GetPrivKeyByID(unsigned long ulID) : tPrivKey
320		+GetAppletVersion() : unsigned char
321		+GetPrivKeySize() : unsigned int
322		+CertCount() : unsigned long
323		+GetSupportedAlgorithms() : unsigned long
324		+PinCount() : unsigned long
325		+PinStatus(const tPin& Pin) : unsigned long
326		+PrivKeyCount() : unsigned long
327		+Disconnect(tDisconnectMode disconnectMode) : void
328		+Lock() : void
329		+SelectApplication(const CByteArray& oAID) : void
330		+Unlock() : void
331	}
332}
333
334
335namespace eIDMW {
336	class CReadersInfo {
337		-CReadersInfo(const CByteArray& oReaders)
338		+CReadersInfo()
339		+CardPresent(unsigned long ulIndex) : bool
340		+GetReaderStates(SCARD_READERSTATEA* txReaderStates, unsigned long length, unsigned long* ulnReaders) : bool
341		+IsFirstTime(void) : bool
342		+ReaderStateChanged(unsigned long ulIndex) : bool
343		+SameList(CReadersInfo* newReadersInfo) : bool
344		+UpdateReaderStates(SCARD_READERSTATEA* txReaderStates, unsigned long ulnReaders) : bool
345		-bFirstTime : bool
346		+ReaderName(unsigned long ulIndex) : std::string
347		-m_tInfos : tReaderInfo
348		+ReaderCount() : unsigned long
349		-m_ulReaderCount : unsigned long
350		+FreeReaderStates(SCARD_READERSTATEA* txReaderStates, unsigned long ulnReaders) : void
351		+SetFirstTime(bool firstTime) : void
352	}
353}
354
355
356class EIDMW_PP_CHANGE_CCID {
357	+abData : unsigned char
358	+bConfirmPIN : unsigned char
359	+bEntryValidationCondition : unsigned char
360	+bInsertionOffsetNew : unsigned char
361	+bInsertionOffsetOld : unsigned char
362	+bMsgIndex1 : unsigned char
363	+bMsgIndex2 : unsigned char
364	+bMsgIndex3 : unsigned char
365	+bNumberMessage : unsigned char
366	+bTeoPrologue : unsigned char
367	+bTimerOut : unsigned char
368	+bTimerOut2 : unsigned char
369	+bmFormatString : unsigned char
370	+bmPINBlockString : unsigned char
371	+bmPINLengthFormat : unsigned char
372	+ulDataLength : unsigned char
373	+wLangId : unsigned char
374	+wPINMaxExtraDigit : unsigned char
375}
376
377
378class EIDMW_PP_VERIFY_CCID {
379	+abData : unsigned char
380	+bEntryValidationCondition : unsigned char
381	+bMsgIndex : unsigned char
382	+bNumberMessage : unsigned char
383	+bTeoPrologue : unsigned char
384	+bTimerOut : unsigned char
385	+bTimerOut2 : unsigned char
386	+bmFormatString : unsigned char
387	+bmPINBlockString : unsigned char
388	+bmPINLengthFormat : unsigned char
389	+ulDataLength : unsigned char
390	+wLangId : unsigned char
391	+wPINMaxExtraDigit : unsigned char
392}
393
394
395namespace eIDMW {
396	class PKCS15Parser {
397		+ParseCdf(const CByteArray& contents) : std::vector<tCert>
398		+ParseAodf(const CByteArray& contents) : std::vector<tPin>
399		+ParsePrkdf(const CByteArray& contents) : std::vector<tPrivKey>
400		+ParseDir(const CByteArray& contents) : tDirInfo
401		+ParseOdf(const CByteArray& contents) : tOdfInfo
402		+ParseTokenInfo(const CByteArray& contents) : tTokenInfo
403		-FillCOACert(tCert* cert, tCommonObjAttr* coa) : void
404		-FillCOAPin(tPin* pin, tCommonObjAttr* coa) : void
405		-FillCOAPrKey(tPrivKey* key, tCommonObjAttr* coa) : void
406	}
407}
408
409
410namespace eIDMW {
411	class tAlgoInfo <<(S,cyan)>> {
412		+iAlgRef : int
413		+iRef : int
414	}
415}
416
417
418namespace eIDMW {
419	class tCacheInfo <<(S,cyan)>> {
420		+action : tCacheAction
421		+ulOffset : unsigned long
422	}
423}
424
425
426namespace eIDMW {
427	class tCert <<(S,cyan)>> {
428		+bAuthority : bool
429		+bImplicitTrust : bool
430		+bValid : bool
431		+csLabel : std::string
432		+csPath : std::string
433		+ulAuthID : unsigned long
434		+ulFlags : unsigned long
435		+ulID : unsigned long
436		+ulUserConsent : unsigned long
437	}
438}
439
440
441namespace eIDMW {
442	class tCommonObjAttr <<(S,cyan)>> {
443		+lastPosition : int
444		+csLabel : std::string
445		+ulAuthID : unsigned long
446		+ulFlags : unsigned long
447		+ulUserConsent : unsigned long
448		+Reset() : void
449	}
450}
451
452
453namespace eIDMW {
454	class tDirInfo <<(S,cyan)>> {
455		+csAppPath : std::string
456		+csLabel : std::string
457		+oAppID : std::string
458	}
459}
460
461
462namespace eIDMW {
463	class tFileInfo <<(S,cyan)>> {
464		+lFileLen : long
465		+lReadPINRef : long
466		+lWritePINRef : long
467	}
468}
469
470
471class tGuiInfo <<(S,cyan)>> {
472	+csChangeInfo : char*
473	+csRfu1 : char*
474	+csRfu2 : char*
475	+csRfu3 : char*
476	+csRfu4 : char*
477	+csUnblockChangeInfo : char*
478	+csUnblockMergeChangeInfo : char*
479	+csUnblockMergeNoChangeInfo : char*
480	+csUnblockNoChangeInfo : char*
481	+csVerifyInfo : char*
482}
483
484
485namespace eIDMW {
486	class tOdfInfo <<(S,cyan)>> {
487		+csAodfPath : std::string
488		+csCdfPath : std::string
489		+csDodfPath : std::string
490		+csPrkdfPath : std::string
491		+csPukdfPath : std::string
492		+csSecretPukdfPath : std::string
493		+csTrustedCdfPath : std::string
494		+csTrustedPukdfPath : std::string
495		+csUsefulCdfPath : std::string
496	}
497}
498
499
500namespace eIDMW {
501	class tPKCSFile <<(S,cyan)>> {
502		+byteArray : CByteArray
503		+isRead : bool
504		+path : std::string
505		+setDefault() : void
506	}
507}
508
509
510namespace eIDMW {
511	class tPin <<(S,cyan)>> {
512		+bValid : bool
513		+csLabel : std::string
514		+csLastChange : std::string
515		+csPath : std::string
516		+encoding : tPinEncoding
517		+ucPadChar : unsigned char
518		+ulAuthID : unsigned long
519		+ulFlags : unsigned long
520		+ulID : unsigned long
521		+ulMaxLen : unsigned long
522		+ulMinLen : unsigned long
523		+ulPinFlags : unsigned long
524		+ulPinRef : unsigned long
525		+ulPinType : unsigned long
526		+ulStoredLen : unsigned long
527		+ulUserConsent : unsigned long
528	}
529}
530
531
532namespace eIDMW {
533	class tPrivKey <<(S,cyan)>> {
534		+bUsedInP11 : bool
535		+bValid : bool
536		+csLabel : std::string
537		+csPath : std::string
538		+ulAuthID : unsigned long
539		+ulFlags : unsigned long
540		+ulID : unsigned long
541		+ulKeyAccessFlags : unsigned long
542		+ulKeyLenBytes : unsigned long
543		+ulKeyRef : unsigned long
544		+ulKeyUsageFlags : unsigned long
545		+ulUserConsent : unsigned long
546	}
547}
548
549
550namespace eIDMW {
551	class tReaderInfo <<(S,cyan)>> {
552		+csReader : std::string
553		+ulCurrentState : unsigned long
554		+ulEventState : unsigned long
555	}
556}
557
558
559namespace eIDMW {
560	class tTokenInfo <<(S,cyan)>> {
561		+iAppVersion : int
562		+iSecEnv : int
563		+iVersion : int
564		+piRecordInfo : int
565		+csHolder : std::string
566		+csIssuer : std::string
567		+csLabel : std::string
568		+csLastUpdate : std::string
569		+csManufactID : std::string
570		+csOwner : std::string
571		+csSerial : std::string
572		+oAlgoInfo : std::vector< tAlgoInfo>
573		+ulFlags : unsigned long
574	}
575}
576
577
578namespace eIDMW {
579	enum PinUsage {
580		DLG_USG_PIN_ADDRESS
581		DLG_USG_PIN_AUTH
582		DLG_USG_PIN_SIGN
583		PIN_USG_UNKNOWN
584	}
585}
586
587
588namespace eIDMW {
589	enum tBelpicDF {
590		BELPIC_DF
591		ID_DF
592		UNKNOWN_DF
593	}
594}
595
596
597namespace eIDMW {
598	enum tCacheAction {
599		CERT_CACHE
600		CHECK_16_CACHE
601		CHECK_SERIAL
602		DONT_CACHE
603		SIMPLE_CACHE
604	}
605}
606
607
608namespace eIDMW {
609	enum tCardStatus {
610		CARD_INSERTED
611		CARD_NOT_PRESENT
612		CARD_OTHER
613		CARD_REMOVED
614		CARD_STILL_PRESENT
615		CARD_UNKNOWN_STATE
616	}
617}
618
619
620namespace eIDMW {
621	enum tCardType {
622		CARD_BEID
623		CARD_UNKNOWN
624	}
625}
626
627
628namespace eIDMW {
629	enum tDisconnectMode {
630		DISCONNECT_LEAVE_CARD
631		DISCONNECT_RESET_CARD
632	}
633}
634
635
636namespace eIDMW {
637	enum tFileOperation {
638		FILE_OP_READ
639		FILE_OP_WRITE
640	}
641}
642
643
644namespace eIDMW {
645	enum tPKCSFileName {
646		AODF
647		CDF
648		EFDIR
649		ODF
650		PRKDF
651		TOKENINFO
652	}
653}
654
655
656namespace eIDMW {
657	enum tPinEncoding {
658		PIN_ENC_ASCII
659		PIN_ENC_BCD
660		PIN_ENC_GP
661	}
662}
663
664
665namespace eIDMW {
666	enum tPinOperation {
667		PIN_OP_CHANGE
668		PIN_OP_LOGOFF
669		PIN_OP_VERIFY
670	}
671}
672
673
674namespace eIDMW {
675	enum tSelectAppletMode {
676		ALW_SELECT_APPLET
677		DONT_SELECT_APPLET
678		TRY_SELECT_APPLET
679	}
680}
681
682
683
684
685
686/' Inheritance relationships '/
687
688namespace eIDMW {
689	CP15Correction <|-- CBeidP15Correction
690}
691
692
693
694
695
696/' Aggregation relationships '/
697
698namespace eIDMW {
699	CAutoLock o-- CCard
700}
701
702
703namespace eIDMW {
704	CAutoLock o-- CPCSC
705}
706
707
708namespace eIDMW {
709	CCard o-- CBeidP15Correction
710}
711
712
713namespace eIDMW {
714	CCard o-- CContext
715}
716
717
718namespace eIDMW {
719	CCard o-- CPinpad
720}
721
722
723namespace eIDMW {
724	CCardLayer o-- CContext
725}
726
727
728namespace eIDMW {
729	CCardLayer o-- CReader
730}
731
732
733namespace eIDMW {
734	CCardReaderInfo o-- CCardReaderInfo
735}
736
737
738namespace eIDMW {
739	CContext o-- CPCSC
740}
741
742
743namespace eIDMW {
744	CPKCS15 o-- CCard
745}
746
747
748namespace eIDMW {
749	CPKCS15 o-- PKCS15Parser
750}
751
752
753namespace eIDMW {
754	CPKCS15 o-- tCert
755}
756
757
758namespace eIDMW {
759	CPKCS15 o-- tDirInfo
760}
761
762
763namespace eIDMW {
764	CPKCS15 "10" o-- tPKCSFile
765}
766
767
768namespace eIDMW {
769	CPKCS15 o-- tPin
770}
771
772
773namespace eIDMW {
774	CPKCS15 o-- tPrivKey
775}
776
777
778namespace eIDMW {
779	CPinpad o-- CContext
780}
781
782
783namespace eIDMW {
784	CReader o-- CCard
785}
786
787
788namespace eIDMW {
789	CReader o-- CContext
790}
791
792
793namespace eIDMW {
794	CReader o-- CPKCS15
795}
796
797
798namespace eIDMW {
799	CReader o-- CPinpad
800}
801
802
803namespace eIDMW {
804	CReadersInfo o-- tReaderInfo
805}
806
807
808namespace eIDMW {
809	tTokenInfo o-- tAlgoInfo
810}
811
812
813
814
815@enduml
816