1515
1616#define TAG "PicopassWorker"
1717
18- uint8_t iclass_key [ 8 ] = {0xaf , 0xa7 , 0x85 , 0xa7 , 0xda , 0xb3 , 0x33 , 0x78 };
19- uint8_t iclass_decryptionkey [ 16 ] =
18+ const uint8_t picopass_iclass_key [ ] = {0xaf , 0xa7 , 0x85 , 0xa7 , 0xda , 0xb3 , 0x33 , 0x78 };
19+ const uint8_t picopass_iclass_decryptionkey [ ] =
2020 {0xb4 , 0x21 , 0x2c , 0xca , 0xb7 , 0xed , 0x21 , 0x0f , 0x7b , 0x93 , 0xd4 , 0x59 , 0x39 , 0xc7 , 0xdd , 0x36 };
2121
22- void enable_field () {
22+ static void picopass_worker_enable_field () {
2323 st25r3916TxRxOn ();
2424 rfalLowPowerModeStop ();
2525 rfalWorker ();
2626}
2727
28- ReturnCode disable_field (ReturnCode rc ) {
28+ static ReturnCode picopass_worker_disable_field (ReturnCode rc ) {
2929 st25r3916TxRxOff ();
3030 rfalLowPowerModeStart ();
3131 return rc ;
3232}
3333
34- ReturnCode decrypt (uint8_t * enc_data , uint8_t * dec_data ) {
34+ static ReturnCode picopass_worker_decrypt (uint8_t * enc_data , uint8_t * dec_data ) {
3535 uint8_t key [32 ] = {0 };
36- memcpy (key , iclass_decryptionkey , sizeof (iclass_decryptionkey ));
36+ memcpy (key , picopass_iclass_decryptionkey , sizeof (picopass_iclass_decryptionkey ));
3737 mbedtls_des3_context ctx ;
3838 mbedtls_des3_init (& ctx );
3939 mbedtls_des3_set2key_dec (& ctx , key );
@@ -42,7 +42,7 @@ ReturnCode decrypt(uint8_t* enc_data, uint8_t* dec_data) {
4242 return ERR_NONE ;
4343}
4444
45- ReturnCode parseWiegand (uint8_t * data , WiegandRecord * record ) {
45+ static ReturnCode picopass_worker_parse_wiegand (uint8_t * data , PicopassWiegandRecord * record ) {
4646 uint32_t * halves = (uint32_t * )data ;
4747 if (halves [0 ] == 0 ) {
4848 uint8_t leading0s = __builtin_clz (REVERSE_BYTES_U32 (halves [1 ]));
@@ -129,7 +129,7 @@ void picopass_worker_stop(PicopassWorker* picopass_worker) {
129129 picopass_worker -> state == PicopassWorkerStateReady ) {
130130 return ;
131131 }
132- disable_field (ERR_NONE );
132+ picopass_worker_disable_field (ERR_NONE );
133133
134134 picopass_worker_change_state (picopass_worker , PicopassWorkerStateStop );
135135 furi_thread_join (picopass_worker -> thread );
@@ -148,19 +148,19 @@ ReturnCode picopass_detect_card(int timeout) {
148148
149149 err = rfalPicoPassPollerInitialize ();
150150 if (err != ERR_NONE ) {
151- FURI_LOG_E (TAG , "rfalPicoPassPollerInitialize error %d\n " , err );
151+ FURI_LOG_E (TAG , "rfalPicoPassPollerInitialize error %d" , err );
152152 return err ;
153153 }
154154
155155 err = rfalFieldOnAndStartGT ();
156156 if (err != ERR_NONE ) {
157- FURI_LOG_E (TAG , "rfalFieldOnAndStartGT error %d\n " , err );
157+ FURI_LOG_E (TAG , "rfalFieldOnAndStartGT error %d" , err );
158158 return err ;
159159 }
160160
161161 err = rfalPicoPassPollerCheckPresence ();
162162 if (err != ERR_RF_COLLISION ) {
163- FURI_LOG_E (TAG , "rfalPicoPassPollerCheckPresence error %d\n " , err );
163+ FURI_LOG_E (TAG , "rfalPicoPassPollerCheckPresence error %d" , err );
164164 return err ;
165165 }
166166
@@ -181,13 +181,13 @@ ReturnCode picopass_read_card(ApplicationArea* AA1) {
181181
182182 err = rfalPicoPassPollerIdentify (& idRes );
183183 if (err != ERR_NONE ) {
184- FURI_LOG_E (TAG , "rfalPicoPassPollerIdentify error %d\n " , err );
184+ FURI_LOG_E (TAG , "rfalPicoPassPollerIdentify error %d" , err );
185185 return err ;
186186 }
187187
188188 err = rfalPicoPassPollerSelect (idRes .CSN , & selRes );
189189 if (err != ERR_NONE ) {
190- FURI_LOG_E (TAG , "rfalPicoPassPollerSelect error %d\n " , err );
190+ FURI_LOG_E (TAG , "rfalPicoPassPollerSelect error %d" , err );
191191 return err ;
192192 }
193193
@@ -198,7 +198,7 @@ ReturnCode picopass_read_card(ApplicationArea* AA1) {
198198 }
199199 memcpy (ccnr , rcRes .CCNR , sizeof (rcRes .CCNR )); // last 4 bytes left 0
200200
201- diversifyKey (selRes .CSN , iclass_key , div_key );
201+ diversifyKey (selRes .CSN , picopass_iclass_key , div_key );
202202 opt_doReaderMAC (ccnr , div_key , mac );
203203
204204 err = rfalPicoPassPollerCheck (mac , & chkRes );
@@ -238,11 +238,11 @@ ReturnCode picopass_read_card(ApplicationArea* AA1) {
238238int32_t picopass_worker_task (void * context ) {
239239 PicopassWorker * picopass_worker = context ;
240240
241- enable_field ();
241+ picopass_worker_enable_field ();
242242 if (picopass_worker -> state == PicopassWorkerStateDetect ) {
243243 picopass_worker_detect (picopass_worker );
244244 }
245- disable_field (ERR_NONE );
245+ picopass_worker_disable_field (ERR_NONE );
246246
247247 picopass_worker_change_state (picopass_worker , PicopassWorkerStateReady );
248248
@@ -254,7 +254,7 @@ void picopass_worker_detect(PicopassWorker* picopass_worker) {
254254 PicopassDeviceData * dev_data = picopass_worker -> dev_data ;
255255
256256 ApplicationArea * AA1 = & dev_data -> AA1 ;
257- PACS * pacs = & dev_data -> pacs ;
257+ PicopassPacs * pacs = & dev_data -> pacs ;
258258 ReturnCode err ;
259259
260260 while (picopass_worker -> state == PicopassWorkerStateDetect ) {
@@ -272,21 +272,21 @@ void picopass_worker_detect(PicopassWorker* picopass_worker) {
272272
273273 if (pacs -> encryption == 0x17 ) {
274274 FURI_LOG_D (TAG , "3DES Encrypted" );
275- err = decrypt (AA1 -> block [1 ].data , pacs -> credential );
275+ err = picopass_worker_decrypt (AA1 -> block [1 ].data , pacs -> credential );
276276 if (err != ERR_NONE ) {
277277 FURI_LOG_E (TAG , "decrypt error %d" , err );
278278 break ;
279279 }
280280 FURI_LOG_D (TAG , "Decrypted 7" );
281281
282- err = decrypt (AA1 -> block [2 ].data , pacs -> pin0 );
282+ err = picopass_worker_decrypt (AA1 -> block [2 ].data , pacs -> pin0 );
283283 if (err != ERR_NONE ) {
284284 FURI_LOG_E (TAG , "decrypt error %d" , err );
285285 break ;
286286 }
287287 FURI_LOG_D (TAG , "Decrypted 8" );
288288
289- err = decrypt (AA1 -> block [3 ].data , pacs -> pin1 );
289+ err = picopass_worker_decrypt (AA1 -> block [3 ].data , pacs -> pin1 );
290290 if (err != ERR_NONE ) {
291291 FURI_LOG_E (TAG , "decrypt error %d" , err );
292292 break ;
@@ -304,7 +304,7 @@ void picopass_worker_detect(PicopassWorker* picopass_worker) {
304304 break ;
305305 }
306306
307- parseWiegand (pacs -> credential , & pacs -> record );
307+ picopass_worker_parse_wiegand (pacs -> credential , & pacs -> record );
308308
309309 // Notify caller and exit
310310 if (picopass_worker -> callback ) {
0 commit comments