Skip to content

Commit adccc86

Browse files
author
Greyforge Admin
committed
Mask login tokens with UTF-8 safe slicing
1 parent 7954d02 commit adccc86

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

src/cortex-login/src/utils.rs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ use std::path::Path;
55

66
/// Mask an API key for safe display.
77
pub fn safe_format_key(key: &str) -> String {
8-
if key.len() <= 13 {
8+
let char_count = key.chars().count();
9+
if char_count <= 13 {
910
return "***".to_string();
1011
}
11-
let prefix = &key[..8];
12-
let suffix = &key[key.len() - 5..];
12+
13+
let prefix: String = key.chars().take(8).collect();
14+
let suffix: String = key.chars().skip(char_count - 5).collect();
1315
format!("{prefix}***{suffix}")
1416
}
1517

@@ -46,4 +48,16 @@ mod tests {
4648
let key = "sk-proj-12345";
4749
assert_eq!(safe_format_key(key), "***");
4850
}
51+
52+
#[test]
53+
fn test_safe_format_key_non_ascii_boundary() {
54+
let key = "aaaaaaaéaaaaa";
55+
assert_eq!(safe_format_key(key), "***");
56+
}
57+
58+
#[test]
59+
fn test_safe_format_key_long_non_ascii() {
60+
let key = "sk-proj-ééééééé-token";
61+
assert_eq!(safe_format_key(key), "sk-proj-***token");
62+
}
4963
}

0 commit comments

Comments
 (0)