chore: tidy up unneeded null handling for token generation

This commit is contained in:
William Oldham
2025-04-08 22:18:44 +01:00
parent 0bc3af0507
commit b9966807c3
3 changed files with 7 additions and 21 deletions

View File

@@ -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'),

View File

@@ -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: {

View File

@@ -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<IP
expire_time: BigInt(Date.now() + (24 * 60 * 60 * 1000)) // * Only valid for 24 hours
};
const tokenBuffer = generateToken(config.aes_key, tokenOptions);
const passwordResetToken = tokenBuffer ? tokenBuffer.toString('hex') : '';
// TODO - Handle null token
const passwordResetToken = generateToken(config.aes_key, tokenOptions).toString('hex');
const mailerOptions = {
to: pnid.email.address,