MCPcopy Create free account
hub / github.com/Kilo-Org/cloud / parseKeyedEnvelope

Function parseKeyedEnvelope

packages/encryption/src/keyed-envelope.ts:37–76  ·  view source on GitHub ↗
(
  serialized: string,
  expectedScheme: Scheme
)

Source from the content-addressed store, hash-verified

35}
36
37export function parseKeyedEnvelope<Scheme extends string>(
38 serialized: string,
39 expectedScheme: Scheme
40): KeyedEnvelope<Scheme> {
41 let parsed: unknown;
42 try {
43 parsed = JSON.parse(serialized);
44 } catch (error) {
45 throw new EncryptionFormatError('Invalid keyed envelope: expected serialized JSON', {
46 cause: error,
47 });
48 }
49
50 if (parsed === null || typeof parsed !== 'object') {
51 throw new EncryptionFormatError('Invalid keyed envelope: must be an object');
52 }
53
54 if (!('scheme' in parsed) || parsed.scheme !== expectedScheme) {
55 throw new EncryptionFormatError('Invalid keyed envelope: unsupported scheme');
56 }
57
58 if (!('version' in parsed) || parsed.version !== 1) {
59 throw new EncryptionFormatError('Invalid keyed envelope: unsupported version');
60 }
61
62 if (!('keyId' in parsed) || typeof parsed.keyId !== 'string' || parsed.keyId.length === 0) {
63 throw new EncryptionFormatError('Invalid keyed envelope: missing keyId');
64 }
65
66 if (!('ciphertext' in parsed) || !isEncryptedEnvelope(parsed.ciphertext)) {
67 throw new EncryptionFormatError('Invalid keyed envelope: malformed ciphertext');
68 }
69
70 return {
71 scheme: expectedScheme,
72 version: 1,
73 keyId: parsed.keyId,
74 ciphertext: parsed.ciphertext,
75 };
76}
77
78export function encryptKeyedEnvelope<Scheme extends string>(
79 value: string,

Callers 3

decryptMethod · 0.90
decryptKeyedEnvelopeFunction · 0.85

Calls 1

isEncryptedEnvelopeFunction · 0.85

Tested by

no test coverage detected