gabriel / muse public
feat patch crypto task/hd-path-domain-first #1 / 1
gabriel · 163 days ago · Apr 15, 2026 · Diff

feat(crypto): Phase 0 HD wallet — domain-first 6-level Ed25519 key derivation

Implements BIP39 + SLIP-0010 HD key derivation with a Muse-specific path structure designed from first principles.

Path: m / 1075233755' / domain' / entity_type' / entity_id' / role' / index'

Purpose 1075233755 = sha256(b'muse')[:4] & 0x7FFFFFFF — reproducible, not arbitrary.

Domains are first-class: identity(0), payments(1), code(2), music(3), midi(4), prose(5), blockchain(6). New domains plug in without schema changes.

Domain-scoped agent delegation: derive_agent_sub_seed(seed, domain, agent_id) gives an agent cryptographically bounded capability — a music agent physically cannot derive identity or code keys. Principle of least privilege enforced by SLIP-0010 hardened derivation, not policy.

All 5 BIP39 strengths (128/160/192/224/256 bits) and all 10 functional BIP39 languages supported. Official test vectors verified against both the Trezor BIP39 suite and the SLIP-0010 spec.

275 tests: unit, integration, end-to-end, stress, data integrity, security, performance, and docstring coverage across all three modules.

sha256:8866c5358e96038ac854071ad5ae40d7bdab3026b18a7f33234f3e9afe6d8e98 sha
+400 symbols
sha256:acc0edd4ba0815fa915fbe9c91a32a6a1205f60ed3352646d56ce892d92d03f1 snapshot
+400
symbols added
0
dead code introduced
Semantic Changes 400 symbols
~ muse/core/bip39.py .py 23 symbols added
+ Bip39Error class class Bip39Error L209–229
+ Bip39Strength variable variable Bip39Strength L155–155
+ FUNCTIONAL_LANGUAGES function variable FUNCTIONAL_LANGUAGES L180–183
+ STRENGTH_HIGH variable variable STRENGTH_HIGH L149–149
+ STRENGTH_LOW variable variable STRENGTH_LOW L143–143
+ STRENGTH_MEDIUM variable variable STRENGTH_MEDIUM L146–146
+ STRENGTH_PARANOID variable variable STRENGTH_PARANOID L152–152
+ STRENGTH_STANDARD variable variable STRENGTH_STANDARD L140–140
+ SUPPORTED_LANGUAGES variable variable SUPPORTED_LANGUAGES L175–175
+ _LANG_AUTO variable variable _LANG_AUTO L186–186
+ _MNEMONIC_CACHE variable variable _MNEMONIC_CACHE L189–189
+ _WORDS_FOR_STRENGTH variable variable _WORDS_FOR_STRENGTH L158–164
+ __all__ variable variable __all__ L118–133
+ _get_mnemonic function function _get_mnemonic L192–201
+ detect_language function function detect_language L410–448
+ generate_mnemonic function function generate_mnemonic L237–292
+ Literal import import Literal L114–114
+ _Mnemonic import import _Mnemonic L116–116
+ annotations import import annotations L111–111
+ unicodedata import import unicodedata L113–113
+ mnemonic_to_seed function function mnemonic_to_seed L345–407
+ validate_mnemonic function function validate_mnemonic L295–342
+ word_count function function word_count L451–484
~ muse/core/hdkeys.py .py 38 symbols added
+ DOMAIN_BLOCKCHAIN variable variable DOMAIN_BLOCKCHAIN L262–262
+ DOMAIN_CODE variable variable DOMAIN_CODE L248–248
+ DOMAIN_IDENTITY variable variable DOMAIN_IDENTITY L242–242
+ DOMAIN_MIDI variable variable DOMAIN_MIDI L254–254
+ DOMAIN_MUSIC variable variable DOMAIN_MUSIC L251–251
+ DOMAIN_PAYMENTS variable variable DOMAIN_PAYMENTS L245–245
+ DOMAIN_PROSE variable variable DOMAIN_PROSE L257–257
+ ENTITY_AGENT variable variable ENTITY_AGENT L272–272
+ ENTITY_HUMAN variable variable ENTITY_HUMAN L269–269
+ ENTITY_ORG variable variable ENTITY_ORG L278–278
+ ENTITY_SERVICE variable variable ENTITY_SERVICE L275–275
+ HdKeyError class class HdKeyError L304–328
+ ROLE_ATTEST variable variable ROLE_ATTEST L294–294
+ ROLE_DELEGATE variable variable ROLE_DELEGATE L297–297
+ ROLE_PROVISION variable variable ROLE_PROVISION L291–291
+ ROLE_RECEIVE variable variable ROLE_RECEIVE L288–288
+ ROLE_SIGN variable variable ROLE_SIGN L285–285
+ __all__ variable variable __all__ L202–234
+ _validate_entity_type function function _validate_entity_type L745–750
+ _validate_non_negative function function _validate_non_negative L740–742
+ _validate_role function function _validate_role L753–758
+ derive_agent_sub_seed function function derive_agent_sub_seed L569–650
+ derive_domain_key function function derive_domain_key L516–566
+ derive_identity_key function function derive_identity_key L459–513
+ derive_key function function derive_key L399–456
+ dk_to_ed25519 function function dk_to_ed25519 L658–687
+ DerivedKey import import DerivedKey L188–188
+ MUSE_PURPOSE import import MUSE_PURPOSE L188–188
+ Slip010Error import import Slip010Error L188–188
+ TYPE_CHECKING import import TYPE_CHECKING L186–186
+ annotations import import annotations L184–184
+ child_key import import child_key L188–188
+ derive_path import import derive_path L188–188
+ hardened import import hardened L188–188
+ master_key import import master_key L188–188
+ to_ed25519_private_key import import to_ed25519_private_key L188–188
+ muse_path function function muse_path L336–391
+ public_bytes_from_seed function function public_bytes_from_seed L690–732
~ muse/core/slip010.py .py 21 symbols added
+ DerivedKey class class DerivedKey L159–197
+ __repr__ method method __repr__ L192–197
+ HARDENED_OFFSET variable variable HARDENED_OFFSET L116–116
+ MUSE_PURPOSE variable variable MUSE_PURPOSE L121–121
+ Slip010Error class class Slip010Error L131–150
+ _COMPONENT_RE variable variable _COMPONENT_RE L318–318
+ _PATH_RE variable variable _PATH_RE L317–317
+ _SLIP010_ED25519_KEY variable variable _SLIP010_ED25519_KEY L124–124
+ __all__ variable variable __all__ L98–109
+ child_key function function child_key L255–310
+ derive_path function function derive_path L363–415
+ hardened function function hardened L466–495
+ TYPE_CHECKING import import TYPE_CHECKING L93–93
+ annotations import import annotations L87–87
+ dataclass class import dataclass L92–92
+ hashlib import import hashlib L90–90
+ hmac import import hmac L89–89
+ re import import re L91–91
+ master_key function function master_key L205–252
+ parse_path function function parse_path L321–360
+ to_ed25519_private_key function function to_ed25519_private_key L423–458
~ tests/test_core_bip39.py .py 88 symbols added
+ TestDetectLanguage class class TestDetectLanguage L293–305
+ test_detect_all_languages method method test_detect_all_languages L295–297
+ test_empty_raises method method test_empty_raises L303–305
+ test_unknown_words_raises method method test_unknown_words_raises L299–301
+ TestDocstrings class class TestDocstrings L506–529
+ test_module_has_docstring method method test_module_has_docstring L514–516
+ test_public_symbol_has_docstring method method test_public_symbol_has_docstring L526–529
+ TestEntropyQuality class class TestEntropyQuality L385–411
+ test_no_duplicates_in_1000_standard_mnemonics method method test_no_duplicates_in_1000_standard_mnemonics L392–397
+ test_no_duplicates_in_100_paranoid_mnemonics method method test_no_duplicates_in_100_paranoid_mnemonics L399–404
+ test_seeds_differ_across_distinct_mnemonics method method test_seeds_differ_across_distinct_mnemonics L406–411
+ TestGenerateMnemonic class class TestGenerateMnemonic L106–172
+ test_all_strengths_pass_validation method method test_all_strengths_pass_validation L139–143
+ test_default_returns_12_words method method test_default_returns_12_words L119–120
+ test_english_all_lowercase method method test_english_all_lowercase L125–127
+ test_english_single_space_separator method method test_english_single_space_separator L133–134
+ test_functional_languages_detect_correctly method method test_functional_languages_detect_correctly L152–154
+ test_functional_languages_generate_and_validate method method test_functional_languages_generate_and_validate L147–149
+ test_generated_passes_validation method method test_generated_passes_validation L136–137
+ test_invalid_language_raises method method test_invalid_language_raises L161–163
+ test_invalid_strength_100_raises method method test_invalid_strength_100_raises L170–172
+ test_invalid_strength_raises method method test_invalid_strength_raises L166–168
+ test_japanese_uses_ideographic_separator method method test_japanese_uses_ideographic_separator L156–159
+ test_no_leading_trailing_whitespace method method test_no_leading_trailing_whitespace L129–131
+ test_returns_string method method test_returns_string L122–123
+ test_word_count_for_strength method method test_word_count_for_strength L115–117
+ TestMnemonicToSeed class class TestMnemonicToSeed L223–266
+ test_deterministic method method test_deterministic L242–244
+ test_different_passphrase_different_seed method method test_different_passphrase_different_seed L236–240
+ test_empty_passphrase_default method method test_empty_passphrase_default L230–234
+ test_nfkd_normalization_mnemonic method method test_nfkd_normalization_mnemonic L260–266
+ test_nfkd_normalization_passphrase method method test_nfkd_normalization_passphrase L246–258
+ test_returns_64_bytes method method test_returns_64_bytes L224–228
+ TestOfficialVectors class class TestOfficialVectors L331–351
+ test_all_vectors_produce_64_bytes method method test_all_vectors_produce_64_bytes L348–351
+ test_seed_matches_vector method method test_seed_matches_vector L339–346
+ TestPerformance class class TestPerformance L456–498
+ test_detect_language_under_50ms method method test_detect_language_under_50ms L491–498
+ test_generate_mnemonic_under_100ms method method test_generate_mnemonic_under_100ms L465–471
+ test_mnemonic_to_seed_under_500ms method method test_mnemonic_to_seed_under_500ms L482–489
+ test_validate_mnemonic_under_10ms method method test_validate_mnemonic_under_10ms L473–480
+ TestRoundTrip class class TestRoundTrip L359–377
+ test_generate_validate_seed_pipeline method method test_generate_validate_seed_pipeline L360–365
+ test_paranoid_generate_validate_seed_pipeline method method test_paranoid_generate_validate_seed_pipeline L367–371
+ test_seed_is_deterministic_across_calls method method test_seed_is_deterministic_across_calls L373–377
+ TestSecurity class class TestSecurity L419–448
+ test_mnemonic_to_seed_does_not_raise_on_invalid_mnemonic method method test_mnemonic_to_seed_does_not_raise_on_invalid_mnemonic L439–448
+ test_passphrase_isolation method method test_passphrase_isolation L420–425
+ test_single_word_change_completely_changes_seed method method test_single_word_change_completely_changes_seed L427–437
+ TestSupportedLanguages class class TestSupportedLanguages L308–323
+ test_at_least_10_languages method method test_at_least_10_languages L322–323
+ test_includes_english method method test_includes_english L313–314
+ test_includes_japanese method method test_includes_japanese L316–317
+ test_includes_korean method method test_includes_korean L319–320
+ test_is_list_of_strings method method test_is_list_of_strings L309–311
+ TestValidateMnemonic class class TestValidateMnemonic L180–215
+ test_bad_checksum_returns_false method method test_bad_checksum_returns_false L192–194
+ test_empty_string_returns_false method method test_empty_string_returns_false L199–200
+ test_known_valid_12_word method method test_known_valid_12_word L181–183
+ test_known_valid_24_word method method test_known_valid_24_word L185–190
+ test_returns_bool_not_truthy method method test_returns_bool_not_truthy L210–215
+ test_strips_and_normalizes_whitespace method method test_strips_and_normalizes_whitespace L205–208
+ test_too_few_words_returns_false method method test_too_few_words_returns_false L202–203
+ test_unknown_word_returns_false method method test_unknown_word_returns_false L196–197
+ TestWordCount class class TestWordCount L274–290
+ test_all_strengths method method test_all_strengths L282–283
+ test_default method method test_default L285–286
+ test_invalid_raises method method test_invalid_raises L288–290
+ _BIP39_VECTORS variable variable _BIP39_VECTORS L51–89
+ _VECTORS variable variable _VECTORS L98–98
+ _Vector class class _Vector L92–95
+ Bip39Error import import Bip39Error L29–29
+ FUNCTIONAL_LANGUAGES function import FUNCTIONAL_LANGUAGES L29–29
+ NamedTuple import import NamedTuple L25–25
+ STRENGTH_HIGH import import STRENGTH_HIGH L29–29
+ STRENGTH_LOW import import STRENGTH_LOW L29–29
+ STRENGTH_MEDIUM import import STRENGTH_MEDIUM L29–29
+ STRENGTH_PARANOID import import STRENGTH_PARANOID L29–29
+ STRENGTH_STANDARD import import STRENGTH_STANDARD L29–29
+ SUPPORTED_LANGUAGES import import SUPPORTED_LANGUAGES L29–29
+ annotations import import annotations L22–22
+ detect_language import import detect_language L29–29
+ generate_mnemonic import import generate_mnemonic L29–29
+ mnemonic_to_seed import import mnemonic_to_seed L29–29
+ pytest import import pytest L27–27
+ unicodedata import import unicodedata L24–24
+ validate_mnemonic import import validate_mnemonic L29–29
+ word_count import import word_count L29–29
~ tests/test_core_hdkeys.py .py 123 symbols added
+ TestConstants class class TestConstants L73–107
+ test_all_domains_distinct method method test_all_domains_distinct L96–99
+ test_all_entities_distinct method method test_all_entities_distinct L101–103
+ test_all_roles_distinct method method test_all_roles_distinct L105–107
+ test_domain_values method method test_domain_values L74–81
+ test_entity_values method method test_entity_values L83–87
+ test_role_values method method test_role_values L89–94
+ TestDeriveAgentSubSeed class class TestDeriveAgentSubSeed L258–303
+ test_agent_can_derive_identity_key_from_sub_seed method method test_agent_can_derive_identity_key_from_sub_seed L292–295
+ test_deterministic method method test_deterministic L273–276
+ test_different_agent_ids_produce_different_sub_seeds method method test_different_agent_ids_produce_different_sub_seeds L268–271
+ test_different_domains_produce_different_sub_seeds method method test_different_domains_produce_different_sub_seeds L263–266
+ test_differs_from_master_seed method method test_differs_from_master_seed L278–280
+ test_negative_agent_id_raises method method test_negative_agent_id_raises L301–303
+ test_negative_domain_raises method method test_negative_domain_raises L297–299
+ test_returns_64_bytes method method test_returns_64_bytes L259–261
+ test_sub_seed_composition method method test_sub_seed_composition L282–290
+ TestDeriveDomainKey class class TestDeriveDomainKey L235–250
+ test_all_named_domains method method test_all_named_domains L240–242
+ test_code_differs_from_music method method test_code_differs_from_music L244–245
+ test_role_receive_differs_from_sign method method test_role_receive_differs_from_sign L247–250
+ TestDeriveIdentityKey class class TestDeriveIdentityKey L209–227
+ test_defaults_to_domain_identity method method test_defaults_to_domain_identity L210–213
+ test_entity_type_agent method method test_entity_type_agent L215–218
+ test_negative_entity_id_raises method method test_negative_entity_id_raises L225–227
+ test_rotation_index method method test_rotation_index L220–223
+ TestDeriveKey class class TestDeriveKey L174–201
+ test_chain_code_32 method method test_chain_code_32 L181–182
+ test_deterministic method method test_deterministic L198–201
+ test_invalid_role_raises method method test_invalid_role_raises L194–196
+ test_matches_direct_slip010_derivation method method test_matches_direct_slip010_derivation L184–188
+ test_negative_domain_raises method method test_negative_domain_raises L190–192
+ test_private_bytes_32 method method test_private_bytes_32 L178–179
+ test_returns_derived_key method method test_returns_derived_key L175–176
+ TestDocstrings class class TestDocstrings L621–641
+ test_module_has_docstring method method test_module_has_docstring L624–626
+ test_public_symbol_has_docstring method method test_public_symbol_has_docstring L638–641
+ TestEndToEnd class class TestEndToEnd L475–547
+ test_agent_spawn_flow method method test_agent_spawn_flow L492–509
+ test_commit_signing_flow method method test_commit_signing_flow L526–537
+ test_key_rotation_flow method method test_key_rotation_flow L511–524
+ test_musehub_registration_flow method method test_musehub_registration_flow L482–490
+ test_music_project_signing_flow method method test_music_project_signing_flow L539–547
+ TestFullPipeline class class TestFullPipeline L345–373
+ test_five_agents_distinct_identity_keys method method test_five_agents_distinct_identity_keys L367–373
+ test_human_and_agent_identity_keys_differ method method test_human_and_agent_identity_keys_differ L361–365
+ test_mnemonic_to_signature method method test_mnemonic_to_signature L346–350
+ test_wrong_key_cannot_verify method method test_wrong_key_cannot_verify L352–359
+ TestKeyMaterialisation class class TestKeyMaterialisation L311–337
+ test_different_domains_different_public_keys method method test_different_domains_different_public_keys L334–337
+ test_dk_to_ed25519_returns_signing_key method method test_dk_to_ed25519_returns_signing_key L312–315
+ test_public_bytes_32 method method test_public_bytes_32 L323–324
+ test_public_bytes_defaults_to_identity_domain method method test_public_bytes_defaults_to_identity_domain L329–332
+ test_public_bytes_deterministic method method test_public_bytes_deterministic L326–327
+ test_sign_and_verify method method test_sign_and_verify L317–321
+ TestMusePath class class TestMusePath L115–166
+ test_all_levels_hardened method method test_all_levels_hardened L137–140
+ test_all_six_levels_present method method test_all_six_levels_present L131–135
+ test_code_domain_rotation method method test_code_domain_rotation L123–125
+ test_default_identity_path method method test_default_identity_path L116–117
+ test_invalid_entity_type_raises method method test_invalid_entity_type_raises L154–156
+ test_invalid_role_raises method method test_invalid_role_raises L158–160
+ test_music_agent_path method method test_music_agent_path L119–121
+ test_negative_domain_raises method method test_negative_domain_raises L142–144
+ test_negative_entity_id_raises method method test_negative_entity_id_raises L146–148
+ test_negative_index_raises method method test_negative_index_raises L150–152
+ test_payments_receive_role method method test_payments_receive_role L127–129
+ test_purpose_embedded_in_path method method test_purpose_embedded_in_path L165–166
+ test_returns_string method method test_returns_string L162–163
+ TestPerformance class class TestPerformance L555–613
+ test_140_key_matrix_under_100ms method method test_140_key_matrix_under_100ms L599–613
+ test_derive_agent_sub_seed_under_5ms method method test_derive_agent_sub_seed_under_5ms L581–588
+ test_derive_domain_key_under_5ms method method test_derive_domain_key_under_5ms L572–579
+ test_derive_identity_key_under_5ms method method test_derive_identity_key_under_5ms L563–570
+ test_public_bytes_from_seed_under_5ms method method test_public_bytes_from_seed_under_5ms L590–597
+ TestSecurity class class TestSecurity L381–414
+ test_all_roles_produce_distinct_keys method method test_all_roles_produce_distinct_keys L402–407
+ test_domain_scoped_sub_seeds_are_independent method method test_domain_scoped_sub_seeds_are_independent L396–400
+ test_identity_key_differs_from_all_domain_keys method method test_identity_key_differs_from_all_domain_keys L382–387
+ test_music_agent_cannot_derive_code_domain_key method method test_music_agent_cannot_derive_code_domain_key L389–394
+ test_sub_seed_does_not_expose_master_seed method method test_sub_seed_does_not_expose_master_seed L409–414
+ TestStress class class TestStress L422–467
+ test_100_domain_keys_all_unique method method test_100_domain_keys_all_unique L423–429
+ test_100_entity_ids_all_unique method method test_100_entity_ids_all_unique L431–436
+ test_100_rotation_indices_all_unique method method test_100_rotation_indices_all_unique L438–443
+ test_50_agent_sub_seeds_all_unique_per_domain method method test_50_agent_sub_seeds_all_unique_per_domain L445–451
+ test_all_7_domains_x_4_entities_x_5_roles_unique method method test_all_7_domains_x_4_entities_x_5_roles_unique L453–467
+ _TEST_MNEMONIC variable variable _TEST_MNEMONIC L52–55
+ DOMAIN_BLOCKCHAIN import import DOMAIN_BLOCKCHAIN L17–17
+ DOMAIN_CODE import import DOMAIN_CODE L17–17
+ DOMAIN_IDENTITY import import DOMAIN_IDENTITY L17–17
+ DOMAIN_MIDI import import DOMAIN_MIDI L17–17
+ DOMAIN_MUSIC import import DOMAIN_MUSIC L17–17
+ DOMAIN_PAYMENTS import import DOMAIN_PAYMENTS L17–17
+ DOMAIN_PROSE import import DOMAIN_PROSE L17–17
+ DerivedKey import import DerivedKey L43–43
+ ENTITY_AGENT import import ENTITY_AGENT L17–17
+ ENTITY_HUMAN import import ENTITY_HUMAN L17–17
+ ENTITY_ORG import import ENTITY_ORG L17–17
+ ENTITY_SERVICE import import ENTITY_SERVICE L17–17
+ HdKeyError import import HdKeyError L17–17
+ MUSE_PURPOSE import import MUSE_PURPOSE L43–43
+ ROLE_ATTEST import import ROLE_ATTEST L17–17
+ ROLE_DELEGATE import import ROLE_DELEGATE L17–17
+ ROLE_PROVISION import import ROLE_PROVISION L17–17
+ ROLE_RECEIVE import import ROLE_RECEIVE L17–17
+ ROLE_SIGN import import ROLE_SIGN L17–17
+ annotations import import annotations L12–12
+ child_key import import child_key L43–43
+ derive_agent_sub_seed import import derive_agent_sub_seed L17–17
+ derive_domain_key import import derive_domain_key L17–17
+ derive_identity_key import import derive_identity_key L17–17
+ derive_key import import derive_key L17–17
+ derive_path import import derive_path L43–43
+ dk_to_ed25519 import import dk_to_ed25519 L17–17
+ hardened import import hardened L43–43
+ master_key import import master_key L43–43
+ mnemonic_to_seed import import mnemonic_to_seed L16–16
+ muse_path import import muse_path L17–17
+ public_bytes_from_seed import import public_bytes_from_seed L17–17
+ pytest import import pytest L14–14
+ raw_seed function function raw_seed L64–65
+ seed function function seed L59–60
~ tests/test_core_slip010.py .py 107 symbols added
+ TestChildKey class class TestChildKey L313–350
+ parent method method parent L315–316
+ test_child_chain_code_length method method test_child_chain_code_length L343–345
+ test_child_private_bytes_length method method test_child_private_bytes_length L339–341
+ test_deterministic method method test_deterministic L347–350
+ test_different_indices_produce_different_children method method test_different_indices_produce_different_children L334–337
+ test_hardened_index_succeeds method method test_hardened_index_succeeds L318–320
+ test_returns_different_key_than_parent method method test_returns_different_key_than_parent L330–332
+ test_unhardened_index_raises method method test_unhardened_index_raises L322–324
+ test_unhardened_index_raises_for_all_under_offset method method test_unhardened_index_raises_for_all_under_offset L326–328
+ TestDerivePath class class TestDerivePath L358–385
+ test_four_component_path method method test_four_component_path L365–373
+ test_invalid_path_raises method method test_invalid_path_raises L379–381
+ test_short_seed_raises method method test_short_seed_raises L383–385
+ test_single_component_path method method test_single_component_path L359–363
+ test_unhardened_path_raises method method test_unhardened_path_raises L375–377
+ TestDerivedKey class class TestDerivedKey L154–185
+ test_construction method method test_construction L155–158
+ test_equality method method test_equality L177–180
+ test_frozen method method test_frozen L160–163
+ test_inequality method method test_inequality L182–185
+ test_repr_does_not_leak_private_bytes method method test_repr_does_not_leak_private_bytes L171–175
+ test_repr_redacts_key_material method method test_repr_redacts_key_material L165–169
+ TestDocstrings class class TestDocstrings L681–701
+ test_module_has_docstring method method test_module_has_docstring L684–686
+ test_public_symbol_has_docstring method method test_public_symbol_has_docstring L698–701
+ TestHardened class class TestHardened L193–212
+ test_703 method method test_703 L197–198
+ test_already_hardened_raises method method test_already_hardened_raises L207–209
+ test_max_valid method method test_max_valid L200–201
+ test_negative_raises method method test_negative_raises L203–205
+ test_returns_int method method test_returns_int L211–212
+ test_zero method method test_zero L194–195
+ TestMasterKey class class TestMasterKey L268–305
+ test_15_byte_seed_raises method method test_15_byte_seed_raises L290–292
+ test_16_byte_seed_accepted method method test_16_byte_seed_accepted L294–296
+ test_chain_code_length method method test_chain_code_length L278–280
+ test_deterministic method method test_deterministic L282–284
+ test_different_seeds_produce_different_keys method method test_different_seeds_produce_different_keys L302–305
+ test_empty_seed_raises method method test_empty_seed_raises L298–300
+ test_private_bytes_length method method test_private_bytes_length L274–276
+ test_returns_derived_key method method test_returns_derived_key L269–272
+ test_short_seed_raises method method test_short_seed_raises L286–288
+ TestMusePathPipeline class class TestMusePathPipeline L477–504
+ test_agent_slot_1_msign_key_differs_from_slot_0 method method test_agent_slot_1_msign_key_differs_from_slot_0 L488–495
+ test_human_operator_msign_key method method test_human_operator_msign_key L478–486
+ test_rotation_index_produces_different_key method method test_rotation_index_produces_different_key L497–504
+ TestParsePath class class TestParsePath L220–260
+ test_empty_string_raises method method test_empty_string_raises L250–252
+ test_four_component_muse_path method method test_four_component_muse_path L225–232
+ test_just_m_raises method method test_just_m_raises L254–256
+ test_large_index method method test_large_index L234–236
+ test_missing_m_prefix_raises method method test_missing_m_prefix_raises L246–248
+ test_returns_list_of_ints method method test_returns_list_of_ints L258–260
+ test_single_component method method test_single_component L221–223
+ test_strips_whitespace method method test_strips_whitespace L238–240
+ test_unhardened_component_raises method method test_unhardened_component_raises L242–244
+ TestPerformance class class TestPerformance L615–673
+ test_child_key_single_step_under_1ms method method test_child_key_single_step_under_1ms L632–640
+ test_master_key_under_1ms method method test_master_key_under_1ms L623–630
+ test_sign_and_verify_under_5ms method method test_sign_and_verify_under_5ms L662–673
+ test_six_level_path_under_5ms method method test_six_level_path_under_5ms L642–650
+ test_to_ed25519_private_key_under_2ms method method test_to_ed25519_private_key_under_2ms L652–660
+ TestSecurity class class TestSecurity L512–567
+ test_child_key_independence method method test_child_key_independence L526–534
+ test_hardened_offset_constant method method test_hardened_offset_constant L566–567
+ test_hardened_only_enforced_for_index_1 method method test_hardened_only_enforced_for_index_1 L513–518
+ test_hardened_only_enforced_for_max_unhardened method method test_hardened_only_enforced_for_max_unhardened L520–524
+ test_muse_purpose_constant method method test_muse_purpose_constant L559–564
+ test_parent_key_not_derivable_from_child method method test_parent_key_not_derivable_from_child L536–550
+ test_repr_never_logs_hex_key_material method method test_repr_never_logs_hex_key_material L552–557
+ TestSlip010OfficialVectors class class TestSlip010OfficialVectors L393–423
+ test_all_vectors_produce_32_byte_fields method method test_all_vectors_produce_32_byte_fields L418–423
+ test_vector_matches method method test_vector_matches L402–416
+ TestStress class class TestStress L575–607
+ test_100_sequential_children_all_unique method method test_100_sequential_children_all_unique L590–598
+ test_derive_path_deep_five_levels method method test_derive_path_deep_five_levels L576–580
+ test_large_hardened_index method method test_large_hardened_index L582–588
+ test_repeated_derivation_is_stable method method test_repeated_derivation_is_stable L600–607
+ TestToEd25519PrivateKey class class TestToEd25519PrivateKey L431–469
+ test_deterministic_public_key method method test_deterministic_public_key L456–461
+ test_different_paths_different_public_keys method method test_different_paths_different_public_keys L463–469
+ test_public_key_is_32_bytes method method test_public_key_is_32_bytes L449–454
+ test_returns_signing_key method method test_returns_signing_key L432–438
+ test_sign_and_verify method method test_sign_and_verify L440–447
+ _SEED1 variable variable _SEED1 L60–60
+ _SEED2 variable variable _SEED2 L61–64
+ _SLIP010_VECTORS variable variable _SLIP010_VECTORS L66–130
+ _SlipVector class class _SlipVector L52–56
+ _derive_master_private_key function function _derive_master_private_key L142–146
+ _seed_from_hex function function _seed_from_hex L138–139
+ DerivedKey import import DerivedKey L29–29
+ FrozenInstanceError import import FrozenInstanceError L24–24
+ HARDENED_OFFSET import import HARDENED_OFFSET L29–29
+ MUSE_PURPOSE import import MUSE_PURPOSE L29–29
+ NamedTuple import import NamedTuple L25–25
+ Slip010Error import import Slip010Error L29–29
+ annotations import import annotations L20–20
+ child_key import import child_key L29–29
+ derive_path import import derive_path L29–29
+ hardened import import hardened L29–29
+ hashlib import import hashlib L23–23
+ hmac import import hmac L22–22
+ master_key import import master_key L29–29
+ parse_path import import parse_path L29–29
+ pytest import import pytest L27–27
+ to_ed25519_private_key import import to_ed25519_private_key L29–29
← Older Oldest on task/hd-path-domain-first
All commits
Newer → Latest on task/hd-path-domain-first

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:8866c5358e96038ac854071ad5ae40d7bdab3026b18a7f33234f3e9afe6d8e98 --body "your comment"