Skip to content

Commit 1eb0b42

Browse files
authored
TS: add declaration for verify with CleartextMessage input (#1640)
Also, make `VerifyMessageResult` generic. This change should be backwards compatible since a default type is set.
1 parent 29d2b70 commit 1eb0b42

2 files changed

Lines changed: 13 additions & 8 deletions

File tree

openpgp.d.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -228,18 +228,17 @@ export function decrypt<T extends MaybeStream<Data>>(options: DecryptOptions & {
228228
string
229229
}>;
230230

231-
export function verify<T extends MaybeStream<Data>>(options: VerifyOptions & { message: Message<T>, format: 'binary' }): Promise<VerifyMessageResult & {
232-
data:
231+
export function verify(options: VerifyOptions & { message: CleartextMessage, format?: 'utf8' }): Promise<VerifyMessageResult<string>>;
232+
export function verify<T extends MaybeStream<Data>>(options: VerifyOptions & { message: Message<T>, format: 'binary' }): Promise<VerifyMessageResult<
233233
T extends WebStream<infer X> ? WebStream<Uint8Array> :
234234
T extends NodeStream<infer X> ? NodeStream<Uint8Array> :
235235
Uint8Array
236-
}>;
237-
export function verify<T extends MaybeStream<Data>>(options: VerifyOptions & { message: Message<T> }): Promise<VerifyMessageResult & {
238-
data:
236+
>>;
237+
export function verify<T extends MaybeStream<Data>>(options: VerifyOptions & { message: Message<T> }): Promise<VerifyMessageResult<
239238
T extends WebStream<infer X> ? WebStream<string> :
240239
T extends NodeStream<infer X> ? NodeStream<string> :
241240
string
242-
}>;
241+
>>;
243242

244243
/** Class that represents an OpenPGP message. Can be an encrypted message, signed message, compressed message or literal message
245244
*/
@@ -721,8 +720,8 @@ interface DecryptMessageResult {
721720
filename: string;
722721
}
723722

724-
interface VerifyMessageResult {
725-
data: MaybeStream<Data>;
723+
interface VerifyMessageResult<T extends MaybeStream<Data> = MaybeStream<Data>> {
724+
data: T;
726725
signatures: VerificationResult[];
727726
}
728727

test/typescript/definitions.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,12 @@ import {
113113

114114
// Sign cleartext message (armored)
115115
const cleartextMessage = await createCleartextMessage({ text: 'hello' });
116+
const verificationResult = await verify({ message: cleartextMessage, verificationKeys: publicKey });
117+
const verifiedCleartextData: string = verificationResult.data;
118+
expect(verifiedCleartextData).to.equal(cleartextMessage.getText());
119+
// @ts-expect-error Binary output not available for cleartext messages
120+
try { await verify({ message: cleartextMessage, verificationKeys: publicKey, format: 'binary' }) } catch (e) {}
121+
116122
const clearSignedArmor = await sign({ signingKeys: privateKeys, message: cleartextMessage });
117123
expect(clearSignedArmor).to.include('-----BEGIN PGP SIGNED MESSAGE-----');
118124
const clearSignedObject: CleartextMessage = await sign({ signingKeys: privateKeys, message: cleartextMessage, format: 'object' });

0 commit comments

Comments
 (0)