eid-viewer
eid-viewer library
oslayer-objc.h
Go to the documentation of this file.
1 #include <BeidView/oslayer.h>
2 
11 @import Foundation;
12 @import AppKit;
13 
14 typedef NS_ENUM(NSInteger, eIDSource)
15 {
16  eIDSourceNone = EID_VWR_SRC_NONE,
17  eIDSourceFile = EID_VWR_SRC_FILE,
18  eIDSourceCard = EID_VWR_SRC_CARD,
19  eIDSourceUnknown = EID_VWR_SRC_UNKNOWN,
20 };
21 
22 typedef NS_ENUM(NSInteger, eIDLogLevel)
23 {
24  eIDLogLevelDetail = EID_VWR_LOG_DETAIL,
25  eIDLogLevelNormal = EID_VWR_LOG_NORMAL,
26  eIDLogLevelCoarse = EID_VWR_LOG_COARSE,
27  eIDLogLevelError = EID_VWR_LOG_ERROR,
28 };
29 
30 typedef NS_ENUM(NSInteger, eIDPinOp)
31 {
32  eIDPinOpTest = EID_VWR_PINOP_TEST, eIDPinOpChange = EID_VWR_PINOP_CHG,
33 };
34 
35 typedef NS_ENUM(NSInteger, eIDState)
36 {
37  eIDStateLibOpen = STATE_LIBOPEN,
38  eIDStateCallbacks = STATE_CALLBACKS,
39  eIDStateReady = STATE_READY,
40  eIDStateToken = STATE_TOKEN,
41  eIDStateTokenWait = STATE_TOKEN_WAIT,
42  eIDStateTokenID = STATE_TOKEN_ID,
43  eIDStateTokenCerts = STATE_TOKEN_CERTS,
44  eIDStateTokenIdle = STATE_TOKEN_IDLE,
45  eIDStateTokenPinop = STATE_TOKEN_PINOP,
46  eIDStateTokenSerialize = STATE_TOKEN_SERIALIZE,
47  eIDStateTokenError = STATE_TOKEN_ERROR,
48  eIDStateFile = STATE_FILE,
49  eIDStateFileReading = STATE_FILE_READING,
50  eIDStateFileWait = STATE_FILE_WAIT,
51  eIDStateCardInvalid = STATE_CARD_INVALID,
52  eIDStateNoToken = STATE_NO_TOKEN,
53  eIDStateNoReader = STATE_NO_READER,
54 };
55 
56 typedef NS_ENUM(NSInteger, eIDLanguage)
57 {
58  eIDLanguageNone = EID_VWR_LANG_NONE,
59  eIDLanguageDe = EID_VWR_LANG_DE,
60  eIDLanguageEn = EID_VWR_LANG_EN,
61  eIDLanguageFr = EID_VWR_LANG_FR,
62  eIDLanguageNl = EID_VWR_LANG_NL,
63 };
64 
65 typedef NS_ENUM(NSInteger, eIDResult)
66 {
67  eIDResultFailed = EID_VWR_RES_FAILED,
68  eIDResultSuccess = EID_VWR_RES_SUCCESS,
69  eIDResultUnknown = EID_VWR_RES_UNKNOWN,
70  eIDResultWarning = EID_VWR_RES_WARNING,
71 };
72 @interface eIDVersionTriplet: NSObject
73 @property NSInteger major;
74 @property NSInteger minor;
75 @property NSInteger build;
76 @end
77 @interface eIDUpgradeInfo: NSObject
78 @property BOOL haveUpgrade;
79 @property NSURL *upgradeUrl;
80 @property NSURL *relnotesUrl;
81 @property eIDVersionTriplet *newVersion;
82 @end
86 @protocol eIDOSLayerUI <NSObject>
87 @optional
88 -(void) newsrc:(eIDSource) which;
89 -(void) newstringdata: (NSString *) data withLabel:(NSString *)label;
90 -(void) newbindata:(NSData *) data withLabel:(NSString *) label;
91 -(void) log:(NSString *) line withLevel:(eIDLogLevel) level;
92 -(void) newstate:(eIDState) state;
93 -(void) pinop_result:(eIDResult) result forOperation:(eIDPinOp) operation;
94 -(void) readersFound:(NSArray *) readers withSlotNumbers:(NSArray *) slots;
95 -(void) challengeResult:(eIDResult)result withResponse:(NSData*)response;
97 @end
98 
101 @interface eIDOSLayerBackend: NSObject
102 +(void) pinop:(eIDPinOp) which;
103 +(NSInteger) setUi:(id < eIDOSLayerUI >) ui;
104 +(NSImage *) getPreview:(NSURL *) from;
105 +(void) setLang:(eIDLanguage) language;
106 +(eIDLanguage) lang;
107 +(void) poll;
108 +(void) mainloop;
109 +(void) deserialize:(NSURL *) from;
110 +(void) serialize:(NSURL *) to;
111 +(NSData *) xmlform;
112 +(void) closeFile;
113 +(void) setInvalid;
114 +(eIDResult) validateCert:(NSData *) certificate withCa:(NSData *) ca;
115 +(eIDResult) validateCert:(NSData *) certificate withCa:(NSData *) ca andAllowList:(BOOL)allowlist;
116 +(eIDResult) validateRrnCert:(NSData *) certificate withRoot:(NSData *) root;
117 +(eIDResult) validateRootCert:(NSData *) certificate;
118 +(eIDResult) validateIntCert:(NSData *) certificate withCa:(NSData *)ca;
119 +(void) selectReader:(NSInteger) readerNumber;
120 +(void) setReaderAuto:(BOOL) automatic;
121 +(NSString *) getCertDetail:(NSData *) certificate;
122 +(void)doChallengeInternal;
123 +(void)doChallenge:(NSData*)challenge;
124 +(eIDUpgradeInfo*) parseUpgradeInfoForXml:(NSString*)xml currentVersion:(eIDVersionTriplet *)ourVersion;
125 @end
126 
@ STATE_FILE_READING
We're reading from the file currently.
Definition: oslayer.h:87
@ STATE_TOKEN_IDLE
not performing any action in the taoken_wait state
Definition: oslayer.h:92
@ STATE_TOKEN_PINOP
Performing a PIN operation.
Definition: oslayer.h:83
@ STATE_READY
Ready to receive a token (eID card)
Definition: oslayer.h:78
@ STATE_TOKEN_ID
Reading identity data.
Definition: oslayer.h:81
@ STATE_LIBOPEN
The library has been opened. Used as an initializer.
Definition: oslayer.h:76
@ STATE_FILE
We're dealing with files.
Definition: oslayer.h:86
@ STATE_TOKEN_ERROR
An error occurred while dealing with the card.
Definition: oslayer.h:85
@ STATE_CALLBACKS
The callbacks have been defined.
Definition: oslayer.h:77
@ STATE_TOKEN_SERIALIZE
Saving data to a file.
Definition: oslayer.h:84
@ STATE_NO_TOKEN
We don't have a card, and we also don't have a file.
Definition: oslayer.h:90
@ STATE_TOKEN_CERTS
Reading certificates.
Definition: oslayer.h:82
@ STATE_TOKEN_WAIT
The card has been read, we're now waiting for events to do something else.
Definition: oslayer.h:80
@ STATE_TOKEN
A token (eID card) has been found.
Definition: oslayer.h:79
@ STATE_FILE_WAIT
We finished parsing the file.
Definition: oslayer.h:88
@ STATE_NO_READER
We don't have a reader (yet?)
Definition: oslayer.h:91
@ STATE_CARD_INVALID
The data was determined to be invalid. That is, the card could be read, but signature validation fail...
Definition: oslayer.h:89
@ EID_VWR_RES_SUCCESS
the operation returned successfully
Definition: oslayer.h:65
@ EID_VWR_RES_WARNING
the operation finished with warnings
Definition: oslayer.h:67
@ EID_VWR_RES_FAILED
operation failed
Definition: oslayer.h:64
@ EID_VWR_RES_UNKNOWN
the operation did not finish
Definition: oslayer.h:66
@ EID_VWR_SRC_FILE
File source. "Print", "Validate" and "Close" operations should be allowed, PIN-related operations are...
Definition: oslayer.h:33
@ EID_VWR_SRC_CARD
Card source. Close should not be allowed, everything else should be.
Definition: oslayer.h:34
@ EID_VWR_SRC_NONE
No source. UI should be cleared.
Definition: oslayer.h:32
@ EID_VWR_SRC_UNKNOWN
Unknown. Used as initializer.
Definition: oslayer.h:35
@ EID_VWR_LOG_ERROR
Definition: oslayer.h:51
@ EID_VWR_LOG_NORMAL
Definition: oslayer.h:47
@ EID_VWR_LOG_DETAIL
Definition: oslayer.h:45
@ EID_VWR_LOG_COARSE
Definition: oslayer.h:49
@ EID_VWR_PINOP_CHG
change the PIN code of the card
Definition: oslayer.h:58
@ EID_VWR_PINOP_TEST
perform a login and return whether the login was successful
Definition: oslayer.h:57
@ EID_VWR_LANG_EN
English.
Definition: oslayer.h:103
@ EID_VWR_LANG_DE
German.
Definition: oslayer.h:102
@ EID_VWR_LANG_NONE
No language has yet been selected. Used as initializer.
Definition: oslayer.h:101
@ EID_VWR_LANG_FR
French.
Definition: oslayer.h:104
@ EID_VWR_LANG_NL
Dutch.
Definition: oslayer.h:105
Definition: oslayer-objc.h:102
void setInvalid()
calls eid_vwr_be_set_invalid()
Definition: oslayer-objc.m:171
void doChallengeInternal()
calls eid_vwr_challenge() with random data, to be used when useDefaultChallengeResult returns YES.
Definition: oslayer-objc.m:227
eIDLanguage lang()
calls eid_vwr_convert_get_lang()
Definition: oslayer-objc.m:215
NSData * xmlform()
calls eid_vwr_be_get_xmlform(), and converts the result to an NSData*
Definition: oslayer-objc.m:174
void mainloop()
calls eid_vwr_be_mainloop(), which does not return
Definition: oslayer-objc.m:152
void poll()
calls eid_vwr_poll()
Definition: oslayer-objc.m:155
void closeFile()
calls eid_vwr_close_file()
Definition: oslayer-objc.m:168
Definition: oslayer-objc.h:78
Definition: oslayer-objc.h:73
Protocol for implementing a UI.
Definition: oslayer-objc.h:86
BOOL useDefaultChallengeResult()
if this returns YES, use eid_vwr_challenge_result() instead of a custom implementation