Files
NapCatQQ/.pnpm-store/v3/files/a5/2c246b52f00ee34cac9f7b771053578a03a88e627874672c278050133b4b6a654660795a635e233ae4904a1c5f223b42116c5c8a3ec508653e239e4010da29
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

90 lines
3.6 KiB
Plaintext

import * as asn1js from "asn1js";
import { OctetString } from "./types/index";
import { asnNodeToLegacyType } from "./legacy-adapter";
export const AsnAnyConverter = {
fromASN: (value) => value instanceof asn1js.Null ? null : value.valueBeforeDecodeView,
toASN: (value) => {
if (value === null) {
return new asn1js.Null();
}
const schema = asn1js.fromBER(value);
if (schema.result.error) {
throw new Error(schema.result.error);
}
return schema.result;
},
};
export const AsnIntegerConverter = {
fromASN: (value) => value.valueBlock.valueHexView.byteLength >= 4
? value.valueBlock.toString()
: value.valueBlock.valueDec,
toASN: (value) => new asn1js.Integer({ value: +value }),
};
export const AsnEnumeratedConverter = {
fromASN: (value) => value.valueBlock.valueDec,
toASN: (value) => new asn1js.Enumerated({ value }),
};
export const AsnIntegerArrayBufferConverter = {
fromASN: (value) => value.valueBlock.valueHexView,
toASN: (value) => new asn1js.Integer({ valueHex: value }),
};
export const AsnIntegerBigIntConverter = {
fromASN: (value) => value.toBigInt(),
toASN: (value) => asn1js.Integer.fromBigInt(value),
};
export const AsnBitStringConverter = {
fromASN: (value) => value.valueBlock.valueHexView,
toASN: (value) => new asn1js.BitString({ valueHex: value }),
};
export const AsnObjectIdentifierConverter = {
fromASN: (value) => value.valueBlock.toString(),
toASN: (value) => new asn1js.ObjectIdentifier({ value }),
};
export const AsnBooleanConverter = {
fromASN: (value) => value.valueBlock.value,
toASN: (value) => new asn1js.Boolean({ value }),
};
export const AsnOctetStringConverter = {
fromASN: (value) => value.valueBlock.valueHexView,
toASN: (value) => new asn1js.OctetString({ valueHex: value }),
};
export const AsnConstructedOctetStringConverter = {
fromASN: (value) => new OctetString(value.getValue()),
toASN: (value) => {
const asnNode = value.toASN();
return asnNodeToLegacyType(asnNode);
},
};
function createStringConverter(Asn1Type) {
return {
fromASN: (value) => value.valueBlock.value,
toASN: (value) => new Asn1Type({ value }),
};
}
export const AsnUtf8StringConverter = createStringConverter(asn1js.Utf8String);
export const AsnBmpStringConverter = createStringConverter(asn1js.BmpString);
export const AsnUniversalStringConverter = createStringConverter(asn1js.UniversalString);
export const AsnNumericStringConverter = createStringConverter(asn1js.NumericString);
export const AsnPrintableStringConverter = createStringConverter(asn1js.PrintableString);
export const AsnTeletexStringConverter = createStringConverter(asn1js.TeletexString);
export const AsnVideotexStringConverter = createStringConverter(asn1js.VideotexString);
export const AsnIA5StringConverter = createStringConverter(asn1js.IA5String);
export const AsnGraphicStringConverter = createStringConverter(asn1js.GraphicString);
export const AsnVisibleStringConverter = createStringConverter(asn1js.VisibleString);
export const AsnGeneralStringConverter = createStringConverter(asn1js.GeneralString);
export const AsnCharacterStringConverter = createStringConverter(asn1js.CharacterString);
export const AsnUTCTimeConverter = {
fromASN: (value) => value.toDate(),
toASN: (value) => new asn1js.UTCTime({ valueDate: value }),
};
export const AsnGeneralizedTimeConverter = {
fromASN: (value) => value.toDate(),
toASN: (value) => new asn1js.GeneralizedTime({ valueDate: value }),
};
export const AsnNullConverter = {
fromASN: () => null,
toASN: () => {
return new asn1js.Null();
},
};