Skip to content

Commit 53380d6

Browse files
committed
rust: move bindgen whitelist to separate file
1 parent 9476cb3 commit 53380d6

File tree

2 files changed

+132
-110
lines changed

2 files changed

+132
-110
lines changed

scripts/generate-bindings.sh

+128
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
#!/usr/bin/env bash
2+
3+
# ./generate-bindings.sh TARGET SOURCE [CLANG_FLAG [CLANG_FLAG]]
4+
#
5+
# TARGET is a rust file that should be generated
6+
# SOURCE is a c header file
7+
# CLANG_FLAG are flags to pass to libclang (i.e. include directories)
8+
#
9+
# bindgen version can be overridden with the BINDGEN env variable
10+
11+
TARGET=$1; shift
12+
SOURCE=$1; shift
13+
read -ra FLAGS <<< "$*"
14+
15+
BINDGEN=${BINDGEN:-bindgen}
16+
17+
${BINDGEN} \
18+
--output "${TARGET}" \
19+
--use-core \
20+
--with-derive-default \
21+
--ctypes-prefix util::c_types \
22+
--rustified-enum backup_error_t \
23+
--rustified-enum restore_error_t \
24+
--whitelist-function wally_free_string \
25+
--whitelist-function backup_check \
26+
--whitelist-function backup_create \
27+
--whitelist-function mock_memory_factoryreset \
28+
--whitelist-function memory_setup \
29+
--whitelist-function restore_from_directory \
30+
--whitelist-function memory_is_initialized \
31+
--whitelist-function memory_set_initialized \
32+
--whitelist-function memory_is_mnemonic_passphrase_enabled \
33+
--whitelist-function memory_get_attestation_pubkey_and_certificate \
34+
--whitelist-function memory_bootloader_hash \
35+
--whitelist-function memory_get_noise_static_private_key \
36+
--whitelist-function memory_check_noise_remote_static_pubkey \
37+
--whitelist-function memory_add_noise_remote_static_pubkey \
38+
--whitelist-function memory_get_device_name \
39+
--whitelist-function memory_set_device_name \
40+
--whitelist-function memory_set_mnemonic_passphrase_enabled \
41+
--whitelist-function memory_set_seed_birthdate \
42+
--whitelist-function memory_get_seed_birthdate \
43+
--whitelist-var MEMORY_DEVICE_NAME_MAX_LEN \
44+
--whitelist-function securechip_attestation_sign \
45+
--whitelist-function securechip_monotonic_increments_remaining \
46+
--whitelist-function securechip_u2f_counter_set \
47+
--whitelist-function securechip_model \
48+
--rustified-enum securechip_model_t \
49+
--whitelist-var KEYSTORE_MAX_SEED_LENGTH \
50+
--whitelist-function keystore_is_locked \
51+
--whitelist-function keystore_unlock \
52+
--whitelist-function keystore_unlock_bip39 \
53+
--whitelist-function keystore_lock \
54+
--whitelist-function keystore_create_and_store_seed \
55+
--whitelist-function keystore_get_bip39_mnemonic \
56+
--whitelist-function keystore_get_bip39_word \
57+
--whitelist-function keystore_get_ed25519_seed \
58+
--whitelist-function keystore_secp256k1_pubkey_uncompressed \
59+
--whitelist-function keystore_secp256k1_nonce_commit \
60+
--whitelist-function keystore_secp256k1_sign \
61+
--whitelist-function keystore_bip39_mnemonic_to_seed \
62+
--whitelist-function keystore_get_root_fingerprint \
63+
--whitelist-function mock_state \
64+
--whitelist-var EC_PUBLIC_KEY_UNCOMPRESSED_LEN \
65+
--whitelist-var EC_PUBLIC_KEY_LEN \
66+
--whitelist-function keystore_encode_xpub_at_keypath \
67+
--whitelist-function keystore_encrypt_and_store_seed \
68+
--rustified-enum xpub_type_t \
69+
--whitelist-var XPUB_ENCODED_LEN \
70+
--whitelist-function lock_animation_start \
71+
--whitelist-function lock_animation_stop \
72+
--whitelist-function delay_us \
73+
--rustified-enum keystore_error_t \
74+
--rustified-enum keystore_secp256k1_pubkey_format \
75+
--whitelist-function util_format_datetime \
76+
--whitelist-function util_version_short \
77+
--whitelist-function delay_ms \
78+
--whitelist-function UG_PutString \
79+
--whitelist-function UG_FontSelect \
80+
--whitelist-function UG_ClearBuffer \
81+
--whitelist-function UG_SendBuffer \
82+
--whitelist-function screen_print_debug \
83+
--whitelist-function ui_screen_stack_push \
84+
--whitelist-function ui_screen_stack_pop \
85+
--whitelist-function ui_screen_stack_pop_all \
86+
--whitelist-function screen_process \
87+
--whitelist-function label_create \
88+
--whitelist-function confirm_create \
89+
--whitelist-function status_create \
90+
--whitelist-function sdcard_create \
91+
--whitelist-function menu_create \
92+
--whitelist-function trinary_choice_create \
93+
--rustified-enum trinary_choice_t \
94+
--whitelist-function wally_sha256 \
95+
--whitelist-function random_32_bytes_mcu \
96+
--whitelist-type component_t \
97+
--whitelist-type confirm_params_t \
98+
--whitelist-type commander_error_t \
99+
--rustified-enum commander_error_t \
100+
--whitelist-function commander \
101+
--whitelist-function commander_states_can_call \
102+
--whitelist-function commander_states_clear_force_next \
103+
--whitelist-var ".*_tag" \
104+
--whitelist-var MAX_LABEL_SIZE \
105+
--whitelist-var font_font_a_9X9 \
106+
--whitelist-var font_font_a_11X10 \
107+
--whitelist-var font_monogram_5X9 \
108+
--whitelist-var font_password_11X12 \
109+
--whitelist-var WALLY_OK \
110+
--whitelist-type trinary_input_string_params_t \
111+
--whitelist-var INPUT_STRING_MAX_SIZE \
112+
--whitelist-function trinary_input_string_create \
113+
--whitelist-function trinary_input_string_set_input \
114+
--whitelist-function confirm_transaction_address_create \
115+
--whitelist-function confirm_transaction_fee_create \
116+
--whitelist-function reset_reset \
117+
--whitelist-function sd_card_inserted \
118+
--whitelist-function sd_format \
119+
--whitelist-var BIP39_WORDLIST_LEN \
120+
--whitelist-function app_eth_params_get \
121+
--whitelist-function app_eth_erc20_params_get \
122+
--whitelist-function app_eth_sighash \
123+
--whitelist-function app_btc_address_simple \
124+
--whitelist-function reboot \
125+
"${SOURCE}" \
126+
-- \
127+
-DPB_NO_PACKED_STRUCTS=1 -DPB_FIELD_16BIT=1 -fshort-enums \
128+
"${FLAGS[@]}"

