UNPKG

mima-kit

Version:

mima-kit is a cryptographic suite implemented in TypeScript. The goal is to provide an easy-to-use cryptographic library. mima-kit 是一个使用 TypeScript 实现的密码学套件。目标是提供一个简单易用的密码学库。

47 lines (46 loc) 1.32 kB
import { U8 } from './utils'; export const ASN1 = { // 0x04 OCTET_STRING: (value) => { const buffer = new U8(value.length + 2); buffer.set([0x04, value.length], 0); buffer.set(value, 2); return buffer; }, // 0x05 NULL: () => new U8([0x05, 0x00]), // 0x06 OBJECT_IDENTIFIER: (id = '') => { const node = id.split('.').map(Number); const buffer = []; buffer.push(node[0] * 40 + node[1]); for (let i = 2; i < node.length; i++) { let n = node[i]; if (n < 128) { buffer.push(n); } else { const bytes = [n & 0x7F]; n >>= 7; while (n > 0) { bytes.unshift((n & 0x7F) | 0x80); n >>= 7; } buffer.push(...bytes); } } return new U8([0x06, buffer.length, ...buffer]); }, // 0x30 SEQUENCE: (value) => { const length = value.reduce((sum, v) => sum + v.length, 0); const buffer = new U8(length + 2); buffer.set([0x30, length], 0); let offset = 2; for (const v of value) { buffer.set(v, offset); offset += v.length; } return buffer; }, };