Files
djhackersdev_minime/src/aimedb/pipeline.ts
T

44 lines
1010 B
TypeScript

import { createCipheriv, createDecipheriv } from "crypto";
import { Socket } from "net";
import * as stream from "stream";
import { promisify } from "util";
import { Decoder } from "./decoder";
import { Deframer } from "./frame";
import { Encoder } from "./encoder";
import { AimeRequest } from "./request";
import { AimeResponse } from "./response";
const K = Buffer.from("Copyright(C)SEGA", "utf8");
const pipeline = promisify(stream.pipeline);
export interface Session {
input: AsyncIterable<AimeRequest>;
output: {
write(res: AimeResponse): void;
};
}
function doNothing() {}
export function setup(socket: Socket): Session {
const input = new Decoder();
pipeline(
socket,
createDecipheriv("aes-128-ecb", K, null).setAutoPadding(false),
new Deframer({}),
input
).catch(doNothing);
const output = new Encoder();
pipeline(
output,
createCipheriv("aes-128-ecb", K, null).setAutoPadding(false),
socket
).catch(doNothing);
return { input, output };
}