diff --git a/packages/producer/mod.ts b/packages/producer/mod.ts index 4e1365a..d0aa5c2 100644 --- a/packages/producer/mod.ts +++ b/packages/producer/mod.ts @@ -1,7 +1,6 @@ import { produceRequirements } from "@cistern/shared"; import { encryptText } from "@cistern/crypto"; import type { - LocalPublicKey, ProducerOptions, ProducerParams, PublicKeyOption, @@ -21,9 +20,8 @@ export async function createProducer( ): Promise { const reqs = await produceRequirements(opts); - let publicKey: LocalPublicKey | undefined; + let publicKey: PublicKeyOption | undefined; if (rkey) { - // Fetch record contents from PDS const res = await reqs.rpc.get("com.atproto.repo.getRecord", { params: { repo: reqs.miniDoc.did, @@ -40,7 +38,11 @@ export async function createProducer( const record = parse(AppCisternLexiconPubkey.mainSchema, res.data.value); - publicKey = { uri: res.data.uri, record }; + publicKey = { + uri: res.data.uri, + name: record.name, + content: record.content, + }; } return new Producer({ @@ -53,7 +55,7 @@ export class Producer { did: Did; rpc: Client; manager: CredentialManager; - publicKey?: LocalPublicKey; + publicKey?: PublicKeyOption; constructor(params: ProducerParams) { this.did = params.miniDoc.did; @@ -73,7 +75,7 @@ export class Producer { } const payload = encryptText( - Uint8Array.fromBase64(this.publicKey.record.content), + Uint8Array.fromBase64(this.publicKey.content), text, ); const record: AppCisternLexiconItem.Main = { @@ -148,7 +150,8 @@ export class Producer { /** * Sets a public key as the main encryption key - * @todo Replace local key with provided key */ - selectPublicKey() {} + selectPublicKey(key: PublicKeyOption) { + this.publicKey = key; + } } diff --git a/packages/producer/types.ts b/packages/producer/types.ts index 2fb0b8a..0143a24 100644 --- a/packages/producer/types.ts +++ b/packages/producer/types.ts @@ -1,5 +1,4 @@ import type { BaseClientOptions, ClientRequirements } from "@cistern/shared"; -import type { AppCisternLexiconPubkey } from "@cistern/lexicon"; import type { RecordKey, ResourceUri } from "@atcute/lexicons"; export interface ProducerOptions extends BaseClientOptions { @@ -7,14 +6,9 @@ export interface ProducerOptions extends BaseClientOptions { } export type ProducerParams = ClientRequirements & { - publicKey?: LocalPublicKey; + publicKey?: PublicKeyOption; }; -export interface LocalPublicKey { - uri: ResourceUri; - record: AppCisternLexiconPubkey.Main; -} - export interface PublicKeyOption { uri: ResourceUri; name: string;