mirror of
https://github.com/PretendoNetwork/BOSS.git
synced 2026-04-24 06:57:06 -05:00
chore: update @pretendonetwork/boss-crypto and @pretendonetwork/grpc
This commit is contained in:
parent
92f9c09a37
commit
3bf0334c0c
40
package-lock.json
generated
40
package-lock.json
generated
|
|
@ -10,8 +10,8 @@
|
|||
"license": "AGPL-3.0-only",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.723.0",
|
||||
"@pretendonetwork/boss-crypto": "^1.1.2",
|
||||
"@pretendonetwork/grpc": "^2.3.2",
|
||||
"@pretendonetwork/boss-crypto": "^1.1.3",
|
||||
"@pretendonetwork/grpc": "^2.3.3",
|
||||
"@typegoose/auto-increment": "^4.13.0",
|
||||
"commander": "^14.0.0",
|
||||
"cron": "^4.3.3",
|
||||
|
|
@ -918,9 +918,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@bufbuild/protobuf": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.9.0.tgz",
|
||||
"integrity": "sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA==",
|
||||
"version": "2.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.10.0.tgz",
|
||||
"integrity": "sha512-fdRs9PSrBF7QUntpZpq6BTw58fhgGJojgg39m9oFOJGZT+nip9b0so5cYY1oWl5pvemDLr0cPPsH46vwThEbpQ==",
|
||||
"license": "(Apache-2.0 AND BSD-3-Clause)"
|
||||
},
|
||||
"node_modules/@emnapi/core": {
|
||||
|
|
@ -2045,9 +2045,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@pretendonetwork/boss-crypto": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@pretendonetwork/boss-crypto/-/boss-crypto-1.1.2.tgz",
|
||||
"integrity": "sha512-3rDp29vAmOPvQ7L/Vyqon52Wqqz2dvhDdHAOqxruHo5Ag2k0wAnIDBNq5NaTGW+H1OYzkouIR/9nnaOmY1GHXQ==",
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@pretendonetwork/boss-crypto/-/boss-crypto-1.1.3.tgz",
|
||||
"integrity": "sha512-7SJFgpR7RVsfhWL9SGMbChYrE/IOU5PmO1kWIifXSX5H6GEAIvpdV9HV1werru/pA6DyWJw0dGWlPmHvT3AWnA==",
|
||||
"license": "LGPL-3.0-only"
|
||||
},
|
||||
"node_modules/@pretendonetwork/eslint-config": {
|
||||
|
|
@ -2070,9 +2070,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@pretendonetwork/grpc": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@pretendonetwork/grpc/-/grpc-2.3.2.tgz",
|
||||
"integrity": "sha512-gnSHLHkYVgxb64chdvQGuKfAz14l6KWrjG0ch7l6YwRhnuVYMZNeUM7FNQ0zjwFKo0VAW1uI8UzGnWdzq50MOA==",
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@pretendonetwork/grpc/-/grpc-2.3.3.tgz",
|
||||
"integrity": "sha512-65QH9XneS1xQDTmZ/0XhHEXCPd4Sx3fMt9RDlCc0m7nl2LhaupkAW//GJhJ4QTGbN3gggv5JKME0ZfFqO6Pqbg==",
|
||||
"license": "AGPL-3.0-only",
|
||||
"dependencies": {
|
||||
"@bufbuild/protobuf": "^2.2.2",
|
||||
|
|
@ -10628,9 +10628,9 @@
|
|||
}
|
||||
},
|
||||
"@bufbuild/protobuf": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.9.0.tgz",
|
||||
"integrity": "sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA=="
|
||||
"version": "2.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.10.0.tgz",
|
||||
"integrity": "sha512-fdRs9PSrBF7QUntpZpq6BTw58fhgGJojgg39m9oFOJGZT+nip9b0so5cYY1oWl5pvemDLr0cPPsH46vwThEbpQ=="
|
||||
},
|
||||
"@emnapi/core": {
|
||||
"version": "1.4.5",
|
||||
|
|
@ -11286,9 +11286,9 @@
|
|||
"optional": true
|
||||
},
|
||||
"@pretendonetwork/boss-crypto": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@pretendonetwork/boss-crypto/-/boss-crypto-1.1.2.tgz",
|
||||
"integrity": "sha512-3rDp29vAmOPvQ7L/Vyqon52Wqqz2dvhDdHAOqxruHo5Ag2k0wAnIDBNq5NaTGW+H1OYzkouIR/9nnaOmY1GHXQ=="
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@pretendonetwork/boss-crypto/-/boss-crypto-1.1.3.tgz",
|
||||
"integrity": "sha512-7SJFgpR7RVsfhWL9SGMbChYrE/IOU5PmO1kWIifXSX5H6GEAIvpdV9HV1werru/pA6DyWJw0dGWlPmHvT3AWnA=="
|
||||
},
|
||||
"@pretendonetwork/eslint-config": {
|
||||
"version": "0.1.1",
|
||||
|
|
@ -11307,9 +11307,9 @@
|
|||
}
|
||||
},
|
||||
"@pretendonetwork/grpc": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@pretendonetwork/grpc/-/grpc-2.3.2.tgz",
|
||||
"integrity": "sha512-gnSHLHkYVgxb64chdvQGuKfAz14l6KWrjG0ch7l6YwRhnuVYMZNeUM7FNQ0zjwFKo0VAW1uI8UzGnWdzq50MOA==",
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@pretendonetwork/grpc/-/grpc-2.3.3.tgz",
|
||||
"integrity": "sha512-65QH9XneS1xQDTmZ/0XhHEXCPd4Sx3fMt9RDlCc0m7nl2LhaupkAW//GJhJ4QTGbN3gggv5JKME0ZfFqO6Pqbg==",
|
||||
"requires": {
|
||||
"@bufbuild/protobuf": "^2.2.2",
|
||||
"nice-grpc-common": "^2.0.2",
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.723.0",
|
||||
"@pretendonetwork/boss-crypto": "^1.1.2",
|
||||
"@pretendonetwork/grpc": "^2.3.2",
|
||||
"@pretendonetwork/boss-crypto": "^1.1.3",
|
||||
"@pretendonetwork/grpc": "^2.3.3",
|
||||
"@typegoose/auto-increment": "^4.13.0",
|
||||
"commander": "^14.0.0",
|
||||
"cron": "^4.3.3",
|
||||
|
|
|
|||
|
|
@ -252,7 +252,7 @@ export function getWUPTaskFile(bossAppID: string, taskID: string, name: string,
|
|||
return FileWUP.findOne<HydratedFileWUPDocument>(filter);
|
||||
}
|
||||
|
||||
export function getCTRTaskFileBySerialNumber(serialNumber: number): Promise<HydratedFileCTRDocument | null> {
|
||||
export function getCTRTaskFileBySerialNumber(serialNumber: bigint): Promise<HydratedFileCTRDocument | null> {
|
||||
verifyConnected();
|
||||
|
||||
return FileCTR.findOne<HydratedFileCTRDocument>({
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ const FileCTRSchema = new mongoose.Schema<IFileCTR, FileCTRModel, IFileCTRMethod
|
|||
description: String
|
||||
},
|
||||
name: String,
|
||||
serial_number: Number, // * This is effectively the predecessor of the Wii U DataID. TODO - 3DBrew says this is a uint64?
|
||||
serial_number: BigInt, // * This is effectively the predecessor of the Wii U DataID
|
||||
payload_contents: [{
|
||||
title_id: BigInt,
|
||||
content_datatype: Number,
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ export async function deleteFile(request: DeleteFileRequest, context: CallContex
|
|||
let file: HydratedFileCTRDocument | HydratedFileWUPDocument | null;
|
||||
|
||||
if (request.platformType === PlatformType.PLATFORM_TYPE_CTR) {
|
||||
file = await getCTRTaskFileBySerialNumber(Number(dataID));
|
||||
file = await getCTRTaskFileBySerialNumber(dataID);
|
||||
} else if (request.platformType === PlatformType.PLATFORM_TYPE_WUP) {
|
||||
file = await getWUPTaskFileByDataID(dataID);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ export async function listFilesCTR(request: ListFilesCTRRequest): Promise<ListFi
|
|||
return {
|
||||
files: files.map(file => ({
|
||||
deleted: file.deleted,
|
||||
dataId: BigInt(file.serial_number), // TODO - Is this okay?
|
||||
dataId: file.serial_number, // TODO - Is this okay?
|
||||
taskId: file.task_id,
|
||||
bossAppId: file.boss_app_id,
|
||||
supportedCountries: file.supported_countries,
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ export async function updateFileMetadataCTR(request: UpdateFileMetadataCTRReques
|
|||
throw new ServerError(Status.INVALID_ARGUMENT, 'Missing file update data');
|
||||
}
|
||||
|
||||
const file = await getCTRTaskFileBySerialNumber(Number(serialNumber));
|
||||
const file = await getCTRTaskFileBySerialNumber(serialNumber);
|
||||
|
||||
if (!file || file.deleted) {
|
||||
throw new ServerError(Status.INVALID_ARGUMENT, `File ${serialNumber} not found`);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { Status, ServerError } from 'nice-grpc';
|
||||
import { encrypt3DS } from '@pretendonetwork/boss-crypto';
|
||||
import { CTR_BOSS_FLAGS, encrypt3DS } from '@pretendonetwork/boss-crypto';
|
||||
import { isValidCountryCode, isValidLanguage, md5 } from '@/util';
|
||||
import { connection as databaseConnection, getTask, getCTRTaskFile } from '@/database';
|
||||
import { FileCTR } from '@/models/file-ctr';
|
||||
|
|
@ -110,10 +110,13 @@ export async function uploadFileCTR(request: UploadFileCTRRequest, context: Call
|
|||
content: payload.content
|
||||
}));
|
||||
|
||||
// TODO - Add flags here. @pretendonetwork/boss-crypto does not export CTR_BOSS_FLAGS at the moment
|
||||
let flags = 0n;
|
||||
if (request.flags?.markArrivedPrivileged) {
|
||||
flags |= CTR_BOSS_FLAGS.MARK_ARRIVED_PRIVILEGED;
|
||||
}
|
||||
|
||||
// TODO - Somehow support pre-encrypted content?
|
||||
const encryptedData = encrypt3DS(config.crypto.ctr.aes_key, BigInt(file.serial_number), cryptoOptions);
|
||||
const encryptedData = encrypt3DS(config.crypto.ctr.aes_key, file.serial_number, cryptoOptions, flags);
|
||||
const contentHash = md5(encryptedData);
|
||||
const key = `${bossAppID}/${taskID}/${contentHash}`;
|
||||
|
||||
|
|
@ -140,7 +143,7 @@ export async function uploadFileCTR(request: UploadFileCTRRequest, context: Call
|
|||
return {
|
||||
file: {
|
||||
deleted: file.deleted,
|
||||
dataId: BigInt(file.serial_number), // TODO - Is this okay?
|
||||
dataId: file.serial_number,
|
||||
taskId: file.task_id,
|
||||
bossAppId: file.boss_app_id,
|
||||
supportedCountries: file.supported_countries,
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ export interface IFileCTR {
|
|||
description: string;
|
||||
};
|
||||
name: string;
|
||||
serial_number: number; // * This is effectively the predecessor of the Wii U DataID
|
||||
serial_number: bigint; // * This is effectively the predecessor of the Wii U DataID
|
||||
payload_contents: {
|
||||
title_id: bigint;
|
||||
content_datatype: number;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user