mirror of
https://git.um-react.app/um/um-react.git
synced 2025-11-28 03:23:02 +00:00
29 lines
986 B
TypeScript
29 lines
986 B
TypeScript
import { transformBlob } from '~/decrypt-worker/util/transformBlob';
|
|
import type { CryptoBase } from '../CryptoBase';
|
|
import { KWM_KEY } from './kwm.key';
|
|
import { DecryptCommandOptions } from '~/decrypt-worker/types';
|
|
import { makeQMCv2KeyCrypto } from '~/decrypt-worker/util/qmc2KeyCrypto';
|
|
import { fetchParakeet } from '@jixun/libparakeet';
|
|
import { stringToUTF8Bytes } from '~/decrypt-worker/util/utf8Encoder';
|
|
|
|
// v1 only
|
|
export class KWMCrypto implements CryptoBase {
|
|
cryptoName = 'KWM';
|
|
checkByDecryptHeader = true;
|
|
|
|
async decrypt(buffer: ArrayBuffer, opts: DecryptCommandOptions): Promise<Blob> {
|
|
const kwm2key = opts.kwm2key ?? '';
|
|
|
|
const parakeet = await fetchParakeet();
|
|
const keyCrypto = makeQMCv2KeyCrypto(parakeet);
|
|
return transformBlob(buffer, (p) => p.make.KuwoKWMv2(KWM_KEY, stringToUTF8Bytes(kwm2key), keyCrypto), {
|
|
cleanup: () => keyCrypto.delete(),
|
|
parakeet,
|
|
});
|
|
}
|
|
|
|
public static make() {
|
|
return new KWMCrypto();
|
|
}
|
|
}
|