summaryrefslogtreecommitdiff
path: root/src/lib/pgp/verify.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/pgp/verify.ts')
-rw-r--r--src/lib/pgp/verify.ts39
1 files changed, 5 insertions, 34 deletions
diff --git a/src/lib/pgp/verify.ts b/src/lib/pgp/verify.ts
index da2de7f..f37c0bb 100644
--- a/src/lib/pgp/verify.ts
+++ b/src/lib/pgp/verify.ts
@@ -3,7 +3,7 @@ import {
PublicKey,
readSignature,
type Subkey,
- UserIDPacket,
+ type UserIDPacket,
verify,
} from "openpgp";
import {
@@ -18,11 +18,12 @@ import {
type KeyFileFormat,
} from "./create.ts";
import { getLastCommitForOneOfFiles } from "../git/log.ts";
-import { defined, get, instanciate } from "../../utils/anonymous.ts";
+import { get, instanciate } from "../../utils/anonymous.ts";
import { Packet, Signature } from "./sign.ts";
import type { Commit } from "../git/types.ts";
-import { TRUSTED_KEYS_DIR } from "../../consts.ts";
import { findMapAsync, type MaybeIterable } from "../../utils/iterator.ts";
+import { getUserIDsFromKey } from "./user.ts";
+import { env } from "../env.ts";
type DataURL = [URL, URL?];
type Corrupted = [false] | [true, Error];
@@ -251,7 +252,7 @@ export class SignatureVerifier {
public static async instance(): Promise<SignatureVerifier> {
if (!SignatureVerifier.#instance) {
SignatureVerifier.#instance = new SignatureVerifier();
- await SignatureVerifier.#instance.addKeysFromDir(TRUSTED_KEYS_DIR);
+ await SignatureVerifier.#instance.addKeysFromDir(env.TRUSTED_KEYS_DIR);
}
return SignatureVerifier.#instance;
@@ -270,36 +271,6 @@ export class SignatureVerifier {
export const verifier = SignatureVerifier.instance();
-function getUserIDsFromKey(
- signature: Signature,
- key: PublicKey | Subkey,
-): UserIDPacket[] {
- const packet = signature.getPackets()[0];
- const userID = packet.signersUserID;
-
- if (userID) {
- return [UserIDPacket.fromObject(parseUserID(userID))];
- }
-
- key = key instanceof PublicKey ? key : key.mainKey;
- return key.users.map(get("userID")).filter(defined);
-}
-
-function parseUserID(input: string) {
- const regex = /^(.*?)\s*(?:\((.*?)\))?\s*(?:<(.+?)>)?$/;
- const match = input.match(regex);
-
- if (!match) return {};
-
- const [, name, comment, email] = match;
-
- return {
- name: name?.trim() || undefined,
- comment: comment?.trim() || undefined,
- email: email?.trim() || undefined,
- };
-}
-
async function isSignatureCorrupted(
verified: Awaited<
ReturnType<typeof verify>