@skrr-ai/auth-core 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/cjs/aead.d.ts +24 -0
- package/dist/cjs/aead.js +65 -0
- package/dist/cjs/authExpiredDetector.d.ts +65 -0
- package/dist/cjs/authExpiredDetector.js +89 -0
- package/dist/cjs/authHelper.d.ts +51 -0
- package/dist/cjs/authHelper.js +321 -0
- package/dist/cjs/credentialEnvelope.d.ts +85 -0
- package/dist/cjs/credentialEnvelope.js +230 -0
- package/dist/cjs/credentialEnvelopeBridge.d.ts +116 -0
- package/dist/cjs/credentialEnvelopeBridge.js +637 -0
- package/dist/cjs/credentialResolver.d.ts +278 -0
- package/dist/cjs/credentialResolver.js +423 -0
- package/dist/cjs/daemonPair.d.ts +172 -0
- package/dist/cjs/daemonPair.js +495 -0
- package/dist/cjs/daemonScopes.d.ts +74 -0
- package/dist/cjs/daemonScopes.js +84 -0
- package/dist/cjs/deviceIdentityBridge.d.ts +113 -0
- package/dist/cjs/deviceIdentityBridge.js +591 -0
- package/dist/cjs/deviceKey.d.ts +167 -0
- package/dist/cjs/deviceKey.js +332 -0
- package/dist/cjs/fdToken.d.ts +17 -0
- package/dist/cjs/fdToken.js +238 -0
- package/dist/cjs/harnessTrust.d.ts +72 -0
- package/dist/cjs/harnessTrust.js +103 -0
- package/dist/cjs/headers-helper.d.ts +25 -0
- package/dist/cjs/headers-helper.js +323 -0
- package/dist/cjs/index.d.ts +37 -0
- package/dist/cjs/index.js +305 -0
- package/dist/cjs/jwtUtils.d.ts +35 -0
- package/dist/cjs/jwtUtils.js +61 -0
- package/dist/cjs/kek/index.d.ts +89 -0
- package/dist/cjs/kek/index.js +208 -0
- package/dist/cjs/kek/linux.d.ts +92 -0
- package/dist/cjs/kek/linux.js +596 -0
- package/dist/cjs/kek/macos.d.ts +112 -0
- package/dist/cjs/kek/macos.js +599 -0
- package/dist/cjs/kek/types.d.ts +111 -0
- package/dist/cjs/kek/types.js +43 -0
- package/dist/cjs/kek/windows.d.ts +71 -0
- package/dist/cjs/kek/windows.js +350 -0
- package/dist/cjs/kek/zeroize-registry.d.ts +44 -0
- package/dist/cjs/kek/zeroize-registry.js +63 -0
- package/dist/cjs/legacyStatePreflight.d.ts +67 -0
- package/dist/cjs/legacyStatePreflight.js +78 -0
- package/dist/cjs/localIdentity.d.ts +54 -0
- package/dist/cjs/localIdentity.js +57 -0
- package/dist/cjs/loginLocalhost.d.ts +115 -0
- package/dist/cjs/loginLocalhost.js +368 -0
- package/dist/cjs/loginWithLocalhost.d.ts +131 -0
- package/dist/cjs/loginWithLocalhost.js +359 -0
- package/dist/cjs/machineId.d.ts +35 -0
- package/dist/cjs/machineId.js +239 -0
- package/dist/cjs/messages.d.ts +9 -0
- package/dist/cjs/messages.js +44 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/pkce.d.ts +62 -0
- package/dist/cjs/pkce.js +158 -0
- package/dist/cjs/recoveryCode.d.ts +61 -0
- package/dist/cjs/recoveryCode.js +213 -0
- package/dist/cjs/refresh.d.ts +215 -0
- package/dist/cjs/refresh.js +877 -0
- package/dist/cjs/refreshClassification.d.ts +53 -0
- package/dist/cjs/refreshClassification.js +105 -0
- package/dist/cjs/refreshScheduler.d.ts +53 -0
- package/dist/cjs/refreshScheduler.js +332 -0
- package/dist/cjs/runtime.d.ts +149 -0
- package/dist/cjs/runtime.js +136 -0
- package/dist/cjs/spawnEnv.d.ts +76 -0
- package/dist/cjs/spawnEnv.js +153 -0
- package/dist/cjs/ttlParser.d.ts +54 -0
- package/dist/cjs/ttlParser.js +87 -0
- package/dist/cjs/types.d.ts +91 -0
- package/dist/cjs/types.js +26 -0
- package/dist/esm/aead.d.ts +24 -0
- package/dist/esm/aead.js +57 -0
- package/dist/esm/authExpiredDetector.d.ts +65 -0
- package/dist/esm/authExpiredDetector.js +85 -0
- package/dist/esm/authHelper.d.ts +51 -0
- package/dist/esm/authHelper.js +311 -0
- package/dist/esm/credentialEnvelope.d.ts +85 -0
- package/dist/esm/credentialEnvelope.js +213 -0
- package/dist/esm/credentialEnvelopeBridge.d.ts +116 -0
- package/dist/esm/credentialEnvelopeBridge.js +620 -0
- package/dist/esm/credentialResolver.d.ts +278 -0
- package/dist/esm/credentialResolver.js +414 -0
- package/dist/esm/daemonPair.d.ts +172 -0
- package/dist/esm/daemonPair.js +476 -0
- package/dist/esm/daemonScopes.d.ts +74 -0
- package/dist/esm/daemonScopes.js +80 -0
- package/dist/esm/deviceIdentityBridge.d.ts +113 -0
- package/dist/esm/deviceIdentityBridge.js +572 -0
- package/dist/esm/deviceKey.d.ts +167 -0
- package/dist/esm/deviceKey.js +320 -0
- package/dist/esm/fdToken.d.ts +17 -0
- package/dist/esm/fdToken.js +231 -0
- package/dist/esm/harnessTrust.d.ts +72 -0
- package/dist/esm/harnessTrust.js +97 -0
- package/dist/esm/headers-helper.d.ts +25 -0
- package/dist/esm/headers-helper.js +316 -0
- package/dist/esm/index.d.ts +37 -0
- package/dist/esm/index.js +144 -0
- package/dist/esm/jwtUtils.d.ts +35 -0
- package/dist/esm/jwtUtils.js +57 -0
- package/dist/esm/kek/index.d.ts +89 -0
- package/dist/esm/kek/index.js +162 -0
- package/dist/esm/kek/linux.d.ts +92 -0
- package/dist/esm/kek/linux.js +585 -0
- package/dist/esm/kek/macos.d.ts +112 -0
- package/dist/esm/kek/macos.js +586 -0
- package/dist/esm/kek/types.d.ts +111 -0
- package/dist/esm/kek/types.js +39 -0
- package/dist/esm/kek/windows.d.ts +71 -0
- package/dist/esm/kek/windows.js +344 -0
- package/dist/esm/kek/zeroize-registry.d.ts +44 -0
- package/dist/esm/kek/zeroize-registry.js +58 -0
- package/dist/esm/legacyStatePreflight.d.ts +67 -0
- package/dist/esm/legacyStatePreflight.js +71 -0
- package/dist/esm/localIdentity.d.ts +54 -0
- package/dist/esm/localIdentity.js +54 -0
- package/dist/esm/loginLocalhost.d.ts +115 -0
- package/dist/esm/loginLocalhost.js +355 -0
- package/dist/esm/loginWithLocalhost.d.ts +131 -0
- package/dist/esm/loginWithLocalhost.js +353 -0
- package/dist/esm/machineId.d.ts +35 -0
- package/dist/esm/machineId.js +231 -0
- package/dist/esm/messages.d.ts +9 -0
- package/dist/esm/messages.js +40 -0
- package/dist/esm/pkce.d.ts +62 -0
- package/dist/esm/pkce.js +148 -0
- package/dist/esm/recoveryCode.d.ts +61 -0
- package/dist/esm/recoveryCode.js +207 -0
- package/dist/esm/refresh.d.ts +215 -0
- package/dist/esm/refresh.js +863 -0
- package/dist/esm/refreshClassification.d.ts +53 -0
- package/dist/esm/refreshClassification.js +106 -0
- package/dist/esm/refreshScheduler.d.ts +53 -0
- package/dist/esm/refreshScheduler.js +329 -0
- package/dist/esm/runtime.d.ts +149 -0
- package/dist/esm/runtime.js +121 -0
- package/dist/esm/spawnEnv.d.ts +76 -0
- package/dist/esm/spawnEnv.js +149 -0
- package/dist/esm/ttlParser.d.ts +54 -0
- package/dist/esm/ttlParser.js +83 -0
- package/dist/esm/types.d.ts +91 -0
- package/dist/esm/types.js +21 -0
- package/package.json +82 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
type CredEnvelopeState = {
|
|
2
|
+
kind: 'uninit';
|
|
3
|
+
} | {
|
|
4
|
+
kind: 'disabled';
|
|
5
|
+
reason: DisabledReason;
|
|
6
|
+
} | {
|
|
7
|
+
kind: 'active';
|
|
8
|
+
dek: Buffer;
|
|
9
|
+
kekId: string;
|
|
10
|
+
/**
|
|
11
|
+
* Backend-tier identifier captured at init time
|
|
12
|
+
* (e.g. `macos-keychain-shellout`, `in-memory-test`). Snapshotted
|
|
13
|
+
* here so transform-side events can surface the kind without
|
|
14
|
+
* holding a live `kek` reference.
|
|
15
|
+
*/
|
|
16
|
+
kekKind: string | null;
|
|
17
|
+
profile: string;
|
|
18
|
+
};
|
|
19
|
+
type DisabledReason = 'kek_unavailable' | 'init_failed' | 'platform_unsupported' | 'kek_rotated';
|
|
20
|
+
/** @internal Test seam — force-set state, returns previous. */
|
|
21
|
+
export declare function __setStateForTest(next: CredEnvelopeState): CredEnvelopeState;
|
|
22
|
+
/** @internal Test seam — read state for assertions. */
|
|
23
|
+
export declare function __getStateForTest(): CredEnvelopeState;
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the envelope path. Idempotent — second call when state is
|
|
26
|
+
* non-uninit returns immediately.
|
|
27
|
+
*
|
|
28
|
+
* Order:
|
|
29
|
+
* 1. Probe KEK; unavailable → disabled+kek_unavailable.
|
|
30
|
+
* 2. Try to read+unwrap an existing DEK; success → active.
|
|
31
|
+
* 3. Generate fresh DEK, wrap, persist atomically; → active.
|
|
32
|
+
* 4. Any throw → disabled+init_failed; transforms stay passthrough.
|
|
33
|
+
*/
|
|
34
|
+
export declare function initCredEnvelope(profile: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Reset state. With `clearOnDisk` deletes the wrapped DEK file too —
|
|
37
|
+
* used by `oversky logout` / `sky logout`. Zeroes the in-memory DEK
|
|
38
|
+
* before dropping state for forward secrecy on the active credential.
|
|
39
|
+
*/
|
|
40
|
+
export declare function resetCredEnvelope(opts?: {
|
|
41
|
+
profile?: string;
|
|
42
|
+
clearOnDisk?: boolean;
|
|
43
|
+
}): Promise<void>;
|
|
44
|
+
export declare function shutdownCredEnvelope(): void;
|
|
45
|
+
/** @internal Test seam — re-arm `shutdownCredEnvelope` so it can run again. */
|
|
46
|
+
export declare function __resetShutdownGuardForTest(): void;
|
|
47
|
+
/**
|
|
48
|
+
* True iff the envelope path is initialized AND active. Hot-path
|
|
49
|
+
* predicate used by sync transforms; never throws.
|
|
50
|
+
*/
|
|
51
|
+
export declare function isCredEnvelopeActive(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Operator-readable summary of envelope state. Used by `oversky status`
|
|
54
|
+
* and CLI debug commands. Never includes the DEK or any key material.
|
|
55
|
+
*
|
|
56
|
+
* `kekRotated` is true when the most recent init pass detected a wrapped
|
|
57
|
+
* DEK that could not be unwrapped under the currently-available KEK and
|
|
58
|
+
* had to fall back to a fresh enrollment. Operators see this in
|
|
59
|
+
* `oversky status`; clears on the next clean `resetCredEnvelope`.
|
|
60
|
+
*/
|
|
61
|
+
export declare function describeCredEnvelopeState(): {
|
|
62
|
+
kind: CredEnvelopeState['kind'];
|
|
63
|
+
reason?: DisabledReason;
|
|
64
|
+
kekId?: string;
|
|
65
|
+
kekKind?: string | null;
|
|
66
|
+
profile?: string;
|
|
67
|
+
kekRotated?: boolean;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Sync write transform. Returns the wrapped serialized form when active.
|
|
71
|
+
*
|
|
72
|
+
* Behavior when not active:
|
|
73
|
+
* - If `credEnvelopeFailClosed` was set via `configureAuthCore()` (or
|
|
74
|
+
* `OVERSKY_KEK_REQUIRED=1` is set as a back-compat trigger), emits
|
|
75
|
+
* `cred_envelope.wrap.refused` and throws — the caller must not
|
|
76
|
+
* write plaintext.
|
|
77
|
+
* - Otherwise, returns the plaintext (legacy fail-open behavior used
|
|
78
|
+
* by CLI today during dark-ship rollout).
|
|
79
|
+
*
|
|
80
|
+
* Empty-string input is universally passthrough — there is no secret
|
|
81
|
+
* to protect.
|
|
82
|
+
*/
|
|
83
|
+
export declare function maybeEncryptForWrite(plaintext: string): string;
|
|
84
|
+
/**
|
|
85
|
+
* Always-fail-open variant of `maybeEncryptForWrite` for callers that
|
|
86
|
+
* cannot afford to abort their write when the envelope path is inactive
|
|
87
|
+
* (today: device-identity persistence, which writes the private key as
|
|
88
|
+
* plaintext JSON before the L12 KEK ships per-platform). The wire form
|
|
89
|
+
* is identical to `maybeEncryptForWrite` when active (envelope-prefixed)
|
|
90
|
+
* and identical to the input when not.
|
|
91
|
+
*
|
|
92
|
+
* Distinct from `maybeEncryptForWrite` because that helper honors the
|
|
93
|
+
* daemon's `credEnvelopeFailClosed: true` policy — designed for callers
|
|
94
|
+
* that MUST refuse a plaintext write rather than silently degrade.
|
|
95
|
+
*/
|
|
96
|
+
export declare function wrapIfActiveOrPassthrough(plaintext: string): string;
|
|
97
|
+
/**
|
|
98
|
+
* Sync read transform. Three cases:
|
|
99
|
+
* 1. Envelope on disk + path active → decrypt; null on tag mismatch
|
|
100
|
+
* (caller treats null as a forced re-login signal).
|
|
101
|
+
* 2. Envelope on disk + path NOT active → null (rolled-back binary
|
|
102
|
+
* while envelopes are persisted).
|
|
103
|
+
* 3. Legacy plaintext → return as-is; if path is active, set
|
|
104
|
+
* `needsMigration=true` so caller can upgrade in place.
|
|
105
|
+
*/
|
|
106
|
+
export interface ReadTransformResult {
|
|
107
|
+
/** Decoded plaintext, or null on hard failure. */
|
|
108
|
+
plaintext: string | null;
|
|
109
|
+
/** True when the on-disk form was legacy plaintext AND the envelope
|
|
110
|
+
* path is active — caller should re-write to upgrade. */
|
|
111
|
+
needsMigration: boolean;
|
|
112
|
+
}
|
|
113
|
+
export declare function maybeDecryptOnRead(stored: string): ReadTransformResult;
|
|
114
|
+
/** @internal Test seam — wrapped-DEK path resolver. */
|
|
115
|
+
export declare function __wrappedDekFilePathForTest(profile: string): string;
|
|
116
|
+
export {};
|