From b9966807c38a35569e69916af0bf15ffcfef3dca Mon Sep 17 00:00:00 2001 From: William Oldham Date: Tue, 8 Apr 2025 22:18:44 +0100 Subject: [PATCH] chore: tidy up unneeded null handling for token generation --- src/services/nasc/routes/ac.ts | 8 ++------ src/services/nnas/routes/provider.ts | 6 +----- src/util.ts | 14 ++++---------- 3 files changed, 7 insertions(+), 21 deletions(-) diff --git a/src/services/nasc/routes/ac.ts b/src/services/nasc/routes/ac.ts index 20629d4..016a1e0 100644 --- a/src/services/nasc/routes/ac.ts +++ b/src/services/nasc/routes/ac.ts @@ -74,10 +74,8 @@ async function processLoginRequest(server: HydratedServerDocument, pid: number, expire_time: BigInt(Date.now() + (3600 * 1000)) }; - // TODO - Handle null tokens - const nexTokenBuffer = generateToken(server.aes_key, tokenOptions); - const nexToken = nintendoBase64Encode(nexTokenBuffer || ''); + const nexToken = nintendoBase64Encode(nexTokenBuffer); return new URLSearchParams({ locator: nintendoBase64Encode(`${server.ip}:${server.port}`), @@ -98,10 +96,8 @@ async function processServiceTokenRequest(server: HydratedServerDocument, pid: n expire_time: BigInt(Date.now() + (3600 * 1000)) }; - // TODO - Handle null tokens - const serviceTokenBuffer = generateToken(server.aes_key, tokenOptions); - const serviceToken = nintendoBase64Encode(serviceTokenBuffer || ''); + const serviceToken = nintendoBase64Encode(serviceTokenBuffer); return new URLSearchParams({ retry: nintendoBase64Encode('0'), diff --git a/src/services/nnas/routes/provider.ts b/src/services/nnas/routes/provider.ts index d80b6cd..d6bb25a 100644 --- a/src/services/nnas/routes/provider.ts +++ b/src/services/nnas/routes/provider.ts @@ -107,11 +107,7 @@ router.get('/service_token/@me', async (request: express.Request, response: expr }; const serviceTokenBuffer = generateToken(server.aes_key, tokenOptions); - let serviceToken = serviceTokenBuffer ? serviceTokenBuffer.toString('base64') : ''; - - if (request.isCemu) { - serviceToken = Buffer.from(serviceToken, 'base64').toString('hex'); - } + const serviceToken = request.isCemu ? serviceTokenBuffer.toString('hex') : serviceTokenBuffer.toString('base64'); response.send(xmlbuilder.create({ service_token: { diff --git a/src/util.ts b/src/util.ts index efe84a7..0eca7cc 100644 --- a/src/util.ts +++ b/src/util.ts @@ -72,11 +72,8 @@ export function generateOAuthTokens(systemType: SystemType, pnid: HydratedPNIDDo expire_time: BigInt(Date.now() + (refreshTokenExpiresInSecs * 1000)) }; - const accessToken = generateToken(config.aes_key, accessTokenOptions)?.toString('hex'); - const refreshToken = generateToken(config.aes_key, refreshTokenOptions)?.toString('hex'); - - if (!accessToken) throw new Error('Failed to generate access token'); - if (!refreshToken) throw new Error('Failed to generate refresh token'); + const accessToken = generateToken(config.aes_key, accessTokenOptions).toString('hex'); + const refreshToken = generateToken(config.aes_key, refreshTokenOptions).toString('hex'); return { accessToken, @@ -89,7 +86,7 @@ export function generateOAuthTokens(systemType: SystemType, pnid: HydratedPNIDDo } -export function generateToken(key: string, options: TokenOptions): Buffer | null { +export function generateToken(key: string, options: TokenOptions): Buffer { let dataBuffer = Buffer.alloc(1 + 1 + 4 + 8); dataBuffer.writeUInt8(options.system_type, 0x0); @@ -285,10 +282,7 @@ export async function sendForgotPasswordEmail(pnid: mongoose.HydratedDocument