( formData: FormData )
| 253 | }; |
| 254 | |
| 255 | export 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 | }); |
no test coverage detected