From 623d9831eb4678abbf15bb65ffa5bfd23d461518 Mon Sep 17 00:00:00 2001 From: Sanju Yadav Date: Wed, 24 Dec 2025 17:38:34 +0530 Subject: [PATCH] Update methods removed from Node24 to support Node24 migration --- api/WebApi.ts | 23 +++++++++++++++++------ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/api/WebApi.ts b/api/WebApi.ts index afe17393..720873ed 100644 --- a/api/WebApi.ts +++ b/api/WebApi.ts @@ -475,14 +475,25 @@ export class WebApi { if (lookupKey && lookupKey.indexOf(':') > 0) { let lookupInfo: string[] = lookupKey.split(':', 2); - // file contains encryption key - let keyFile = new Buffer(lookupInfo[0], 'base64').toString('utf8'); - let encryptKey = new Buffer(fs.readFileSync(keyFile, 'utf8'), 'base64'); + let keyFile = Buffer.from(lookupInfo[0], 'base64').toString('utf8'); + let keyAndIv = fs.readFileSync(keyFile, 'utf8'); + + let [keyBase64, ivBase64] = keyAndIv.split(':', 2); + + if (!keyBase64 || !ivBase64) { + throw new Error( + 'Invalid encryption key format. Expected "key:iv" format from azure-pipelines-task-lib 5.2.4+. ' + + 'This version of azure-devops-node-api (15.2.0+) is not compatible with task-lib <5.2.4.' + ); + } + + let encryptKey = Buffer.from(keyBase64, 'base64'); + let iv = Buffer.from(ivBase64, 'base64'); - let encryptedContent: string = new Buffer(lookupInfo[1], 'base64').toString('utf8'); + let encryptedContent: string = Buffer.from(lookupInfo[1], 'base64').toString('utf8'); - let decipher = crypto.createDecipher("aes-256-ctr", encryptKey) - let decryptedContent = decipher.update(encryptedContent, 'hex', 'utf8') + let decipher = crypto.createDecipheriv("aes-256-ctr", encryptKey, iv); + let decryptedContent = decipher.update(encryptedContent, 'hex', 'utf8'); decryptedContent += decipher.final('utf8'); return decryptedContent; diff --git a/package-lock.json b/package-lock.json index 71123df2..60eb2a4a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "azure-devops-node-api", - "version": "15.1.2", + "version": "15.1.3", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 9b861f12..1490f746 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "azure-devops-node-api", "description": "Node client for Azure DevOps and TFS REST APIs", - "version": "15.1.2", + "version": "15.1.3", "main": "./WebApi.js", "types": "./WebApi.d.ts", "scripts": {