MCPcopy
hub / github.com/fccview/jotty / encryptNoteContent

Function encryptNoteContent

app/_server/actions/pgp/index.ts:255–347  ·  view source on GitHub ↗
(
  formData: FormData
)

Source from the content-addressed store, hash-verified

253};
254
255export const encryptNoteContent = async (
256 formData: FormData
257): Promise<Result<{ encryptedContent: string }>> => {
258 try {
259 const user = await getCurrentUser();
260 if (!user?.username) {
261 return { success: false, error: "Not authenticated" };
262 }
263
264 const content = formData.get("content") as string;
265 const useStoredKey = formData.get("useStoredKey") as string;
266 let publicKey = formData.get("publicKey") as string;
267 const signNote = formData.get("signNote") === "true";
268 const useStoredSigningKey = formData.get("useStoredSigningKey") === "true";
269 let signingKey = formData.get("signingKey") as string;
270 const signingPassphrase = formData.get("signingPassphrase") as string;
271 const skipAuditLog = formData.get("skipAuditLog") === "true";
272
273 if (!content) {
274 return { success: false, error: "Content is required" };
275 }
276
277 if (useStoredKey === "true") {
278 const keysDir = await _getEncryptionDir(user.username);
279 publicKey = await serverReadFile(path.join(keysDir, "public.asc"));
280
281 if (!publicKey) {
282 return { success: false, error: "No stored public key found" };
283 }
284 } else if (!publicKey) {
285 return { success: false, error: "Public key is required" };
286 }
287
288 const publicKeyObj = await openpgp.readKey({ armoredKey: publicKey });
289 let signingKeyObj;
290
291 if (signNote) {
292 if (!signingPassphrase) {
293 return { success: false, error: "Signing passphrase is required" };
294 }
295
296 if (useStoredSigningKey) {
297 const keysDir = await _getEncryptionDir(user.username);
298 signingKey = await serverReadFile(path.join(keysDir, "private.asc"));
299
300 if (!signingKey) {
301 return { success: false, error: "No stored private key found for signing" };
302 }
303 } else if (!signingKey) {
304 return { success: false, error: "Private key is required for signing" };
305 }
306
307 try {
308 const privateKey = await openpgp.readPrivateKey({ armoredKey: signingKey });
309 signingKeyObj = await openpgp.decryptKey({
310 privateKey,
311 passphrase: signingPassphrase,
312 });

Callers 3

handleSubmitFunction · 0.90
useNoteEditorFunction · 0.90
pgp.test.tsFile · 0.90

Calls 4

getCurrentUserFunction · 0.90
serverReadFileFunction · 0.90
logAuditFunction · 0.90
_getEncryptionDirFunction · 0.85

Tested by

no test coverage detected