Merge branch 'dev' into dmitry_dev

This commit is contained in:
MX
2025-02-13 03:44:00 +03:00
68 changed files with 451 additions and 78 deletions

View File

@@ -1,34 +1,12 @@
## Main changes
- Current API: 79.3
* SubGHz: Jolly Motors support (with add manually) (Thanks @pkooiman !)
* Power: Auto Power Off Timer (by @Dmitry422 with some fixes by @xMasterX)
* OFW: **Fix lost BadBLE keystrokes**
* OFW: **Add the ability to send a signal once via RPC**
* OFW PR 4070: Infrared: increase max carrier limit (by @skotopes)
* OFW PR 4025: Increase system stack's reserved memory size (Fix USB UART Bridge Crash) (by @Astrrra)
* OFW: merged gsurkov/vcp_break_support branch for usb uart bridge (WIP!!!)
* OFW: LFRFID - **EM4305 support**
* Apps: **Check out more Apps updates and fixes by following** [this link](https://github.com/xMasterX/all-the-plugins/commits/dev)
## Other changes
* Power & Desktop: Add input events sub check & use event system for auto power off
* OFW: Rename FuriHalDebuging.md to FuriHalDebugging.md
* OFW: nfc: Fix MIFARE Plus detection
* OFW: u2f: Fix leaking message digest contexts
* OFW: nfc: Fix MFUL PWD_AUTH command creation
* OFW: Bump cross-spawn in /applications/system/js_app/packages/create-fz-app
* OFW: **Pipe** (new api funcs)
* OFW: Fix invalid path errors while deploying SDK by enforcing toolchain to use UTF-8 on initial SDK Extraction
* OFW: **Added flipper_format_write_empty_line(...)**
* OFW: Fix skylander ID reading
* OFW: Work around incorrect serial port handling by the OS
* OFW: Add winter animations
* OFW: FBT: Don't lint JS packages
* OFW: **Loader: Fix BusFault in handling of OOM** (was already included in previous UL release)
* OFW: **NFC Fix ISO15693 stucking in wrong mode.**
* OFW: Update `infrared_test.c` reference
* OFW: **FuriThread stdin**
* OFW: NFC: Plantain parser Last payment amount fix
* OFW: NFC clipper: BART station ids for San Lorenzo, Bay Fair
* OFW: Fix typo for mf_classic_key_cahce_get_next_key() function
* OFW: Infrared: increase max carrier limit
* OFW: Ensure that `furi_record_create` is passed a non-NULL data pointer
* OFW: Update mbedtls & expose AES
* OFW: Add the Showtime animation
<br><br>
#### Known NFC post-refactor regressions list:
- Mifare Mini clones reading is broken (original mini working fine) (OFW)

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 749 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 775 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 795 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 713 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 914 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 913 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 929 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 735 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 764 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 B

View File

@@ -0,0 +1,23 @@
Filetype: Flipper Animation
Version: 1
Width: 128
Height: 64
Passive frames: 26
Active frames: 26
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 41 42 43 44 45 46 47 48 49
Active cycles: 1
Frame rate: 2
Duration: 3600
Active cooldown: 7
Bubble slots: 1
Slot: 0
X: 69
Y: 47
Text: SHOWTIME!
AlignH: Left
AlignV: Center
StartFrame: 41
EndFrame: 44

View File

@@ -216,7 +216,7 @@ Min butthurt: 0
Max butthurt: 14
Min level: 1
Max level: 3
Weight: 4
Weight: 3
Name: L1_Sleigh_ride_128x64
Min butthurt: 0
@@ -225,6 +225,14 @@ Min level: 1
Max level: 3
Weight: 4
Name: L1_Showtime_128x64
Min butthurt: 0
Max butthurt: 10
Min level: 1
Max level: 3
Weight: 4
Name: L1_New_year_128x64
Min butthurt: 0
Max butthurt: 14

View File

@@ -80,6 +80,7 @@ bool furi_record_exists(const char* name) {
void furi_record_create(const char* name, void* data) {
furi_check(furi_record);
furi_check(name);
furi_check(data);
furi_record_lock();

View File

@@ -27,7 +27,7 @@ bool furi_record_exists(const char* name);
/** Create record
*
* @param name record name
* @param data data pointer
* @param data data pointer (not NULL)
* @note Thread safe. Create and destroy must be executed from the same
* thread.
*/

View File

@@ -510,9 +510,6 @@ static void lfrfid_worker_mode_emulate_process(LFRFIDWorker* worker) {
static void lfrfid_worker_mode_write_process(LFRFIDWorker* worker) {
LFRFIDProtocol protocol = worker->protocol;
LFRFIDWriteRequest* request = malloc(sizeof(LFRFIDWriteRequest));
request->write_type = LFRFIDWriteTypeT5577;
bool can_be_written = protocol_dict_get_write_data(worker->protocols, protocol, request);
uint32_t write_start_time = furi_get_tick();
bool too_long = false;
@@ -521,63 +518,88 @@ static void lfrfid_worker_mode_write_process(LFRFIDWorker* worker) {
size_t data_size = protocol_dict_get_data_size(worker->protocols, protocol);
uint8_t* verify_data = malloc(data_size);
uint8_t* read_data = malloc(data_size);
protocol_dict_get_data(worker->protocols, protocol, verify_data, data_size);
if(can_be_written) {
while(!lfrfid_worker_check_for_stop(worker)) {
FURI_LOG_D(TAG, "Data write");
t5577_write(&request->t5577);
while(!lfrfid_worker_check_for_stop(worker)) {
FURI_LOG_D(TAG, "Data write");
uint16_t skips = 0;
for(size_t i = 0; i < LFRFIDWriteTypeMax; i++) {
memset(request, 0, sizeof(LFRFIDWriteRequest));
LFRFIDWriteType write_type = i;
request->write_type = write_type;
ProtocolId read_result = PROTOCOL_NO;
LFRFIDWorkerReadState state = lfrfid_worker_read_internal(
worker,
protocol_dict_get_features(worker->protocols, protocol),
LFRFID_WORKER_WRITE_VERIFY_TIME_MS,
&read_result);
protocol_dict_set_data(worker->protocols, protocol, verify_data, data_size);
if(state == LFRFIDWorkerReadOK) {
bool read_success = false;
bool can_be_written =
protocol_dict_get_write_data(worker->protocols, protocol, request);
if(read_result == protocol) {
protocol_dict_get_data(worker->protocols, protocol, read_data, data_size);
if(memcmp(read_data, verify_data, data_size) == 0) {
read_success = true;
}
}
if(read_success) {
if(!can_be_written) {
skips++;
if(skips == LFRFIDWriteTypeMax) {
if(worker->write_cb) {
worker->write_cb(LFRFIDWorkerWriteOK, worker->cb_ctx);
worker->write_cb(LFRFIDWorkerWriteProtocolCannotBeWritten, worker->cb_ctx);
}
break;
} else {
unsuccessful_reads++;
}
continue;
}
if(unsuccessful_reads == LFRFID_WORKER_WRITE_MAX_UNSUCCESSFUL_READS) {
if(worker->write_cb) {
worker->write_cb(LFRFIDWorkerWriteFobCannotBeWritten, worker->cb_ctx);
}
memset(read_data, 0, data_size);
if(request->write_type == LFRFIDWriteTypeT5577) {
t5577_write(&request->t5577);
} else if(request->write_type == LFRFIDWriteTypeEM4305) {
em4305_write(&request->em4305);
} else {
furi_crash("Unknown write type");
}
}
ProtocolId read_result = PROTOCOL_NO;
LFRFIDWorkerReadState state = lfrfid_worker_read_internal(
worker,
protocol_dict_get_features(worker->protocols, protocol),
LFRFID_WORKER_WRITE_VERIFY_TIME_MS,
&read_result);
if(state == LFRFIDWorkerReadOK) {
bool read_success = false;
if(read_result == protocol) {
protocol_dict_get_data(worker->protocols, protocol, read_data, data_size);
if(memcmp(read_data, verify_data, data_size) == 0) {
read_success = true;
}
}
if(read_success) {
if(worker->write_cb) {
worker->write_cb(LFRFIDWorkerWriteOK, worker->cb_ctx);
}
break;
} else {
unsuccessful_reads++;
if(unsuccessful_reads == LFRFID_WORKER_WRITE_MAX_UNSUCCESSFUL_READS) {
if(worker->write_cb) {
worker->write_cb(LFRFIDWorkerWriteFobCannotBeWritten, worker->cb_ctx);
}
}
} else if(state == LFRFIDWorkerReadExit) {
break;
}
} else if(state == LFRFIDWorkerReadExit) {
break;
}
if(!too_long &&
(furi_get_tick() - write_start_time) > LFRFID_WORKER_WRITE_TOO_LONG_TIME_MS) {
too_long = true;
if(worker->write_cb) {
worker->write_cb(LFRFIDWorkerWriteTooLongToWrite, worker->cb_ctx);
}
if(!too_long &&
(furi_get_tick() - write_start_time) > LFRFID_WORKER_WRITE_TOO_LONG_TIME_MS) {
too_long = true;
if(worker->write_cb) {
worker->write_cb(LFRFIDWorkerWriteTooLongToWrite, worker->cb_ctx);
}
}
lfrfid_worker_delay(worker, LFRFID_WORKER_WRITE_DROP_TIME_MS);
}
} else {
if(worker->write_cb) {
worker->write_cb(LFRFIDWorkerWriteProtocolCannotBeWritten, worker->cb_ctx);
}
lfrfid_worker_delay(worker, LFRFID_WORKER_WRITE_DROP_TIME_MS);
}
free(request);

View File

@@ -1,6 +1,7 @@
#pragma once
#include <toolbox/protocols/protocol.h>
#include "../tools/t5577.h"
#include "../tools/em4305.h"
typedef enum {
LFRFIDFeatureASK = 1 << 0, /** ASK Demodulation */
@@ -31,6 +32,7 @@ typedef enum {
LFRFIDProtocolNexwatch,
LFRFIDProtocolSecurakey,
LFRFIDProtocolGProxII,
LFRFIDProtocolMax,
} LFRFIDProtocol;
@@ -38,11 +40,15 @@ extern const ProtocolBase* lfrfid_protocols[];
typedef enum {
LFRFIDWriteTypeT5577,
LFRFIDWriteTypeEM4305,
LFRFIDWriteTypeMax,
} LFRFIDWriteType;
typedef struct {
LFRFIDWriteType write_type;
union {
LFRFIDT5577 t5577;
LFRFIDEM4305 em4305;
};
} LFRFIDWriteRequest;

View File

@@ -407,6 +407,24 @@ bool protocol_electra_write_data(ProtocolElectra* protocol, void* data) {
request->t5577.blocks_to_write = 5;
result = true;
}
if(request->write_type == LFRFIDWriteTypeEM4305) {
request->em4305.word[4] =
(EM4x05_MODULATION_MANCHESTER | EM4x05_SET_BITRATE(64) | (8 << EM4x05_MAXBLOCK_SHIFT));
uint64_t encoded_data_reversed = 0;
uint64_t encoded_epilogue_reversed = 0;
for(uint8_t i = 0; i < 64; i++) {
encoded_data_reversed = (encoded_data_reversed << 1) |
((protocol->encoded_base_data >> i) & 1);
encoded_epilogue_reversed = (encoded_epilogue_reversed << 1) |
((protocol->encoded_epilogue >> i) & 1);
}
request->em4305.word[5] = encoded_data_reversed & 0xFFFFFFFF;
request->em4305.word[6] = encoded_data_reversed >> 32;
request->em4305.word[7] = encoded_epilogue_reversed & 0xFFFFFFFF;
request->em4305.word[8] = encoded_epilogue_reversed >> 32;
request->em4305.mask = 0x01F0;
result = true;
}
return result;
}

View File

@@ -69,6 +69,19 @@ uint32_t protocol_em4100_get_t5577_bitrate(ProtocolEM4100* proto) {
}
}
uint32_t protocol_em4100_get_em4305_bitrate(ProtocolEM4100* proto) {
switch(proto->clock_per_bit) {
case 64:
return EM4x05_SET_BITRATE(64);
case 32:
return EM4x05_SET_BITRATE(32);
case 16:
return EM4x05_SET_BITRATE(16);
default:
return EM4x05_SET_BITRATE(64);
}
}
uint16_t protocol_em4100_get_short_time_low(ProtocolEM4100* proto) {
return EM_READ_SHORT_TIME_BASE / protocol_em4100_get_time_divisor(proto) -
EM_READ_JITTER_TIME_BASE / protocol_em4100_get_time_divisor(proto);
@@ -339,6 +352,19 @@ bool protocol_em4100_write_data(ProtocolEM4100* protocol, void* data) {
request->t5577.block[2] = protocol->encoded_data;
request->t5577.blocks_to_write = 3;
result = true;
} else if(request->write_type == LFRFIDWriteTypeEM4305) {
request->em4305.word[4] =
(EM4x05_MODULATION_MANCHESTER | protocol_em4100_get_em4305_bitrate(protocol) |
(6 << EM4x05_MAXBLOCK_SHIFT));
uint64_t encoded_data_reversed = 0;
for(uint8_t i = 0; i < 64; i++) {
encoded_data_reversed = (encoded_data_reversed << 1) |
((protocol->encoded_data >> i) & 1);
}
request->em4305.word[5] = encoded_data_reversed;
request->em4305.word[6] = encoded_data_reversed >> 32;
request->em4305.mask = 0x70;
result = true;
}
return result;
}

View File

@@ -264,6 +264,20 @@ bool protocol_gallagher_write_data(ProtocolGallagher* protocol, void* data) {
request->t5577.block[3] = bit_lib_get_bits_32(protocol->encoded_data, 64, 32);
request->t5577.blocks_to_write = 4;
result = true;
} else if(request->write_type == LFRFIDWriteTypeEM4305) {
request->em4305.word[4] =
(EM4x05_MODULATION_MANCHESTER | EM4x05_SET_BITRATE(32) | (7 << EM4x05_MAXBLOCK_SHIFT));
uint32_t encoded_data_reversed[3] = {0};
for(uint8_t i = 0; i < (32 * 3); i++) {
encoded_data_reversed[i / 32] =
(encoded_data_reversed[i / 32] << 1) |
(bit_lib_get_bit(protocol->encoded_data, ((32 * 3) - i)) & 1);
}
request->em4305.word[5] = encoded_data_reversed[2];
request->em4305.word[6] = encoded_data_reversed[1];
request->em4305.word[7] = encoded_data_reversed[0];
request->em4305.mask = 0xF0;
result = true;
}
return result;
}

View File

@@ -171,6 +171,19 @@ bool protocol_viking_write_data(ProtocolViking* protocol, void* data) {
request->t5577.block[2] = bit_lib_get_bits_32(protocol->encoded_data, 32, 32);
request->t5577.blocks_to_write = 3;
result = true;
} else if(request->write_type == LFRFIDWriteTypeEM4305) {
request->em4305.word[4] =
(EM4x05_MODULATION_MANCHESTER | EM4x05_SET_BITRATE(32) | (6 << EM4x05_MAXBLOCK_SHIFT));
uint32_t encoded_data_reversed[2] = {0};
for(uint8_t i = 0; i < 64; i++) {
encoded_data_reversed[i / 32] =
(encoded_data_reversed[i / 32] << 1) |
(bit_lib_get_bit(protocol->encoded_data, (63 - i)) & 1);
}
request->em4305.word[5] = encoded_data_reversed[1];
request->em4305.word[6] = encoded_data_reversed[0];
request->em4305.mask = 0x70;
result = true;
}
return result;
}

152
lib/lfrfid/tools/em4305.c Normal file
View File

@@ -0,0 +1,152 @@
#include "em4305.h"
#include <furi.h>
#include <furi_hal_rfid.h>
#define TAG "EM4305"
#define EM4305_TIMING_1 (32)
#define EM4305_TIMING_0_OFF (23)
#define EM4305_TIMING_0_ON (18)
#define EM4305_FIELD_STOP_OFF_CYCLES (55)
#define EM4305_FIELD_STOP_ON_CYCLES (18)
#define EM4305_TIMING_POWER_CHECK (1480)
#define EM4305_TIMING_EEPROM_WRITE (9340)
static bool em4305_line_parity(uint8_t data) {
uint8_t parity = 0;
for(uint8_t i = 0; i < 8; i++) {
parity ^= (data >> i) & 1;
}
return parity;
}
static uint64_t em4305_prepare_data(uint32_t data) {
uint8_t i, j;
uint64_t data_with_parity = 0;
// 4 lines of 8 bits of data
// line even parity at bits 8 17 26 35
// column even parity at bits 36-43
// bit 44 is always 0
// final table is 5 lines of 9 bits
// line parity
for(i = 0; i < 4; i++) {
for(j = 0; j < 8; j++) {
data_with_parity = (data_with_parity << 1) | ((data >> (i * 8 + j)) & 1);
}
data_with_parity = (data_with_parity << 1) | (uint64_t)em4305_line_parity(data >> (i * 8));
}
// column parity
for(i = 0; i < 8; i++) {
uint8_t column_parity = 0;
for(j = 0; j < 4; j++) {
column_parity ^= (data >> (j * 8 + i)) & 1;
}
data_with_parity = (data_with_parity << 1) | column_parity;
}
// bit 44
data_with_parity = (data_with_parity << 1) | 0;
return data_with_parity;
}
static void em4305_start(void) {
furi_hal_rfid_tim_read_start(125000, 0.5);
// do not ground the antenna
furi_hal_rfid_pin_pull_release();
}
static void em4305_stop(void) {
furi_hal_rfid_tim_read_stop();
furi_hal_rfid_pins_reset();
}
static void em4305_write_bit(bool value) {
if(value) {
furi_delay_us(EM4305_TIMING_1 * 8);
} else {
furi_hal_rfid_tim_read_pause();
furi_delay_us(EM4305_TIMING_0_OFF * 8);
furi_hal_rfid_tim_read_continue();
furi_delay_us(EM4305_TIMING_0_ON * 8);
}
}
static void em4305_write_opcode(uint8_t value) {
// 3 bit opcode
for(uint8_t i = 0; i < 3; i++) {
em4305_write_bit((value >> i) & 1);
}
// parity
bool parity = 0;
for(uint8_t i = 0; i < 3; i++) {
parity ^= (value >> i) & 1;
}
em4305_write_bit(parity);
}
static void em4305_field_stop() {
furi_hal_rfid_tim_read_pause();
furi_delay_us(EM4305_FIELD_STOP_OFF_CYCLES * 8);
furi_hal_rfid_tim_read_continue();
furi_delay_us(EM4305_FIELD_STOP_ON_CYCLES * 8);
}
static void em4305_write_word(uint8_t address, uint32_t data) {
// parity
uint64_t data_with_parity = em4305_prepare_data(data);
// power up the tag
furi_delay_us(8000);
// field stop
em4305_field_stop();
// start bit
em4305_write_bit(0);
// opcode
em4305_write_opcode(EM4x05_OPCODE_WRITE);
// address
bool address_parity = 0;
for(uint8_t i = 0; i < 4; i++) {
em4305_write_bit((address >> (i)) & 1);
address_parity ^= (address >> (i)) & 1;
}
em4305_write_bit(0);
em4305_write_bit(0);
em4305_write_bit(address_parity);
// data
for(uint8_t i = 0; i < 45; i++) {
em4305_write_bit((data_with_parity >> (44 - i)) & 1);
}
// wait for power check and eeprom write
furi_delay_us(EM4305_TIMING_POWER_CHECK);
furi_delay_us(EM4305_TIMING_EEPROM_WRITE);
}
void em4305_write(LFRFIDEM4305* data) {
furi_check(data);
em4305_start();
FURI_CRITICAL_ENTER();
for(uint8_t i = 0; i < EM4x05_WORD_COUNT; i++) {
if(data->mask & (1 << i)) {
em4305_write_word(i, data->word[i]);
}
}
FURI_CRITICAL_EXIT();
em4305_stop();
}

61
lib/lfrfid/tools/em4305.h Normal file
View File

@@ -0,0 +1,61 @@
#pragma once
#include <stdint.h>
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
// EM4305/4205 chip config definitions, thanks proxmark3!
#define EM4x05_GET_BITRATE(x) ((((x) & 0x3F) * 2) + 2)
// Note: only data rates 8, 16, 32, 40(*) and 64 are supported. (*) only with EM4305 330pF
#define EM4x05_SET_BITRATE(x) (((x) - 2) / 2)
#define EM4x05_MODULATION_NRZ (0x00000000)
#define EM4x05_MODULATION_MANCHESTER (0x00000040)
#define EM4x05_MODULATION_BIPHASE (0x00000080)
#define EM4x05_MODULATION_MILLER (0x000000C0) // not supported by all 4x05/4x69 chips
#define EM4x05_MODULATION_PSK1 (0x00000100) // not supported by all 4x05/4x69 chips
#define EM4x05_MODULATION_PSK2 (0x00000140) // not supported by all 4x05/4x69 chips
#define EM4x05_MODULATION_PSK3 (0x00000180) // not supported by all 4x05/4x69 chips
#define EM4x05_MODULATION_FSK1 (0x00000200) // not supported by all 4x05/4x69 chips
#define EM4x05_MODULATION_FSK2 (0x00000240) // not supported by all 4x05/4x69 chips
#define EM4x05_PSK_RF_2 (0)
#define EM4x05_PSK_RF_4 (0x00000400)
#define EM4x05_PSK_RF_8 (0x00000800)
#define EM4x05_MAXBLOCK_SHIFT (14)
#define EM4x05_FIRST_USER_BLOCK (5)
#define EM4x05_SET_NUM_BLOCKS(x) \
(((x) + 4) << 14) // number of blocks sent during default read mode
#define EM4x05_GET_NUM_BLOCKS(x) ((((x) >> 14) & 0xF) - 4)
#define EM4x05_READ_LOGIN_REQ (1 << 18)
#define EM4x05_READ_HK_LOGIN_REQ (1 << 19)
#define EM4x05_WRITE_LOGIN_REQ (1 << 20)
#define EM4x05_WRITE_HK_LOGIN_REQ (1 << 21)
#define EM4x05_READ_AFTER_WRITE (1 << 22)
#define EM4x05_DISABLE_ALLOWED (1 << 23)
#define EM4x05_READER_TALK_FIRST (1 << 24)
#define EM4x05_INVERT (1 << 25)
#define EM4x05_PIGEON (1 << 26)
#define EM4x05_WORD_COUNT (16)
#define EM4x05_OPCODE_LOGIN (0b001)
#define EM4x05_OPCODE_WRITE (0b010)
#define EM4x05_OPCODE_READ (0b100)
#define EM4x05_OPCODE_PROTECT (0b110)
#define EM4x05_OPCODE_DISABLE (0b101)
typedef struct {
uint32_t word[EM4x05_WORD_COUNT]; /**< Word data to write */
uint16_t mask; /**< Word mask */
} LFRFIDEM4305;
/** Write EM4305 tag data to tag
*
* @param data The data to write (mask is taken from that data)
*/
void em4305_write(LFRFIDEM4305* data);
#ifdef __cplusplus
}
#endif

View File

@@ -6,6 +6,7 @@ env.Append(
"#/lib/mbedtls/include",
],
SDK_HEADERS=[
File("mbedtls/include/mbedtls/aes.h"),
File("mbedtls/include/mbedtls/des.h"),
File("mbedtls/include/mbedtls/sha1.h"),
File("mbedtls/include/mbedtls/sha256.h"),
@@ -37,6 +38,7 @@ libenv.AppendUnique(
# sources = libenv.GlobRecursive("*.c*", "mbedtls/library")
# Otherwise, we can just use the files we need:
sources = [
File("mbedtls/library/aes.c"),
File("mbedtls/library/bignum.c"),
File("mbedtls/library/bignum_core.c"),
File("mbedtls/library/ecdsa.c"),

View File

@@ -34,7 +34,7 @@ jobs:
with:
sdk-channel: ${{ matrix.sdk-channel }}
- name: Upload app artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
# See ufbt action docs for other output variables
name: ${{ github.event.repository.name }}-${{ steps.build-app.outputs.suffix }}

View File

@@ -1,5 +1,5 @@
entry,status,name,type,params
Version,+,79.2,,
Version,+,79.3,,
Header,+,applications/services/bt/bt_service/bt.h,,
Header,+,applications/services/bt/bt_service/bt_keys_storage.h,,
Header,+,applications/services/cli/cli.h,,
@@ -84,6 +84,7 @@ Header,+,lib/libusb_stm32/inc/usb_hid.h,,
Header,+,lib/libusb_stm32/inc/usb_std.h,,
Header,+,lib/libusb_stm32/inc/usb_tmc.h,,
Header,+,lib/libusb_stm32/inc/usbd_core.h,,
Header,+,lib/mbedtls/include/mbedtls/aes.h,,
Header,+,lib/mbedtls/include/mbedtls/des.h,,
Header,+,lib/mbedtls/include/mbedtls/ecdh.h,,
Header,+,lib/mbedtls/include/mbedtls/ecdsa.h,,
@@ -1892,6 +1893,21 @@ Function,+,manchester_encoder_advance,_Bool,"ManchesterEncoderState*, const _Boo
Function,+,manchester_encoder_finish,ManchesterEncoderResult,ManchesterEncoderState*
Function,+,manchester_encoder_reset,void,ManchesterEncoderState*
Function,+,maxim_crc8,uint8_t,"const uint8_t*, const uint8_t, const uint8_t"
Function,-,mbedtls_aes_crypt_cbc,int,"mbedtls_aes_context*, int, size_t, unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_crypt_cfb128,int,"mbedtls_aes_context*, int, size_t, size_t*, unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_crypt_cfb8,int,"mbedtls_aes_context*, int, size_t, unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_crypt_ctr,int,"mbedtls_aes_context*, size_t, size_t*, unsigned char[16], unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_crypt_ecb,int,"mbedtls_aes_context*, int, const unsigned char[16], unsigned char[16]"
Function,-,mbedtls_aes_crypt_ofb,int,"mbedtls_aes_context*, size_t, size_t*, unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_crypt_xts,int,"mbedtls_aes_xts_context*, int, size_t, const unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_free,void,mbedtls_aes_context*
Function,-,mbedtls_aes_init,void,mbedtls_aes_context*
Function,-,mbedtls_aes_setkey_dec,int,"mbedtls_aes_context*, const unsigned char*, unsigned int"
Function,-,mbedtls_aes_setkey_enc,int,"mbedtls_aes_context*, const unsigned char*, unsigned int"
Function,-,mbedtls_aes_xts_free,void,mbedtls_aes_xts_context*
Function,-,mbedtls_aes_xts_init,void,mbedtls_aes_xts_context*
Function,-,mbedtls_aes_xts_setkey_dec,int,"mbedtls_aes_xts_context*, const unsigned char*, unsigned int"
Function,-,mbedtls_aes_xts_setkey_enc,int,"mbedtls_aes_xts_context*, const unsigned char*, unsigned int"
Function,-,mbedtls_des3_crypt_cbc,int,"mbedtls_des3_context*, int, size_t, unsigned char[8], const unsigned char*, unsigned char*"
Function,-,mbedtls_des3_crypt_ecb,int,"mbedtls_des3_context*, const unsigned char[8], unsigned char[8]"
Function,-,mbedtls_des3_free,void,mbedtls_des3_context*
@@ -1915,6 +1931,7 @@ Function,-,mbedtls_ecdh_can_do,int,mbedtls_ecp_group_id
Function,-,mbedtls_ecdh_compute_shared,int,"mbedtls_ecp_group*, mbedtls_mpi*, const mbedtls_ecp_point*, const mbedtls_mpi*, int (*)(void*, unsigned char*, size_t), void*"
Function,-,mbedtls_ecdh_free,void,mbedtls_ecdh_context*
Function,-,mbedtls_ecdh_gen_public,int,"mbedtls_ecp_group*, mbedtls_mpi*, mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*"
Function,-,mbedtls_ecdh_get_grp_id,mbedtls_ecp_group_id,mbedtls_ecdh_context*
Function,-,mbedtls_ecdh_get_params,int,"mbedtls_ecdh_context*, const mbedtls_ecp_keypair*, mbedtls_ecdh_side"
Function,-,mbedtls_ecdh_init,void,mbedtls_ecdh_context*
Function,-,mbedtls_ecdh_make_params,int,"mbedtls_ecdh_context*, size_t*, unsigned char*, size_t, int (*)(void*, unsigned char*, size_t), void*"
@@ -1955,7 +1972,9 @@ Function,-,mbedtls_ecp_group_init,void,mbedtls_ecp_group*
Function,-,mbedtls_ecp_group_load,int,"mbedtls_ecp_group*, mbedtls_ecp_group_id"
Function,-,mbedtls_ecp_grp_id_list,const mbedtls_ecp_group_id*,
Function,-,mbedtls_ecp_is_zero,int,mbedtls_ecp_point*
Function,-,mbedtls_ecp_keypair_calc_public,int,"mbedtls_ecp_keypair*, int (*)(void*, unsigned char*, size_t), void*"
Function,-,mbedtls_ecp_keypair_free,void,mbedtls_ecp_keypair*
Function,-,mbedtls_ecp_keypair_get_group_id,mbedtls_ecp_group_id,const mbedtls_ecp_keypair*
Function,-,mbedtls_ecp_keypair_init,void,mbedtls_ecp_keypair*
Function,-,mbedtls_ecp_mul,int,"mbedtls_ecp_group*, mbedtls_ecp_point*, const mbedtls_mpi*, const mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*"
Function,-,mbedtls_ecp_mul_restartable,int,"mbedtls_ecp_group*, mbedtls_ecp_point*, const mbedtls_mpi*, const mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*, mbedtls_ecp_restart_ctx*"
@@ -1968,6 +1987,7 @@ Function,-,mbedtls_ecp_point_read_binary,int,"const mbedtls_ecp_group*, mbedtls_
Function,-,mbedtls_ecp_point_read_string,int,"mbedtls_ecp_point*, int, const char*, const char*"
Function,-,mbedtls_ecp_point_write_binary,int,"const mbedtls_ecp_group*, const mbedtls_ecp_point*, int, size_t*, unsigned char*, size_t"
Function,-,mbedtls_ecp_read_key,int,"mbedtls_ecp_group_id, mbedtls_ecp_keypair*, const unsigned char*, size_t"
Function,-,mbedtls_ecp_set_public_key,int,"mbedtls_ecp_group_id, mbedtls_ecp_keypair*, const mbedtls_ecp_point*"
Function,-,mbedtls_ecp_set_zero,int,mbedtls_ecp_point*
Function,-,mbedtls_ecp_tls_read_group,int,"mbedtls_ecp_group*, const unsigned char**, size_t"
Function,-,mbedtls_ecp_tls_read_group_id,int,"mbedtls_ecp_group_id*, const unsigned char**, size_t"
@@ -1975,6 +1995,10 @@ Function,-,mbedtls_ecp_tls_read_point,int,"const mbedtls_ecp_group*, mbedtls_ecp
Function,-,mbedtls_ecp_tls_write_group,int,"const mbedtls_ecp_group*, size_t*, unsigned char*, size_t"
Function,-,mbedtls_ecp_tls_write_point,int,"const mbedtls_ecp_group*, const mbedtls_ecp_point*, int, size_t*, unsigned char*, size_t"
Function,-,mbedtls_ecp_write_key,int,"mbedtls_ecp_keypair*, unsigned char*, size_t"
Function,-,mbedtls_ecp_write_key_ext,int,"const mbedtls_ecp_keypair*, size_t*, unsigned char*, size_t"
Function,-,mbedtls_ecp_write_public_key,int,"const mbedtls_ecp_keypair*, int, size_t*, unsigned char*, size_t"
Function,-,mbedtls_internal_aes_decrypt,int,"mbedtls_aes_context*, const unsigned char[16], unsigned char[16]"
Function,-,mbedtls_internal_aes_encrypt,int,"mbedtls_aes_context*, const unsigned char[16], unsigned char[16]"
Function,-,mbedtls_internal_md5_process,int,"mbedtls_md5_context*, const unsigned char[64]"
Function,-,mbedtls_internal_sha1_process,int,"mbedtls_sha1_context*, const unsigned char[64]"
Function,-,mbedtls_internal_sha256_process,int,"mbedtls_sha256_context*, const unsigned char[64]"
@@ -2303,9 +2327,9 @@ Function,+,pipe_install_as_stdio,void,PipeSide*
Function,+,pipe_receive,size_t,"PipeSide*, void*, size_t, FuriWait"
Function,+,pipe_role,PipeRole,PipeSide*
Function,+,pipe_send,size_t,"PipeSide*, const void*, size_t, FuriWait"
Function,+,pipe_set_broken_callback,void,"PipeSide*, PipeSideBrokenCallback, FuriEventLoopEvent"
Function,+,pipe_set_callback_context,void,"PipeSide*, void*"
Function,+,pipe_set_data_arrived_callback,void,"PipeSide*, PipeSideDataArrivedCallback, FuriEventLoopEvent"
Function,+,pipe_set_broken_callback,void,"PipeSide*, PipeSideBrokenCallback, FuriEventLoopEvent"
Function,+,pipe_set_space_freed_callback,void,"PipeSide*, PipeSideSpaceFreedCallback, FuriEventLoopEvent"
Function,+,pipe_spaces_available,size_t,PipeSide*
Function,+,pipe_state,PipeState,PipeSide*
1 entry status name type params
2 Version + 79.2 79.3
3 Header + applications/services/bt/bt_service/bt.h
4 Header + applications/services/bt/bt_service/bt_keys_storage.h
5 Header + applications/services/cli/cli.h
84 Header + lib/libusb_stm32/inc/usb_std.h
85 Header + lib/libusb_stm32/inc/usb_tmc.h
86 Header + lib/libusb_stm32/inc/usbd_core.h
87 Header + lib/mbedtls/include/mbedtls/aes.h
88 Header + lib/mbedtls/include/mbedtls/des.h
89 Header + lib/mbedtls/include/mbedtls/ecdh.h
90 Header + lib/mbedtls/include/mbedtls/ecdsa.h
1893 Function + manchester_encoder_finish ManchesterEncoderResult ManchesterEncoderState*
1894 Function + manchester_encoder_reset void ManchesterEncoderState*
1895 Function + maxim_crc8 uint8_t const uint8_t*, const uint8_t, const uint8_t
1896 Function - mbedtls_aes_crypt_cbc int mbedtls_aes_context*, int, size_t, unsigned char[16], const unsigned char*, unsigned char*
1897 Function - mbedtls_aes_crypt_cfb128 int mbedtls_aes_context*, int, size_t, size_t*, unsigned char[16], const unsigned char*, unsigned char*
1898 Function - mbedtls_aes_crypt_cfb8 int mbedtls_aes_context*, int, size_t, unsigned char[16], const unsigned char*, unsigned char*
1899 Function - mbedtls_aes_crypt_ctr int mbedtls_aes_context*, size_t, size_t*, unsigned char[16], unsigned char[16], const unsigned char*, unsigned char*
1900 Function - mbedtls_aes_crypt_ecb int mbedtls_aes_context*, int, const unsigned char[16], unsigned char[16]
1901 Function - mbedtls_aes_crypt_ofb int mbedtls_aes_context*, size_t, size_t*, unsigned char[16], const unsigned char*, unsigned char*
1902 Function - mbedtls_aes_crypt_xts int mbedtls_aes_xts_context*, int, size_t, const unsigned char[16], const unsigned char*, unsigned char*
1903 Function - mbedtls_aes_free void mbedtls_aes_context*
1904 Function - mbedtls_aes_init void mbedtls_aes_context*
1905 Function - mbedtls_aes_setkey_dec int mbedtls_aes_context*, const unsigned char*, unsigned int
1906 Function - mbedtls_aes_setkey_enc int mbedtls_aes_context*, const unsigned char*, unsigned int
1907 Function - mbedtls_aes_xts_free void mbedtls_aes_xts_context*
1908 Function - mbedtls_aes_xts_init void mbedtls_aes_xts_context*
1909 Function - mbedtls_aes_xts_setkey_dec int mbedtls_aes_xts_context*, const unsigned char*, unsigned int
1910 Function - mbedtls_aes_xts_setkey_enc int mbedtls_aes_xts_context*, const unsigned char*, unsigned int
1911 Function - mbedtls_des3_crypt_cbc int mbedtls_des3_context*, int, size_t, unsigned char[8], const unsigned char*, unsigned char*
1912 Function - mbedtls_des3_crypt_ecb int mbedtls_des3_context*, const unsigned char[8], unsigned char[8]
1913 Function - mbedtls_des3_free void mbedtls_des3_context*
1931 Function - mbedtls_ecdh_compute_shared int mbedtls_ecp_group*, mbedtls_mpi*, const mbedtls_ecp_point*, const mbedtls_mpi*, int (*)(void*, unsigned char*, size_t), void*
1932 Function - mbedtls_ecdh_free void mbedtls_ecdh_context*
1933 Function - mbedtls_ecdh_gen_public int mbedtls_ecp_group*, mbedtls_mpi*, mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*
1934 Function - mbedtls_ecdh_get_grp_id mbedtls_ecp_group_id mbedtls_ecdh_context*
1935 Function - mbedtls_ecdh_get_params int mbedtls_ecdh_context*, const mbedtls_ecp_keypair*, mbedtls_ecdh_side
1936 Function - mbedtls_ecdh_init void mbedtls_ecdh_context*
1937 Function - mbedtls_ecdh_make_params int mbedtls_ecdh_context*, size_t*, unsigned char*, size_t, int (*)(void*, unsigned char*, size_t), void*
1972 Function - mbedtls_ecp_group_load int mbedtls_ecp_group*, mbedtls_ecp_group_id
1973 Function - mbedtls_ecp_grp_id_list const mbedtls_ecp_group_id*
1974 Function - mbedtls_ecp_is_zero int mbedtls_ecp_point*
1975 Function - mbedtls_ecp_keypair_calc_public int mbedtls_ecp_keypair*, int (*)(void*, unsigned char*, size_t), void*
1976 Function - mbedtls_ecp_keypair_free void mbedtls_ecp_keypair*
1977 Function - mbedtls_ecp_keypair_get_group_id mbedtls_ecp_group_id const mbedtls_ecp_keypair*
1978 Function - mbedtls_ecp_keypair_init void mbedtls_ecp_keypair*
1979 Function - mbedtls_ecp_mul int mbedtls_ecp_group*, mbedtls_ecp_point*, const mbedtls_mpi*, const mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*
1980 Function - mbedtls_ecp_mul_restartable int mbedtls_ecp_group*, mbedtls_ecp_point*, const mbedtls_mpi*, const mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*, mbedtls_ecp_restart_ctx*
1987 Function - mbedtls_ecp_point_read_string int mbedtls_ecp_point*, int, const char*, const char*
1988 Function - mbedtls_ecp_point_write_binary int const mbedtls_ecp_group*, const mbedtls_ecp_point*, int, size_t*, unsigned char*, size_t
1989 Function - mbedtls_ecp_read_key int mbedtls_ecp_group_id, mbedtls_ecp_keypair*, const unsigned char*, size_t
1990 Function - mbedtls_ecp_set_public_key int mbedtls_ecp_group_id, mbedtls_ecp_keypair*, const mbedtls_ecp_point*
1991 Function - mbedtls_ecp_set_zero int mbedtls_ecp_point*
1992 Function - mbedtls_ecp_tls_read_group int mbedtls_ecp_group*, const unsigned char**, size_t
1993 Function - mbedtls_ecp_tls_read_group_id int mbedtls_ecp_group_id*, const unsigned char**, size_t
1995 Function - mbedtls_ecp_tls_write_group int const mbedtls_ecp_group*, size_t*, unsigned char*, size_t
1996 Function - mbedtls_ecp_tls_write_point int const mbedtls_ecp_group*, const mbedtls_ecp_point*, int, size_t*, unsigned char*, size_t
1997 Function - mbedtls_ecp_write_key int mbedtls_ecp_keypair*, unsigned char*, size_t
1998 Function - mbedtls_ecp_write_key_ext int const mbedtls_ecp_keypair*, size_t*, unsigned char*, size_t
1999 Function - mbedtls_ecp_write_public_key int const mbedtls_ecp_keypair*, int, size_t*, unsigned char*, size_t
2000 Function - mbedtls_internal_aes_decrypt int mbedtls_aes_context*, const unsigned char[16], unsigned char[16]
2001 Function - mbedtls_internal_aes_encrypt int mbedtls_aes_context*, const unsigned char[16], unsigned char[16]
2002 Function - mbedtls_internal_md5_process int mbedtls_md5_context*, const unsigned char[64]
2003 Function - mbedtls_internal_sha1_process int mbedtls_sha1_context*, const unsigned char[64]
2004 Function - mbedtls_internal_sha256_process int mbedtls_sha256_context*, const unsigned char[64]
2327 Function + pipe_receive size_t PipeSide*, void*, size_t, FuriWait
2328 Function + pipe_role PipeRole PipeSide*
2329 Function + pipe_send size_t PipeSide*, const void*, size_t, FuriWait
2330 Function + pipe_set_broken_callback void PipeSide*, PipeSideBrokenCallback, FuriEventLoopEvent
2331 Function + pipe_set_callback_context void PipeSide*, void*
2332 Function + pipe_set_data_arrived_callback void PipeSide*, PipeSideDataArrivedCallback, FuriEventLoopEvent
Function + pipe_set_broken_callback void PipeSide*, PipeSideBrokenCallback, FuriEventLoopEvent
2333 Function + pipe_set_space_freed_callback void PipeSide*, PipeSideSpaceFreedCallback, FuriEventLoopEvent
2334 Function + pipe_spaces_available size_t PipeSide*
2335 Function + pipe_state PipeState PipeSide*

View File

@@ -96,6 +96,7 @@ Header,+,lib/libusb_stm32/inc/usb_hid.h,,
Header,+,lib/libusb_stm32/inc/usb_std.h,,
Header,+,lib/libusb_stm32/inc/usb_tmc.h,,
Header,+,lib/libusb_stm32/inc/usbd_core.h,,
Header,+,lib/mbedtls/include/mbedtls/aes.h,,
Header,+,lib/mbedtls/include/mbedtls/des.h,,
Header,+,lib/mbedtls/include/mbedtls/ecdh.h,,
Header,+,lib/mbedtls/include/mbedtls/ecdsa.h,,
@@ -1009,6 +1010,7 @@ Function,+,elements_string_fit_width,void,"Canvas*, FuriString*, size_t"
Function,+,elements_text_box,void,"Canvas*, int32_t, int32_t, size_t, size_t, Align, Align, const char*, _Bool"
Function,+,elf_resolve_from_hashtable,_Bool,"const ElfApiInterface*, uint32_t, Elf32_Addr*"
Function,+,elf_symbolname_hash,uint32_t,const char*
Function,+,em4305_write,void,LFRFIDEM4305*
Function,+,empty_screen_alloc,EmptyScreen*,
Function,+,empty_screen_free,void,EmptyScreen*
Function,+,empty_screen_get_view,View*,EmptyScreen*
@@ -2367,6 +2369,21 @@ Function,+,manchester_encoder_advance,_Bool,"ManchesterEncoderState*, const _Boo
Function,+,manchester_encoder_finish,ManchesterEncoderResult,ManchesterEncoderState*
Function,+,manchester_encoder_reset,void,ManchesterEncoderState*
Function,+,maxim_crc8,uint8_t,"const uint8_t*, const uint8_t, const uint8_t"
Function,-,mbedtls_aes_crypt_cbc,int,"mbedtls_aes_context*, int, size_t, unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_crypt_cfb128,int,"mbedtls_aes_context*, int, size_t, size_t*, unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_crypt_cfb8,int,"mbedtls_aes_context*, int, size_t, unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_crypt_ctr,int,"mbedtls_aes_context*, size_t, size_t*, unsigned char[16], unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_crypt_ecb,int,"mbedtls_aes_context*, int, const unsigned char[16], unsigned char[16]"
Function,-,mbedtls_aes_crypt_ofb,int,"mbedtls_aes_context*, size_t, size_t*, unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_crypt_xts,int,"mbedtls_aes_xts_context*, int, size_t, const unsigned char[16], const unsigned char*, unsigned char*"
Function,-,mbedtls_aes_free,void,mbedtls_aes_context*
Function,-,mbedtls_aes_init,void,mbedtls_aes_context*
Function,-,mbedtls_aes_setkey_dec,int,"mbedtls_aes_context*, const unsigned char*, unsigned int"
Function,-,mbedtls_aes_setkey_enc,int,"mbedtls_aes_context*, const unsigned char*, unsigned int"
Function,-,mbedtls_aes_xts_free,void,mbedtls_aes_xts_context*
Function,-,mbedtls_aes_xts_init,void,mbedtls_aes_xts_context*
Function,-,mbedtls_aes_xts_setkey_dec,int,"mbedtls_aes_xts_context*, const unsigned char*, unsigned int"
Function,-,mbedtls_aes_xts_setkey_enc,int,"mbedtls_aes_xts_context*, const unsigned char*, unsigned int"
Function,-,mbedtls_des3_crypt_cbc,int,"mbedtls_des3_context*, int, size_t, unsigned char[8], const unsigned char*, unsigned char*"
Function,-,mbedtls_des3_crypt_ecb,int,"mbedtls_des3_context*, const unsigned char[8], unsigned char[8]"
Function,-,mbedtls_des3_free,void,mbedtls_des3_context*
@@ -2390,6 +2407,7 @@ Function,-,mbedtls_ecdh_can_do,int,mbedtls_ecp_group_id
Function,-,mbedtls_ecdh_compute_shared,int,"mbedtls_ecp_group*, mbedtls_mpi*, const mbedtls_ecp_point*, const mbedtls_mpi*, int (*)(void*, unsigned char*, size_t), void*"
Function,-,mbedtls_ecdh_free,void,mbedtls_ecdh_context*
Function,-,mbedtls_ecdh_gen_public,int,"mbedtls_ecp_group*, mbedtls_mpi*, mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*"
Function,-,mbedtls_ecdh_get_grp_id,mbedtls_ecp_group_id,mbedtls_ecdh_context*
Function,-,mbedtls_ecdh_get_params,int,"mbedtls_ecdh_context*, const mbedtls_ecp_keypair*, mbedtls_ecdh_side"
Function,-,mbedtls_ecdh_init,void,mbedtls_ecdh_context*
Function,-,mbedtls_ecdh_make_params,int,"mbedtls_ecdh_context*, size_t*, unsigned char*, size_t, int (*)(void*, unsigned char*, size_t), void*"
@@ -2430,7 +2448,9 @@ Function,-,mbedtls_ecp_group_init,void,mbedtls_ecp_group*
Function,-,mbedtls_ecp_group_load,int,"mbedtls_ecp_group*, mbedtls_ecp_group_id"
Function,-,mbedtls_ecp_grp_id_list,const mbedtls_ecp_group_id*,
Function,-,mbedtls_ecp_is_zero,int,mbedtls_ecp_point*
Function,-,mbedtls_ecp_keypair_calc_public,int,"mbedtls_ecp_keypair*, int (*)(void*, unsigned char*, size_t), void*"
Function,-,mbedtls_ecp_keypair_free,void,mbedtls_ecp_keypair*
Function,-,mbedtls_ecp_keypair_get_group_id,mbedtls_ecp_group_id,const mbedtls_ecp_keypair*
Function,-,mbedtls_ecp_keypair_init,void,mbedtls_ecp_keypair*
Function,-,mbedtls_ecp_mul,int,"mbedtls_ecp_group*, mbedtls_ecp_point*, const mbedtls_mpi*, const mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*"
Function,-,mbedtls_ecp_mul_restartable,int,"mbedtls_ecp_group*, mbedtls_ecp_point*, const mbedtls_mpi*, const mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*, mbedtls_ecp_restart_ctx*"
@@ -2443,6 +2463,7 @@ Function,-,mbedtls_ecp_point_read_binary,int,"const mbedtls_ecp_group*, mbedtls_
Function,-,mbedtls_ecp_point_read_string,int,"mbedtls_ecp_point*, int, const char*, const char*"
Function,-,mbedtls_ecp_point_write_binary,int,"const mbedtls_ecp_group*, const mbedtls_ecp_point*, int, size_t*, unsigned char*, size_t"
Function,-,mbedtls_ecp_read_key,int,"mbedtls_ecp_group_id, mbedtls_ecp_keypair*, const unsigned char*, size_t"
Function,-,mbedtls_ecp_set_public_key,int,"mbedtls_ecp_group_id, mbedtls_ecp_keypair*, const mbedtls_ecp_point*"
Function,-,mbedtls_ecp_set_zero,int,mbedtls_ecp_point*
Function,-,mbedtls_ecp_tls_read_group,int,"mbedtls_ecp_group*, const unsigned char**, size_t"
Function,-,mbedtls_ecp_tls_read_group_id,int,"mbedtls_ecp_group_id*, const unsigned char**, size_t"
@@ -2450,6 +2471,10 @@ Function,-,mbedtls_ecp_tls_read_point,int,"const mbedtls_ecp_group*, mbedtls_ecp
Function,-,mbedtls_ecp_tls_write_group,int,"const mbedtls_ecp_group*, size_t*, unsigned char*, size_t"
Function,-,mbedtls_ecp_tls_write_point,int,"const mbedtls_ecp_group*, const mbedtls_ecp_point*, int, size_t*, unsigned char*, size_t"
Function,-,mbedtls_ecp_write_key,int,"mbedtls_ecp_keypair*, unsigned char*, size_t"
Function,-,mbedtls_ecp_write_key_ext,int,"const mbedtls_ecp_keypair*, size_t*, unsigned char*, size_t"
Function,-,mbedtls_ecp_write_public_key,int,"const mbedtls_ecp_keypair*, int, size_t*, unsigned char*, size_t"
Function,-,mbedtls_internal_aes_decrypt,int,"mbedtls_aes_context*, const unsigned char[16], unsigned char[16]"
Function,-,mbedtls_internal_aes_encrypt,int,"mbedtls_aes_context*, const unsigned char[16], unsigned char[16]"
Function,-,mbedtls_internal_md5_process,int,"mbedtls_md5_context*, const unsigned char[64]"
Function,-,mbedtls_internal_sha1_process,int,"mbedtls_sha1_context*, const unsigned char[64]"
Function,-,mbedtls_internal_sha256_process,int,"mbedtls_sha256_context*, const unsigned char[64]"
1 entry status name type params
96 Header + lib/libusb_stm32/inc/usb_std.h
97 Header + lib/libusb_stm32/inc/usb_tmc.h
98 Header + lib/libusb_stm32/inc/usbd_core.h
99 Header + lib/mbedtls/include/mbedtls/aes.h
100 Header + lib/mbedtls/include/mbedtls/des.h
101 Header + lib/mbedtls/include/mbedtls/ecdh.h
102 Header + lib/mbedtls/include/mbedtls/ecdsa.h
1010 Function + elements_text_box void Canvas*, int32_t, int32_t, size_t, size_t, Align, Align, const char*, _Bool
1011 Function + elf_resolve_from_hashtable _Bool const ElfApiInterface*, uint32_t, Elf32_Addr*
1012 Function + elf_symbolname_hash uint32_t const char*
1013 Function + em4305_write void LFRFIDEM4305*
1014 Function + empty_screen_alloc EmptyScreen*
1015 Function + empty_screen_free void EmptyScreen*
1016 Function + empty_screen_get_view View* EmptyScreen*
2369 Function + manchester_encoder_finish ManchesterEncoderResult ManchesterEncoderState*
2370 Function + manchester_encoder_reset void ManchesterEncoderState*
2371 Function + maxim_crc8 uint8_t const uint8_t*, const uint8_t, const uint8_t
2372 Function - mbedtls_aes_crypt_cbc int mbedtls_aes_context*, int, size_t, unsigned char[16], const unsigned char*, unsigned char*
2373 Function - mbedtls_aes_crypt_cfb128 int mbedtls_aes_context*, int, size_t, size_t*, unsigned char[16], const unsigned char*, unsigned char*
2374 Function - mbedtls_aes_crypt_cfb8 int mbedtls_aes_context*, int, size_t, unsigned char[16], const unsigned char*, unsigned char*
2375 Function - mbedtls_aes_crypt_ctr int mbedtls_aes_context*, size_t, size_t*, unsigned char[16], unsigned char[16], const unsigned char*, unsigned char*
2376 Function - mbedtls_aes_crypt_ecb int mbedtls_aes_context*, int, const unsigned char[16], unsigned char[16]
2377 Function - mbedtls_aes_crypt_ofb int mbedtls_aes_context*, size_t, size_t*, unsigned char[16], const unsigned char*, unsigned char*
2378 Function - mbedtls_aes_crypt_xts int mbedtls_aes_xts_context*, int, size_t, const unsigned char[16], const unsigned char*, unsigned char*
2379 Function - mbedtls_aes_free void mbedtls_aes_context*
2380 Function - mbedtls_aes_init void mbedtls_aes_context*
2381 Function - mbedtls_aes_setkey_dec int mbedtls_aes_context*, const unsigned char*, unsigned int
2382 Function - mbedtls_aes_setkey_enc int mbedtls_aes_context*, const unsigned char*, unsigned int
2383 Function - mbedtls_aes_xts_free void mbedtls_aes_xts_context*
2384 Function - mbedtls_aes_xts_init void mbedtls_aes_xts_context*
2385 Function - mbedtls_aes_xts_setkey_dec int mbedtls_aes_xts_context*, const unsigned char*, unsigned int
2386 Function - mbedtls_aes_xts_setkey_enc int mbedtls_aes_xts_context*, const unsigned char*, unsigned int
2387 Function - mbedtls_des3_crypt_cbc int mbedtls_des3_context*, int, size_t, unsigned char[8], const unsigned char*, unsigned char*
2388 Function - mbedtls_des3_crypt_ecb int mbedtls_des3_context*, const unsigned char[8], unsigned char[8]
2389 Function - mbedtls_des3_free void mbedtls_des3_context*
2407 Function - mbedtls_ecdh_compute_shared int mbedtls_ecp_group*, mbedtls_mpi*, const mbedtls_ecp_point*, const mbedtls_mpi*, int (*)(void*, unsigned char*, size_t), void*
2408 Function - mbedtls_ecdh_free void mbedtls_ecdh_context*
2409 Function - mbedtls_ecdh_gen_public int mbedtls_ecp_group*, mbedtls_mpi*, mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*
2410 Function - mbedtls_ecdh_get_grp_id mbedtls_ecp_group_id mbedtls_ecdh_context*
2411 Function - mbedtls_ecdh_get_params int mbedtls_ecdh_context*, const mbedtls_ecp_keypair*, mbedtls_ecdh_side
2412 Function - mbedtls_ecdh_init void mbedtls_ecdh_context*
2413 Function - mbedtls_ecdh_make_params int mbedtls_ecdh_context*, size_t*, unsigned char*, size_t, int (*)(void*, unsigned char*, size_t), void*
2448 Function - mbedtls_ecp_group_load int mbedtls_ecp_group*, mbedtls_ecp_group_id
2449 Function - mbedtls_ecp_grp_id_list const mbedtls_ecp_group_id*
2450 Function - mbedtls_ecp_is_zero int mbedtls_ecp_point*
2451 Function - mbedtls_ecp_keypair_calc_public int mbedtls_ecp_keypair*, int (*)(void*, unsigned char*, size_t), void*
2452 Function - mbedtls_ecp_keypair_free void mbedtls_ecp_keypair*
2453 Function - mbedtls_ecp_keypair_get_group_id mbedtls_ecp_group_id const mbedtls_ecp_keypair*
2454 Function - mbedtls_ecp_keypair_init void mbedtls_ecp_keypair*
2455 Function - mbedtls_ecp_mul int mbedtls_ecp_group*, mbedtls_ecp_point*, const mbedtls_mpi*, const mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*
2456 Function - mbedtls_ecp_mul_restartable int mbedtls_ecp_group*, mbedtls_ecp_point*, const mbedtls_mpi*, const mbedtls_ecp_point*, int (*)(void*, unsigned char*, size_t), void*, mbedtls_ecp_restart_ctx*
2463 Function - mbedtls_ecp_point_read_string int mbedtls_ecp_point*, int, const char*, const char*
2464 Function - mbedtls_ecp_point_write_binary int const mbedtls_ecp_group*, const mbedtls_ecp_point*, int, size_t*, unsigned char*, size_t
2465 Function - mbedtls_ecp_read_key int mbedtls_ecp_group_id, mbedtls_ecp_keypair*, const unsigned char*, size_t
2466 Function - mbedtls_ecp_set_public_key int mbedtls_ecp_group_id, mbedtls_ecp_keypair*, const mbedtls_ecp_point*
2467 Function - mbedtls_ecp_set_zero int mbedtls_ecp_point*
2468 Function - mbedtls_ecp_tls_read_group int mbedtls_ecp_group*, const unsigned char**, size_t
2469 Function - mbedtls_ecp_tls_read_group_id int mbedtls_ecp_group_id*, const unsigned char**, size_t
2471 Function - mbedtls_ecp_tls_write_group int const mbedtls_ecp_group*, size_t*, unsigned char*, size_t
2472 Function - mbedtls_ecp_tls_write_point int const mbedtls_ecp_group*, const mbedtls_ecp_point*, int, size_t*, unsigned char*, size_t
2473 Function - mbedtls_ecp_write_key int mbedtls_ecp_keypair*, unsigned char*, size_t
2474 Function - mbedtls_ecp_write_key_ext int const mbedtls_ecp_keypair*, size_t*, unsigned char*, size_t
2475 Function - mbedtls_ecp_write_public_key int const mbedtls_ecp_keypair*, int, size_t*, unsigned char*, size_t
2476 Function - mbedtls_internal_aes_decrypt int mbedtls_aes_context*, const unsigned char[16], unsigned char[16]
2477 Function - mbedtls_internal_aes_encrypt int mbedtls_aes_context*, const unsigned char[16], unsigned char[16]
2478 Function - mbedtls_internal_md5_process int mbedtls_md5_context*, const unsigned char[64]
2479 Function - mbedtls_internal_sha1_process int mbedtls_sha1_context*, const unsigned char[64]
2480 Function - mbedtls_internal_sha256_process int mbedtls_sha256_context*, const unsigned char[64]