EncryptedField
Class: EncryptedField<T>
Defined in: packages/core/src/models/encrypted.model.ts:33
A model field encrypted at rest with the CryptoService
Only the ciphertext is stored (__ciphertext, server-only: __ keys never reach a public output). The value is
JSON-serialised, encrypted with the current symmetric key (AES, with a random IV) and wrapped in a JWT signed with
that key, so tampering is detected; values encrypted before a key rotation still decrypt while the CryptoService
keeps the old key.
class MyModel extends UuidModel {
secret: EncryptedField<{ apiKey: string }>;
}
await model.secret.set({ apiKey: "..." });
await model.save();
const { apiKey } = await model.secret.get();
Webda Behavior
Webda/Encrypted
Type Parameters
T
T = any
Constructors
Constructor
new EncryptedField<
T>():EncryptedField<T>
Returns
EncryptedField<T>
Properties
__ciphertext?
optional__ciphertext?:string
Defined in: packages/core/src/models/encrypted.model.ts:35
Encrypted value (a JWT wrapping the AES ciphertext), never output
Methods
clear()
clear():
void
Defined in: packages/core/src/models/encrypted.model.ts:71
Remove the stored value (does not save the model)
Returns
void
get()
get():
Promise<T>
Defined in: packages/core/src/models/encrypted.model.ts:61
Decrypt the stored value
Returns
Promise<T>
the value, undefined when none is stored
Throws
Error when the ciphertext is invalid (tampered, or encrypted with an unknown key)
isSet()
isSet():
boolean
Defined in: packages/core/src/models/encrypted.model.ts:40
Returns
boolean
true when a value is stored
set()
set(
value):Promise<void>
Defined in: packages/core/src/models/encrypted.model.ts:48
Encrypt and store a value (does not save the model); undefined clears it
Parameters
value
T
value to store, JSON-serialisable
Returns
Promise<void>