Correct a common typo: interchangeable, not "interchangable"
Marco Ricci

Marco Ricci commited on 2026-08-09 17:30:30
Zeige 4 geänderte Dateien mit 20 Einfügungen und 20 Löschungen.


Unfortunately, this typo is also present in one of the public method
names and in one of the documentation files.  The documentation file
gets a redirect, but the code will necessitate an API version bump.
... ...
@@ -345,17 +345,17 @@ specifically marked as such.)
345 345
 ### Added  {#added-in-v0.5}
346 346
 
347 347
   - For the [`Vault`][derivepassphrase.vault.Vault] API, support reporting
348
-    on whether two master passphrases are interchangable with respect to the
349
-    service passphrases they can derive.
348
+    on whether two master passphrases are interchangeable with respect to
349
+    the service passphrases they can derive.
350 350
     This is an artefact of how the master passphrase is converted to the
351 351
     random bit sequence with which the service passphrases are generated.
352
-    See the corresponding [FAQ entry: What are "interchangable passphrases"
353
-    in vault?][INTERCHANGABLE_PASSPHRASES] for details, including the
352
+    See the corresponding [FAQ entry: What are "interchangeable passphrases"
353
+    in vault?][INTERCHEANGABLE_PASSPHRASES] for details, including the
354 354
     practical security (non-)implications.
355 355
 
356 356
     The [`derivepassphrase vault`][CLI_VAULT] command-line interface does
357 357
     not address this in any manner, mostly because the "non-standard"
358
-    interchangable variants of a given master password tend to be ugly to
358
+    interchangeable variants of a given master password tend to be ugly to
359 359
     type in, and because they do not have practical security implications.
360 360
 
361 361
   - For the [`Vault`][derivepassphrase.vault.Vault] API, accept arbitrary
... ...
@@ -876,7 +876,7 @@ specifically marked as such.)
876 876
 [CLI_EXPORT]: reference/derivepassphrase-export.1.md
877 877
 [CLI_EXPORT_VAULT]: reference/derivepassphrase-export-vault.1.md
878 878
 [CLI_VAULT]: reference/derivepassphrase-vault.1.md
879
-[INTERCHANGABLE_PASSPHRASES]: explanation/faq-vault-interchangable-passphrases.md
879
+[INTERCHANGEABLE_PASSPHRASES]: explanation/faq-vault-interchangeable-passphrases.md
880 880
 [REFERENCE]: reference/index.md
881 881
 
882 882
 [BUG_ALLOW_ALL_UNICODE_PASSPHRASES]: wishlist/allow-all-unicode-passphrases.md "Bug entry: “Allow all Unicode text strings as master passphrases”"
... ...
@@ -1,10 +1,10 @@
1 1
 ---
2
-title: What are "interchangable passphrases" in `vault`, and what does that mean in practice?
2
+title: What are "interchangeable passphrases" in `vault`, and what does that mean in practice?
3 3
 ---
4 4
 
5
-# What are "interchangable passphrases" in `vault`, and what does that mean in practice?
5
+# What are "interchangeable passphrases" in `vault`, and what does that mean in practice?
6 6
 
7
-## What are "interchangable passphrases"?
7
+## What are "interchangeable passphrases"?
8 8
 
9 9
 The "vault" derivation scheme internally uses PBKDF2-HMAC-SHA1[^1] to turn
10 10
 the master passphrase[^2] into a pseudo-random bit sequence, which then
... ...
@@ -15,7 +15,7 @@ key is thus subject to the HMAC key mapping procedure.
15 15
 Because the mapping of infinitely many arbitrarily sized keys to 64-byte
16 16
 sized keys cannot be one-to-one, there exist pairs of keys that behave
17 17
 identically when passed into (PBKDF2-)HMAC-SHA1, i.e., the keys (master
18
-passphrases) are "interchangable" from the vault scheme's perspective.
18
+passphrases) are "interchangeable" from the vault scheme's perspective.
19 19
 