src/CMakeLists.txt

+4-110
Original file line numberDiff line numberDiff line change
@@ -297,116 +297,10 @@ add_custom_target(rust-bindgen
297297
COMMAND
298298
${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/rust
299299
COMMAND
300-
${BINDGEN}
301-
--output ${CMAKE_CURRENT_BINARY_DIR}/rust/bindings.rs.out
302-
--use-core
303-
--with-derive-default
304-
--ctypes-prefix util::c_types
305-
--rustified-enum backup_error_t
306-
--rustified-enum restore_error_t
307-
--whitelist-function wally_free_string
308-
--whitelist-function backup_check
309-
--whitelist-function backup_create
310-
--whitelist-function mock_memory_factoryreset
311-
--whitelist-function memory_setup
312-
--whitelist-function restore_from_directory
313-
--whitelist-function memory_is_initialized
314-
--whitelist-function memory_set_initialized
315-
--whitelist-function memory_is_mnemonic_passphrase_enabled
316-
--whitelist-function memory_get_attestation_pubkey_and_certificate
317-
--whitelist-function memory_bootloader_hash
318-
--whitelist-function memory_get_noise_static_private_key
319-
--whitelist-function memory_check_noise_remote_static_pubkey
320-
--whitelist-function memory_add_noise_remote_static_pubkey
321-
--whitelist-function memory_get_device_name
322-
--whitelist-function memory_set_device_name
323-
--whitelist-function memory_set_mnemonic_passphrase_enabled
324-
--whitelist-function memory_set_seed_birthdate
325-
--whitelist-function memory_get_seed_birthdate
326-
--whitelist-var MEMORY_DEVICE_NAME_MAX_LEN
327-
--whitelist-function securechip_attestation_sign
328-
--whitelist-function securechip_monotonic_increments_remaining
329-
--whitelist-function securechip_u2f_counter_set
330-
--whitelist-function securechip_model
331-
--rustified-enum securechip_model_t
332-
--whitelist-var KEYSTORE_MAX_SEED_LENGTH
333-
--whitelist-function keystore_is_locked
334-
--whitelist-function keystore_unlock
335-
--whitelist-function keystore_unlock_bip39
336-
--whitelist-function keystore_lock
337-
--whitelist-function keystore_create_and_store_seed
338-
--whitelist-function keystore_get_bip39_mnemonic
339-
--whitelist-function keystore_get_bip39_word
340-
--whitelist-function keystore_get_ed25519_seed
341-
--whitelist-function keystore_secp256k1_pubkey_uncompressed
342-
--whitelist-function keystore_secp256k1_nonce_commit
343-
--whitelist-function keystore_secp256k1_sign
344-
--whitelist-function keystore_bip39_mnemonic_to_seed
345-
--whitelist-function keystore_get_root_fingerprint
346-
--whitelist-function mock_state
347-
--whitelist-var EC_PUBLIC_KEY_UNCOMPRESSED_LEN
348-
--whitelist-var EC_PUBLIC_KEY_LEN
349-
--whitelist-function keystore_encode_xpub_at_keypath
350-
--whitelist-function keystore_encrypt_and_store_seed
351-
--rustified-enum xpub_type_t
352-
--whitelist-var XPUB_ENCODED_LEN
353-
--whitelist-function lock_animation_start
354-
--whitelist-function lock_animation_stop
355-
--whitelist-function delay_us
356-
--rustified-enum keystore_error_t
357-
--rustified-enum keystore_secp256k1_pubkey_format
358-
--whitelist-function util_format_datetime
359-
--whitelist-function util_version_short
360-
--whitelist-function delay_ms
361-
--whitelist-function UG_PutString
362-
--whitelist-function UG_FontSelect
363-
--whitelist-function UG_ClearBuffer
364-
--whitelist-function UG_SendBuffer
365-
--whitelist-function screen_print_debug
366-
--whitelist-function ui_screen_stack_push
367-
--whitelist-function ui_screen_stack_pop
368-
--whitelist-function ui_screen_stack_pop_all
369-
--whitelist-function screen_process
370-
--whitelist-function label_create
371-
--whitelist-function confirm_create
372-
--whitelist-function status_create
373-
--whitelist-function sdcard_create
374-
--whitelist-function menu_create
375-
--whitelist-function trinary_choice_create
376-
--rustified-enum trinary_choice_t
377-
--whitelist-function wally_sha256
378-
--whitelist-function random_32_bytes_mcu
379-
--whitelist-type component_t
380-
--whitelist-type confirm_params_t
381-
--whitelist-type commander_error_t
382-
--rustified-enum commander_error_t
383-
--whitelist-function commander
384-
--whitelist-function commander_states_can_call
385-
--whitelist-function commander_states_clear_force_next
386-
--whitelist-var ".*_tag"
387-
--whitelist-var MAX_LABEL_SIZE
388-
--whitelist-var font_font_a_9X9
389-
--whitelist-var font_font_a_11X10
390-
--whitelist-var font_monogram_5X9
391-
--whitelist-var font_password_11X12
392-
--whitelist-var WALLY_OK
393-
--whitelist-type trinary_input_string_params_t
394-
--whitelist-var INPUT_STRING_MAX_SIZE
395-
--whitelist-function trinary_input_string_create
396-
--whitelist-function trinary_input_string_set_input
397-
--whitelist-function confirm_transaction_address_create
398-
--whitelist-function confirm_transaction_fee_create
399-
--whitelist-function reset_reset
400-
--whitelist-function sd_card_inserted
401-
--whitelist-function sd_format
402-
--whitelist-var BIP39_WORDLIST_LEN
403-
--whitelist-function app_eth_params_get
404-
--whitelist-function app_eth_erc20_params_get
405-
--whitelist-function app_eth_sighash
406-
--whitelist-function app_btc_address_simple
407-
--whitelist-function reboot
408-
${CMAKE_CURRENT_SOURCE_DIR}/rust/bitbox02-sys/wrapper.h --
409-
-DPB_NO_PACKED_STRUCTS=1 -DPB_FIELD_16BIT=1 -fshort-enums ${RUST_BINDGEN_FLAGS} ${RUST_INCLUDES}
300+
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate-bindings.sh
301+
${CMAKE_CURRENT_BINARY_DIR}/rust/bindings.rs.out
302+
${CMAKE_CURRENT_SOURCE_DIR}/rust/bitbox02-sys/wrapper.h
303+
${RUST_BINDGEN_FLAGS} ${RUST_INCLUDES}
410304
COMMAND
411305
${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/rust/bindings.rs.out ${CMAKE_CURRENT_BINARY_DIR}/rust/bindings.rs
412306
)

0 commit comments

Comments
 (0)