diff --git a/types/openpgp/index.d.ts b/types/openpgp/index.d.ts index c9a95e8c6a..a83c75b050 100644 --- a/types/openpgp/index.d.ts +++ b/types/openpgp/index.d.ts @@ -5,7 +5,7 @@ // Daniel Montesinos // Carlos Villavicencio // Eric Camellini -// SardineFIsh +// SardineFish // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 import BN = require("bn.js"); @@ -1603,7 +1603,7 @@ export namespace key { * Returns userids * @returns array of userids */ - getUserIds(): any[]; + getUserIds(): string[]; /** * Returns true if this is a public key @@ -1627,7 +1627,7 @@ export namespace key { * Returns ASCII armored text of key * @returns ASCII armor */ - armor(): ReadableStream; + armor(): string; /** * Returns last created key or key by given keyId that is available for signing and verification @@ -1692,7 +1692,7 @@ export namespace key { * @param userId, optional user ID * @returns */ - getExpirationTime(capabilities: any, keyId: type.keyid.Keyid, userId: object): Promise; + getExpirationTime(capabilities?: any, keyId?: type.keyid.Keyid, userId?: object): Promise; /** * Returns primary user and most significant (latest valid) self signature @@ -1702,7 +1702,7 @@ export namespace key { * @param userId (optional) user ID to get instead of the primary user, if it exists * @returns The primary user and the self signature */ - getPrimaryUser(date: Date, userId: object): Promise<{ user: User, selfCertification: packet.Signature }>; + getPrimaryUser(date?: Date, userId?: object): Promise<{ user: User, selfCertification: packet.Signature }>; /** * Update key with new components from specified key with same key ID: @@ -1828,6 +1828,8 @@ export namespace key { class User { constructor(); + userId: packet.Userid; + /** * Transforms structured user data to packetlist * @returns @@ -4383,7 +4385,7 @@ export namespace util { * @param url If true, output is URL-safe * @returns Base-64 encoded string */ - function Uint8Array_to_b64(bytes: Uint8Array, url: boolean): string; + function Uint8Array_to_b64(bytes: Uint8Array, url?: boolean): string; /** * Convert a hex string to an array of 8-bit integers @@ -4560,12 +4562,12 @@ export namespace util { /** * Format user id for internal use. */ - function formatUserId(): void; + function formatUserId(id: { name: string, email: string; comment: string }): string; /** * Parse user id. */ - function parseUserId(): void; + function parseUserId(userId: string): { name: string, email: string; comment: string }; /** * Normalize line endings to \r\n @@ -4699,6 +4701,20 @@ export namespace worker { } } +export interface WorkerOptions { + /** + * relative path to the worker scripts, default: 'openpgp.worker.js' + */ + path: string; + /** + * number of workers to initialize + */ + n?: number; + /** + * alternative to path parameter: web workers initialized with 'openpgp.worker.js' + */ + workers?: any[]; +} /** * Set the path for the web worker script and create an instance of the async proxy @@ -4706,7 +4722,7 @@ export namespace worker { * @param n number of workers to initialize * @param workers alternative to path parameter: web workers initialized with 'openpgp.worker.js' */ -export function initWorker(path: string, n?: number, workers?: any[]): void; +export function initWorker(options: WorkerOptions): void; /** * Returns a reference to the async proxy if the worker was initialized with openpgp.initWorker() @@ -4880,9 +4896,6 @@ export interface EncryptOptions { } export interface EncryptResult { - data: string | ReadableStream; - message: message.Message; - signature: string | ReadableStream | signature.Signature; sessionKey: { data: Uint8Array, algorithm: string, aeadAlgorithm: string }; } @@ -4899,7 +4912,15 @@ export interface EncryptResult { * sessionKey: { data, algorithm, aeadAlgorithm } (if `returnSessionKey` was true) * } */ -export function encrypt(options: EncryptOptions): Promise; +export function encrypt(options: EncryptOptions & { armor?: true, detached?: false }): Promise +export function encrypt(options: EncryptOptions & { armor?: true, detached: true }): Promise +export function encrypt(options: EncryptOptions & { armor: false, detached?: false }): Promise +export function encrypt(options: EncryptOptions & { armor: false, detached: true }): Promise +export function encrypt(options: EncryptOptions): Promise; + message: message.Message; + signature: string | ReadableStream | signature.Signature; +}>; export interface DecryptOptions { /** @@ -4968,6 +4989,8 @@ export interface DecryptResult { * ] * } */ +export function decrypt(options: DecryptOptions & { format: "utf8" }): Promise | NodeStream }> +export function decrypt(options: DecryptOptions & { format: "binary" }): Promise | NodeStream }> export function decrypt(options: DecryptOptions): Promise; export interface SignOptions { @@ -5021,6 +5044,10 @@ export interface SignResult { * signature: Signature (if `armor` was false) * } */ +export function sign(options: SignOptions & { armor?: true, detached?: false }): Promise<{ data: string }> +export function sign(options: SignOptions & { armor: false, detached?: false }): Promise<{ message: message.Message }> +export function sign(options: SignOptions & { armor?: true, detached: true }): Promise<{ signature: string }> +export function sign(options: SignOptions & { armor: false, detached: true }): Promise<{ signature: signature.Signature }> export function sign(options: SignOptions): Promise; export interface VerifyOptions { diff --git a/types/openpgp/openpgp-tests.ts b/types/openpgp/openpgp-tests.ts index 45a69aad1f..c72d77f2fc 100644 --- a/types/openpgp/openpgp-tests.ts +++ b/types/openpgp/openpgp-tests.ts @@ -70,7 +70,9 @@ Promise.all(promises).then((values) => { // failure }); -openpgp.initWorker('openpgp.worker.js'); +openpgp.initWorker({ + path: 'openpgp.worker.js' +}); (async () => { let msgOptions: openpgp.EncryptOptions; @@ -84,6 +86,14 @@ openpgp.initWorker('openpgp.worker.js'); const cipher = await openpgp.encrypt(msgOptions); const encrypted = cipher.message.packets.write(); // get raw encrypted packets as Uint8Array + let armored = await openpgp.encrypt({ + message: openpgp.message.fromBinary(new Uint8Array([0x01, 0x01, 0x01])), + armor: true, + privateKeys: [] + }); + let data: string = armored.data; + // let msg: openpgp.message.Message = armored.message; // without member 'message' + const plain = await openpgp.decrypt({ message: await openpgp.message.read(encrypted), passwords: ['secret stuff'], @@ -123,6 +133,30 @@ openpgp.initWorker('openpgp.worker.js'); const signature = signed.signature as openpgp.signature.Signature; const message = signed.message; + // Test function reload + openpgp.sign({ + message: null, + privateKeys: [], + detached: true + }).then(s => s.signature/* as string*/); + openpgp.sign({ + message: null, + privateKeys: [], + detached: false, + }).then(s => s.data/* as string*/); + openpgp.sign({ + message: null, + privateKeys: [], + armor: false, + detached: true + }).then(s => s.signature/* as openpgp.signature.Signature*/); + openpgp.sign({ + message: null, + privateKeys: [], + armor: false, + detached: false, + }).then(s => s.message/* as openpgp.message.Message*/); + const verifyOptions: openpgp.VerifyOptions = { message, signature, diff --git a/types/openpgp/ts3.2/index.d.ts b/types/openpgp/ts3.2/index.d.ts index 442a458ccd..86862ce0ca 100644 --- a/types/openpgp/ts3.2/index.d.ts +++ b/types/openpgp/ts3.2/index.d.ts @@ -5,7 +5,7 @@ // Daniel Montesinos // Carlos Villavicencio // Eric Camellini -// SardineFIsh +// SardineFish // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped import BN = require("bn.js") @@ -1672,7 +1672,7 @@ export namespace key { * Returns userids * @returns array of userids */ - getUserIds(): any[]; + getUserIds(): string[]; /** * Returns true if this is a public key @@ -1696,7 +1696,7 @@ export namespace key { * Returns ASCII armored text of key * @returns ASCII armor */ - armor(): ReadableStream; + armor(): string; /** * Returns last created key or key by given keyId that is available for signing and verification @@ -1761,7 +1761,7 @@ export namespace key { * @param userId, optional user ID * @returns */ - getExpirationTime(capabilities: any, keyId: type.keyid.Keyid, userId: object): Promise; + getExpirationTime(capabilities?: any, keyId?: type.keyid.Keyid, userId?: object): Promise; /** * Returns primary user and most significant (latest valid) self signature @@ -1771,7 +1771,7 @@ export namespace key { * @param userId (optional) user ID to get instead of the primary user, if it exists * @returns The primary user and the self signature */ - getPrimaryUser(date: Date, userId: object): Promise<{ user: User, selfCertification: packet.Signature }>; + getPrimaryUser(date?: Date, userId?: object): Promise<{ user: User, selfCertification: packet.Signature }>; /** * Update key with new components from specified key with same key ID: @@ -1897,6 +1897,8 @@ export namespace key { class User { constructor(); + userId: packet.Userid; + /** * Transforms structured user data to packetlist * @returns @@ -4454,7 +4456,7 @@ export namespace util { * @param url If true, output is URL-safe * @returns Base-64 encoded string */ - function Uint8Array_to_b64(bytes: Uint8Array, url: boolean): string; + function Uint8Array_to_b64(bytes: Uint8Array, url?: boolean): string; /** * Convert a hex string to an array of 8-bit integers @@ -4631,12 +4633,12 @@ export namespace util { /** * Format user id for internal use. */ - function formatUserId(): void; + function formatUserId(id: { name: string, email: string; comment: string }): string; /** * Parse user id. */ - function parseUserId(): void; + function parseUserId(userId: string): { name: string, email: string; comment: string }; /** * Normalize line endings to \r\n @@ -4770,6 +4772,20 @@ export namespace worker { } } +export interface WorkerOptions { + /** + * relative path to the worker scripts, default: 'openpgp.worker.js' + */ + path: string; + /** + * number of workers to initialize + */ + n?: number; + /** + * alternative to path parameter: web workers initialized with 'openpgp.worker.js' + */ + workers?: any[]; +} /** * Set the path for the web worker script and create an instance of the async proxy @@ -4777,7 +4793,7 @@ export namespace worker { * @param n number of workers to initialize * @param workers alternative to path parameter: web workers initialized with 'openpgp.worker.js' */ -export function initWorker(path: string, n?: number, workers?: any[]): void; +export function initWorker(options: WorkerOptions): void; /** * Returns a reference to the async proxy if the worker was initialized with openpgp.initWorker() @@ -4951,9 +4967,6 @@ export interface EncryptOptions { } export interface EncryptResult { - data: string | ReadableStream; - message: message.Message; - signature: string | ReadableStream | signature.Signature; sessionKey: { data: Uint8Array, algorithm: string, aeadAlgorithm: string }; } @@ -4970,7 +4983,15 @@ export interface EncryptResult { * sessionKey: { data, algorithm, aeadAlgorithm } (if `returnSessionKey` was true) * } */ -export function encrypt(options: EncryptOptions): Promise; +export function encrypt(options: EncryptOptions & { armor?: true, detached?: false }): Promise +export function encrypt(options: EncryptOptions & { armor?: true, detached: true }): Promise +export function encrypt(options: EncryptOptions & { armor: false, detached?: false }): Promise +export function encrypt(options: EncryptOptions & { armor: false, detached: true }): Promise +export function encrypt(options: EncryptOptions): Promise; + message: message.Message; + signature: string | ReadableStream | signature.Signature; +}>; export interface DecryptOptions { /** @@ -5039,6 +5060,8 @@ export interface DecryptResult { * ] * } */ +export function decrypt(options: DecryptOptions & { format: "utf8" }): Promise | NodeStream}> +export function decrypt(options: DecryptOptions & { format: "binary" }): Promise | NodeStream }> export function decrypt(options: DecryptOptions): Promise; export interface SignOptions { @@ -5090,8 +5113,12 @@ export interface SignResult { * { * signature: string|ReadableStream|NodeStream, (if `armor` was true, the default) * signature: Signature (if `armor` was false) - * } + * }{ */ +export function sign(options: SignOptions & { armor?: true, detached?: false }): Promise<{ data: string }> +export function sign(options: SignOptions & { armor: false, detached?: false }): Promise<{ message: message.Message }> +export function sign(options: SignOptions & { armor?: true, detached: true }): Promise<{ signature: string }> +export function sign(options: SignOptions & { armor: false, detached: true }): Promise<{ signature: signature.Signature }> export function sign(options: SignOptions): Promise; export interface VerifyOptions { diff --git a/types/openpgp/ts3.2/openpgp-tests.ts b/types/openpgp/ts3.2/openpgp-tests.ts index 62e580fd4b..e35e79f1a0 100644 --- a/types/openpgp/ts3.2/openpgp-tests.ts +++ b/types/openpgp/ts3.2/openpgp-tests.ts @@ -1,4 +1,4 @@ -import openpgp from "openpgp"; +import openpgp, { encrypt } from "openpgp"; // Open PGP Sample codes @@ -72,7 +72,9 @@ Promise.all(promises).then(function (values) { // failure }); -openpgp.initWorker('openpgp.worker.js'); +openpgp.initWorker({ + path: 'openpgp.worker.js' +}); (async () => { let msgOptions: openpgp.EncryptOptions; @@ -84,8 +86,17 @@ openpgp.initWorker('openpgp.worker.js'); }; let cipher = await openpgp.encrypt(msgOptions); + let encrypted = cipher.message.packets.write(); // get raw encrypted packets as Uint8Array + let armored = await openpgp.encrypt({ + message: openpgp.message.fromBinary(new Uint8Array([0x01, 0x01, 0x01])), + armor: true, + privateKeys: [] + }); + let data: string = armored.data; + // let msg: openpgp.message.Message = armored.message; // without member 'message' + let plain = await openpgp.decrypt({ message: await openpgp.message.read(encrypted), passwords: ['secret stuff'], @@ -122,6 +133,30 @@ openpgp.initWorker('openpgp.worker.js'); const signed = await openpgp.sign(signOptions); + // Test function reload + openpgp.sign({ + message: null, + privateKeys: [], + detached: true + }).then(s => s.signature/* as string*/); + openpgp.sign({ + message: null, + privateKeys: [], + detached: false, + }).then(s => s.data/* as string*/); + openpgp.sign({ + message: null, + privateKeys: [], + armor: false, + detached: true + }).then(s => s.signature/* as openpgp.signature.Signature*/); + openpgp.sign({ + message: null, + privateKeys: [], + armor: false, + detached: false, + }).then(s => s.message/* as openpgp.message.Message*/); + const signature = signed.signature as openpgp.signature.Signature; const message = signed.message;