diff --git a/src/type/s2k/argon2.ts b/src/type/s2k/argon2.ts index 5636d608..f8421b57 100644 --- a/src/type/s2k/argon2.ts +++ b/src/type/s2k/argon2.ts @@ -2,6 +2,8 @@ import defaultConfig from '../../config'; import enums from '../../enums'; import util from '../../util'; import crypto from '../../crypto'; +import type { default as loadArgonWasmModuleType } from 'argon2id'; +import { Config } from '../../../openpgp'; const ARGON2_TYPE = 0x02; // id const ARGON2_VERSION = 0x13; @@ -20,21 +22,21 @@ export class Argon2OutOfMemoryError extends Error { } // cache argon wasm module -let loadArgonWasmModule: Function; -let argon2Promise: Promise; +let loadArgonWasmModule: typeof loadArgonWasmModuleType; +let argon2Promise: ReturnType; // reload wasm module above this treshold, to deallocated used memory const ARGON2_WASM_MEMORY_THRESHOLD_RELOAD = 2 << 19; class Argon2S2K { - type: string; - salt: Uint8Array | null; - t: number; - p: number; - encodedM: number; + type: 'argon2'; + private salt: Uint8Array | null; + private t: number; + private p: number; + private encodedM: number; /** * @param {Object} [config] - Full configuration, defaults to openpgp.config */ - constructor(config = defaultConfig) { + constructor(config: Config) { const { passes, parallelism, memoryExponent } = config.s2kArgon2Params; diff --git a/src/type/s2k/generic.ts b/src/type/s2k/generic.ts index df6bc8ea..36b9b41b 100644 --- a/src/type/s2k/generic.ts +++ b/src/type/s2k/generic.ts @@ -27,9 +27,10 @@ * @module type/s2k */ -import defaultConfig from '../../config'; -import crypto from '../../crypto'; +import type { Config, enums as enumsType } from '../../../openpgp'; import enums from '../../enums'; + +import crypto from '../../crypto'; import { UnsupportedError } from '../../packet/packet'; import util from '../../util'; @@ -41,7 +42,7 @@ class GenericS2K { /** * @param {Object} [config] - Full configuration, defaults to openpgp.config */ - constructor(s2kType: number, config = defaultConfig) { + constructor(s2kType: enumsType.s2k.simple | enumsType.s2k.salted | enumsType.s2k.iterated, config: Config) { /** * Hash function identifier, or 0 for gnu-dummy keys * @type {module:enums.hash | 0} diff --git a/src/type/s2k/index.ts b/src/type/s2k/index.ts index 2948cfbb..7fd8059a 100644 --- a/src/type/s2k/index.ts +++ b/src/type/s2k/index.ts @@ -1,9 +1,9 @@ -import defaultConfig from '../../config'; import Argon2S2K, { Argon2OutOfMemoryError } from './argon2'; import GenericS2K from './generic'; import enums from '../../enums'; import { UnsupportedError } from '../../packet/packet'; import GnuS2K from './gnu'; +import { Config } from '../../../openpgp'; const allowedS2KTypesForEncryption = new Set([enums.s2k.argon2, enums.s2k.iterated]); @@ -14,7 +14,7 @@ const allowedS2KTypesForEncryption = new Set([enums.s2k.argon2, enums.s2k.iterat * @returns {Object} New s2k object * @throws {Error} for unknown or unsupported types */ -export function newS2KFromType (type: number, config = defaultConfig): Argon2S2K | GenericS2K | GnuS2K { +export function newS2KFromType (type: number, config: Config): Argon2S2K | GenericS2K | GnuS2K { switch (type) { case enums.s2k.gnu: return new GnuS2K(); @@ -35,7 +35,7 @@ export function newS2KFromType (type: number, config = defaultConfig): Argon2S2K * @returns {Object} New s2k object * @throws {Error} for unknown or unsupported types */ -export function newS2KFromConfig(config = defaultConfig) { +export function newS2KFromConfig(config: Config) { const { s2kType } = config; if (!allowedS2KTypesForEncryption.has(s2kType)) {