diff --git a/src/interfaces/ISolidFile.ts b/src/interfaces/ISolidFile.ts index 45a3a81..e29794d 100644 --- a/src/interfaces/ISolidFile.ts +++ b/src/interfaces/ISolidFile.ts @@ -8,8 +8,8 @@ interface ISolidFile { interface ISolidFileInfo { /** List of files that are part of this torrent. */ files: ISolidFile[]; - /** Length of one piece in bytes, e.g. 65536 for 64 KiB, and 4194304 for 4 MiB. */ - 'piece length': 65536 | 4194304; + /** Length of one piece in bytes, e.g. 65536 for 64 KiB, 524288 for 512 KiB, and 4194304 for 4 MiB. */ + 'piece length': 65536 | 524288 | 4194304; /** Concatenated SHA1 hashes of all pieces, where each hash is 20 bytes long. */ pieces: string; /** Whether the torrent is private, always 0. */ diff --git a/src/ssn/verifySolidpkg.ts b/src/ssn/verifySolidpkg.ts index 96f179f..75b8200 100644 --- a/src/ssn/verifySolidpkg.ts +++ b/src/ssn/verifySolidpkg.ts @@ -41,8 +41,8 @@ export default function verifySolidpkg(file: ISolid, { product, from, to }: {pro } } - if (file.info['piece length'] !== 65536 && file.info['piece length'] !== 4194304 ) { - throw new Error(`Expected piece length to be "65536" or "4194304" but it was "${file.info['piece length']}".`); + if (!([0x1_0000, 0x8_0000, 0x40_0000]).includes(file.info['piece length'])) { + throw new Error(`Expected piece length to be "65536", "524288" or "4194304" but it was "${file.info['piece length']}".`); } if (typeof file.info.pieces !== 'string') { throw new Error(`Expected pieces to be a string but it was "${file.info.pieces}".`);