20 20
 Fundamentally, this is an issue of *encoding*: the master passphrase is
21 21
 interpreted as an encoding of the HMAC-SHA1 key, and this encoding is not
... ...
@@ -117,15 +117,15 @@ SHA1) is secure against preimage attacks:
117 117
 
118 118
 ## What effect does the HMAC key mapping procedure have on `derivepassphrase`?
119 119
 
120
-`derivepassphrase vault` does not check for interchangable passphrases, and
120
+`derivepassphrase vault` does not check for interchangeable passphrases, and
121 121
 will happily accept any (non-empty) passphrase it is given.
122 122
 The [`derivepassphrase.vault.Vault`][] class does not check for
123
-interchangable passphrases either, and will happily accept any passphrase it
123
+interchangeable passphrases either, and will happily accept any passphrase it
124 124
 is given, even empty ones.
125 125
 
126
-Most interchangable variations of a master passphrase contain binary
126
+Most interchangeable variations of a master passphrase contain binary
127 127
 characters such as NUL, or even arbitrary byte sequences, which may be hard
128 128
 to type in or impossible to express in certain storage formats.  As such, it
129 129
 is unlikely---but otherwise supported---that the user would want to enter
130
-or store a different, interchangable version of their master passphrase in
130
+or store a different, interchangeable version of their master passphrase in
131 131
 the first place.
... ...
@@ -4,13 +4,13 @@ title: Explanation overview
4 4
 
5 5
 * [How to comply with the "altered versions" clause of the
6 6
   license][FAQ_ALTERED_VERSIONS]
7
-* [What are "interchangable passphrases" in `vault`, and what does that mean
8
-  in practice?][FAQ_INTERCHANGABLE_PASSPHRASES]
7
+* [What are "interchangeable passphrases" in `vault`, and what does that mean
8
+  in practice?][FAQ_INTERCHANGEABLE_PASSPHRASES]
9 9
 * [Tradeoffs between a master passphrase and a master SSH
10 10
   key][TRADEOFFS_PASSPHRASE_SSH_KEY]
11 11
 * [Should I use one master SSH key/master passphrase, or many?][MANY_MASTER_SECRETS]
12 12
 
13 13
 [FAQ_ALTERED_VERSIONS]: faq-altered-versions.md
14
-[FAQ_INTERCHANGABLE_PASSPHRASES]: faq-vault-interchangable-passphrases.md
14
+[FAQ_INTERCHANGEABLE_PASSPHRASES]: faq-vault-interchangeable-passphrases.md
15 15
 [TRADEOFFS_PASSPHRASE_SSH_KEY]: tradeoffs-passphrase-ssh-key.md
16 16
 [MANY_MASTER_SECRETS]: many-master-secrets.md
... ...
@@ -602,13 +602,13 @@ class Vault:
602 602
         return bytes(base64.standard_b64encode(signature_blob))
603 603
 
604 604
     @classmethod
605
-    def phrases_are_interchangable(
605
+    def phrases_are_interchangeable(
606 606
         cls,
607 607
         phrase1: Buffer,
608 608
         phrase2: Buffer,
609 609
         /,
610 610
     ) -> bool:
611
-        """Return true if the passphrases are interchangable to Vault.
611
+        """Return true if the passphrases are interchangeable to Vault.
612 612
 
613 613
         Vault internally passes the passphrase as the key to HMAC-SHA1.
614 614
         HMAC requires keys to have a certain fixed length, and therefore
... ...
@@ -659,7 +659,7 @@ class Vault:
659 659
         This is the actual HMAC key this passphrase would be transformed
660 660
         into when used within Vault.
661 661
 
662
-        See [`phrases_are_interchangable`][] for further explanations
662
+        See [`phrases_are_interchangeable`][] for further explanations
663 663
         and warnings about timing attack resistance.
664 664
 
665 665
         Args:
666 666