diff --git a/lib/b2b/passwords.ts b/lib/b2b/passwords.ts index c7e1002b..a9a32594 100644 --- a/lib/b2b/passwords.ts +++ b/lib/b2b/passwords.ts @@ -123,7 +123,8 @@ export type B2BPasswordsMigrateRequest = | (shared.Argon2IDMigrateRequest & MigrateRequestBase) | (shared.SHA1MigrateRequest & MigrateRequestBase) | (shared.ScryptMigrateRequest & MigrateRequestBase) - | (shared.PHPassMigrateRequest & MigrateRequestBase); + | (shared.PHPassMigrateRequest & MigrateRequestBase) + | (shared.PBKDF2MigrateRequest & MigrateRequestBase); export interface B2BPasswordsMigrateResponse extends ResponseWithMember { organization_id: string; diff --git a/lib/b2c/passwords.ts b/lib/b2c/passwords.ts index b0c0a95f..26be0d5d 100644 --- a/lib/b2c/passwords.ts +++ b/lib/b2c/passwords.ts @@ -147,7 +147,8 @@ export type B2CPasswordsMigrateRequest = | (shared.Argon2IDMigrateRequest & MigrateRequestBase) | (shared.SHA1MigrateRequest & MigrateRequestBase) | (shared.ScryptMigrateRequest & MigrateRequestBase) - | (shared.PHPassMigrateRequest & MigrateRequestBase); + | (shared.PHPassMigrateRequest & MigrateRequestBase) + | (shared.PBKDF2MigrateRequest & MigrateRequestBase); export interface B2CPasswordsMigrateResponse extends BaseResponse { user_id: string; diff --git a/lib/shared/passwords.ts b/lib/shared/passwords.ts index 41577800..07ff08d5 100644 --- a/lib/shared/passwords.ts +++ b/lib/shared/passwords.ts @@ -54,3 +54,12 @@ export interface ScryptMigrateRequest { key_length: number; }; } + +export interface PBKDF2MigrateRequest { + hash_type: "pbkdf_2"; + pbkdf_2_config?: { + salt: string; + iteration_amount: number; + key_length: number; + }; +} diff --git a/package-lock.json b/package-lock.json index f119a632..39519a05 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "stytch", - "version": "7.1.3", + "version": "7.2.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "stytch", - "version": "7.1.3", + "version": "7.2.0", "license": "MIT", "dependencies": { "isomorphic-unfetch": "^3.1.0", diff --git a/package.json b/package.json index 68b486a9..d712e84b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stytch", - "version": "7.1.3", + "version": "7.2.0", "description": "A wrapper for the Stytch API", "types": "./types/lib/index.d.ts", "main": "./dist/index.js", diff --git a/test/b2b/passwords.test.ts b/test/b2b/passwords.test.ts index 757d5121..63f068fb 100644 --- a/test/b2b/passwords.test.ts +++ b/test/b2b/passwords.test.ts @@ -487,5 +487,34 @@ describe("passwords.migrate", () => { }, params: undefined, }); + }), + test("pbkdf_2", () => { + return expect( + passwords.migrate({ + organization_id: "organization-id-1234", + email_address: "Ada_Lovelace@example.com", + hash_type: "pbkdf_2", + hash: "not-a-real-password-hash", + pbkdf_2_config: { + salt: "not-a-real-salt", + iteration_amount: 10000, + key_length: 32, + }, + }) + ).resolves.toMatchObject({ + method: "POST", + path: "passwords/migrate", + data: { + organization_id: "organization-id-1234", + email_address: "Ada_Lovelace@example.com", + hash_type: "pbkdf_2", + hash: "not-a-real-password-hash", + pbkdf_2_config: { + salt: "not-a-real-salt", + iteration_amount: 10000, + key_length: 32, + }, + }, + }); }); }); diff --git a/test/b2c/password.test.ts b/test/b2c/password.test.ts index 4a838dac..502a08c3 100644 --- a/test/b2c/password.test.ts +++ b/test/b2c/password.test.ts @@ -445,5 +445,32 @@ describe("passwords.migrate", () => { }, }, }); + }), + test("pbkdf_2", () => { + return expect( + passwords.migrate({ + email: "Ada_Lovelace@example.com", + hash_type: "pbkdf_2", + hash: "not-a-real-password-hash", + pbkdf_2_config: { + salt: "not-a-real-salt", + iteration_amount: 10000, + key_length: 32, + }, + }) + ).resolves.toMatchObject({ + method: "POST", + path: "passwords/migrate", + data: { + email: "Ada_Lovelace@example.com", + hash_type: "pbkdf_2", + hash: "not-a-real-password-hash", + pbkdf_2_config: { + salt: "not-a-real-salt", + iteration_amount: 10000, + key_length: 32, + }, + }, + }); }); }); diff --git a/types/lib/b2b/passwords.d.ts b/types/lib/b2b/passwords.d.ts index 58ef1692..643ae018 100644 --- a/types/lib/b2b/passwords.d.ts +++ b/types/lib/b2b/passwords.d.ts @@ -101,7 +101,7 @@ interface MigrateRequestBase { trusted_metadata?: Record; untrusted_metadata?: Record; } -export declare type B2BPasswordsMigrateRequest = (shared.MD5MigrateRequest & MigrateRequestBase) | (shared.BcryptMigrateRequest & MigrateRequestBase) | (shared.Argon2IMigrateRequest & MigrateRequestBase) | (shared.Argon2IDMigrateRequest & MigrateRequestBase) | (shared.SHA1MigrateRequest & MigrateRequestBase) | (shared.ScryptMigrateRequest & MigrateRequestBase) | (shared.PHPassMigrateRequest & MigrateRequestBase); +export declare type B2BPasswordsMigrateRequest = (shared.MD5MigrateRequest & MigrateRequestBase) | (shared.BcryptMigrateRequest & MigrateRequestBase) | (shared.Argon2IMigrateRequest & MigrateRequestBase) | (shared.Argon2IDMigrateRequest & MigrateRequestBase) | (shared.SHA1MigrateRequest & MigrateRequestBase) | (shared.ScryptMigrateRequest & MigrateRequestBase) | (shared.PHPassMigrateRequest & MigrateRequestBase) | (shared.PBKDF2MigrateRequest & MigrateRequestBase); export interface B2BPasswordsMigrateResponse extends ResponseWithMember { organization_id: string; member_created: boolean; diff --git a/types/lib/b2c/passwords.d.ts b/types/lib/b2c/passwords.d.ts index e3cb401f..fc9f44e2 100644 --- a/types/lib/b2c/passwords.d.ts +++ b/types/lib/b2c/passwords.d.ts @@ -123,7 +123,7 @@ interface MigrateRequestBase { trusted_metadata?: UserMetadata; untrusted_metadata?: UserMetadata; } -export declare type B2CPasswordsMigrateRequest = (shared.MD5MigrateRequest & MigrateRequestBase) | (shared.BcryptMigrateRequest & MigrateRequestBase) | (shared.Argon2IMigrateRequest & MigrateRequestBase) | (shared.Argon2IDMigrateRequest & MigrateRequestBase) | (shared.SHA1MigrateRequest & MigrateRequestBase) | (shared.ScryptMigrateRequest & MigrateRequestBase) | (shared.PHPassMigrateRequest & MigrateRequestBase); +export declare type B2CPasswordsMigrateRequest = (shared.MD5MigrateRequest & MigrateRequestBase) | (shared.BcryptMigrateRequest & MigrateRequestBase) | (shared.Argon2IMigrateRequest & MigrateRequestBase) | (shared.Argon2IDMigrateRequest & MigrateRequestBase) | (shared.SHA1MigrateRequest & MigrateRequestBase) | (shared.ScryptMigrateRequest & MigrateRequestBase) | (shared.PHPassMigrateRequest & MigrateRequestBase) | (shared.PBKDF2MigrateRequest & MigrateRequestBase); export interface B2CPasswordsMigrateResponse extends BaseResponse { user_id: string; email_id: string; diff --git a/types/lib/shared/passwords.d.ts b/types/lib/shared/passwords.d.ts index 16517bd0..2e63f324 100644 --- a/types/lib/shared/passwords.d.ts +++ b/types/lib/shared/passwords.d.ts @@ -48,3 +48,11 @@ export interface ScryptMigrateRequest { key_length: number; }; } +export interface PBKDF2MigrateRequest { + hash_type: "pbkdf_2"; + pbkdf_2_config?: { + salt: string; + iteration_amount: number; + key_length: number; + }; +}