mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-10-09 15:58:34 +00:00
2215d52b09
* feat: add credential protection guards for enc:v1: placeholders Prevent encrypted credential placeholders from being sent as actual passwords when safeStorage decryption is unavailable (e.g. different device/user profile). Adds guards at terminal connection, cloud sync, and settings boundaries with user-facing warnings and i18n support. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: validate base64 format in encrypted credential detection Only treat values as encrypted placeholders when the content after the enc:v1: prefix is valid base64. Prevents false positives if a real password happens to start with the prefix literal. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: resolve regressions in master-key change flow and credential placeholder detection - Make ensureSyncablePayload non-blocking in changeMasterKey handler so success toast and dialog close always fire after a successful key change, even when the payload contains unresolved enc:v1: placeholders - Add MIN_CIPHERTEXT_BASE64_LENGTH (32) threshold to isEncryptedCredentialPlaceholder to avoid false-positive matches on plaintext credentials that happen to start with enc:v1: (e.g. enc:v1:hello) * fix: clean up chain-progress listener on credential reentry and gate proxy check on auth usage - Unsubscribe onChainProgress before returning in needsCredentialReentry branch to prevent listener leaks across connection attempts - Only block connection for undecryptable proxy password when proxy authentication is actually in use (has a username) * fix: reduce enc:v1 placeholder false positives * fix: require syncable payload before master key rotation --------- Co-authored-by: rorychou <roryechou@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: bincxz <16399091+binaricat@users.noreply.github.com>
13 lines
324 B
TypeScript
13 lines
324 B
TypeScript
import { netcattyBridge } from "./netcattyBridge";
|
|
|
|
export const getCredentialProtectionAvailability = async (): Promise<boolean | null> => {
|
|
const bridge = netcattyBridge.get();
|
|
if (!bridge?.credentialsAvailable) return null;
|
|
|
|
try {
|
|
return await bridge.credentialsAvailable();
|
|
} catch {
|
|
return null;
|
|
}
|
|
};
|