mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-08-13 14:37:26 +00:00
fix(agentstack): reject malformed CoinPay DIDs (#83)
This commit is contained in:
parent
895bb9989e
commit
2f07f74126
2 changed files with 15 additions and 12 deletions
|
|
@ -26,11 +26,12 @@ describe("DID helpers", () => {
|
||||||
expect(parseDid(agentDid("abc"))).toEqual({ kind: "agent", id: "abc" });
|
expect(parseDid(agentDid("abc"))).toEqual({ kind: "agent", id: "abc" });
|
||||||
});
|
});
|
||||||
|
|
||||||
it("rejects non-CoinPay DIDs", () => {
|
it("rejects non-CoinPay DIDs", () => {
|
||||||
expect(parseDid("did:web:example.com")).toBeNull();
|
expect(parseDid("did:web:example.com")).toBeNull();
|
||||||
expect(parseDid("did:coinpay:bot:abc")).toBeNull();
|
expect(parseDid("did:coinpay:bot:abc")).toBeNull();
|
||||||
});
|
expect(parseDid("did:coinpay:user:abc:extra")).toBeNull();
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("AgentStack manifest", () => {
|
describe("AgentStack manifest", () => {
|
||||||
it("is a valid LogicSRC plugin manifest", () => {
|
it("is a valid LogicSRC plugin manifest", () => {
|
||||||
|
|
|
||||||
|
|
@ -22,13 +22,15 @@ export const userDid = (id: string) => makeDid("user", id);
|
||||||
export const agentDid = (id: string) => makeDid("agent", id);
|
export const agentDid = (id: string) => makeDid("agent", id);
|
||||||
|
|
||||||
/** Parse a CoinPay DID into its kind and id, or return null if it is not one. */
|
/** Parse a CoinPay DID into its kind and id, or return null if it is not one. */
|
||||||
export function parseDid(did: string): { kind: DidKind; id: string } | null {
|
export function parseDid(did: string): { kind: DidKind; id: string } | null {
|
||||||
const prefix = `${DID_METHOD}:`;
|
const prefix = `${DID_METHOD}:`;
|
||||||
if (!did.startsWith(prefix)) return null;
|
if (!did.startsWith(prefix)) return null;
|
||||||
const [kind, id] = did.slice(prefix.length).split(":");
|
const parts = did.slice(prefix.length).split(":");
|
||||||
if ((kind !== "user" && kind !== "agent") || !id) return null;
|
if (parts.length !== 2) return null;
|
||||||
return { kind, id };
|
const [kind, id] = parts;
|
||||||
}
|
if ((kind !== "user" && kind !== "agent") || !id) return null;
|
||||||
|
return { kind, id };
|
||||||
|
}
|
||||||
|
|
||||||
export function isDidTask(value: unknown): value is DidTask {
|
export function isDidTask(value: unknown): value is DidTask {
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue