chore(repo): initialize WebDrop monorepo
Signed-off-by: JustMe <mr.toing@outlook.com>
This commit is contained in:
commit
53768a195d
39 files changed
+9063
No files matched your search
@@ -0,0 +1,49 @@
|
||||
/** 协议常量,与 docs/protocol.md 一一对应。 */
|
||||
|
||||
export const PROTOCOL_VERSION = 1;
|
||||
|
||||
export const ID_SIZE = 16;
|
||||
export const KEY_SIZE = 32;
|
||||
export const TAG_SIZE = 16;
|
||||
export const HEADER_SIZE = 26;
|
||||
|
||||
/** 帧标志(protocol §4)。 */
|
||||
export const Flags = {
|
||||
Final: 1,
|
||||
Snapshot: 2,
|
||||
Gated: 4,
|
||||
Enc: 8,
|
||||
} as const;
|
||||
|
||||
/** 档位 padding 的明文长度(protocol §6)。 */
|
||||
export const TIERS = [1024, 4096, 16384, 65536, 262144, 1048576] as const;
|
||||
|
||||
/** 单帧明文上限 1 MiB,含 4 字节长度前缀,所以 data 最多 1,048,572 字节。 */
|
||||
export const MAX_FRAME_PLAINTEXT = 1048576;
|
||||
export const MAX_FRAME_DATA = MAX_FRAME_PLAINTEXT - 4;
|
||||
|
||||
/** raw 模式的负载没有加密开销,单帧上限取 1 MiB。 */
|
||||
export const RAW_MAX_PAYLOAD = 1048576;
|
||||
|
||||
/** HKDF info 标签(protocol §3)。 */
|
||||
export const Labels = {
|
||||
enc: 'webdrop/v1/enc',
|
||||
read: 'webdrop/v1/token/read',
|
||||
write: 'webdrop/v1/token/write',
|
||||
owner: 'webdrop/v1/token/owner',
|
||||
item: 'webdrop/v1/item',
|
||||
label: 'webdrop/v1/label',
|
||||
} as const;
|
||||
|
||||
/** AAD 前缀。 */
|
||||
export const AAD_FRAME = 'WD1';
|
||||
export const AAD_LABEL = 'WD1L';
|
||||
|
||||
/** 设备名总长上限(iv + 密文 + tag),与服务端 MaxSeatLabelBytes 一致。 */
|
||||
export const MAX_LABEL_BYTES = 256;
|
||||
export const LABEL_IV_SIZE = 12;
|
||||
|
||||
export const POW_NONCE_SIZE = 8;
|
||||
|
||||
export type ChannelMode = 'enc' | 'raw';
|
||||
export type ItemKind = 'text' | 'json' | 'file' | 'other';
|
||||
Reference in new issue
Block a user