Upload via GUI (7543 Dateien)
This commit is contained in:
+25
@@ -0,0 +1,25 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.AsnConvert = void 0;
|
||||
const tslib_1 = require("tslib");
|
||||
const asn1js = tslib_1.__importStar(require("asn1js"));
|
||||
const utils_1 = require("@peculiar/utils");
|
||||
const parser_1 = require("./parser");
|
||||
const serializer_1 = require("./serializer");
|
||||
class AsnConvert {
|
||||
static serialize(obj) {
|
||||
return serializer_1.AsnSerializer.serialize(obj);
|
||||
}
|
||||
static parse(data, target, options) {
|
||||
return parser_1.AsnParser.parse(data, target, options);
|
||||
}
|
||||
static toString(data, options) {
|
||||
const buf = (0, utils_1.isBufferSource)(data) ? (0, utils_1.toArrayBuffer)(data) : AsnConvert.serialize(data);
|
||||
const asn = asn1js.fromBER(buf, options?.berOptions);
|
||||
if (asn.offset === -1) {
|
||||
throw new Error(`Cannot decode ASN.1 data. ${asn.result.error}`);
|
||||
}
|
||||
return asn.result.toString();
|
||||
}
|
||||
}
|
||||
exports.AsnConvert = AsnConvert;
|
||||
+148
@@ -0,0 +1,148 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.AsnNullConverter = exports.AsnGeneralizedTimeConverter = exports.AsnUTCTimeConverter = exports.AsnCharacterStringConverter = exports.AsnGeneralStringConverter = exports.AsnVisibleStringConverter = exports.AsnGraphicStringConverter = exports.AsnIA5StringConverter = exports.AsnVideotexStringConverter = exports.AsnTeletexStringConverter = exports.AsnPrintableStringConverter = exports.AsnNumericStringConverter = exports.AsnUniversalStringConverter = exports.AsnBmpStringConverter = exports.AsnUtf8StringConverter = exports.AsnConstructedOctetStringConverter = exports.AsnOctetStringConverter = exports.AsnBooleanConverter = exports.AsnRelativeObjectIdentifierConverter = exports.AsnObjectIdentifierConverter = exports.AsnBitStringConverter = exports.AsnIntegerBigIntConverter = exports.AsnIntegerArrayBufferConverter = exports.AsnEnumeratedConverter = exports.AsnIntegerConverter = exports.AsnAnyConverter = void 0;
|
||||
exports.defaultConverter = defaultConverter;
|
||||
const tslib_1 = require("tslib");
|
||||
const asn1js = tslib_1.__importStar(require("asn1js"));
|
||||
const utils_1 = require("@peculiar/utils");
|
||||
const enums_1 = require("./enums");
|
||||
const index_1 = require("./types/index");
|
||||
exports.AsnAnyConverter = {
|
||||
fromASN: (value) => (value instanceof asn1js.Null ? null : (0, utils_1.toArrayBuffer)(value.valueBeforeDecodeView)),
|
||||
toASN: (value) => {
|
||||
if (value === null) {
|
||||
return new asn1js.Null();
|
||||
}
|
||||
const schema = asn1js.fromBER(value, { maxDepth: Infinity, maxNodes: Infinity, maxContentLength: Infinity });
|
||||
if (schema.result.error) {
|
||||
throw new Error(schema.result.error);
|
||||
}
|
||||
return schema.result;
|
||||
},
|
||||
};
|
||||
exports.AsnIntegerConverter = {
|
||||
fromASN: (value) => value.valueBlock.valueHexView.byteLength >= 4
|
||||
? value.valueBlock.toString()
|
||||
: value.valueBlock.valueDec,
|
||||
toASN: (value) => new asn1js.Integer({ value: +value }),
|
||||
};
|
||||
exports.AsnEnumeratedConverter = {
|
||||
fromASN: (value) => value.valueBlock.valueDec,
|
||||
toASN: (value) => new asn1js.Enumerated({ value }),
|
||||
};
|
||||
exports.AsnIntegerArrayBufferConverter = {
|
||||
fromASN: (value) => (0, utils_1.toArrayBuffer)(value.valueBlock.valueHexView),
|
||||
toASN: (value) => new asn1js.Integer({ valueHex: value }),
|
||||
};
|
||||
exports.AsnIntegerBigIntConverter = {
|
||||
fromASN: (value) => value.toBigInt(),
|
||||
toASN: (value) => asn1js.Integer.fromBigInt(value),
|
||||
};
|
||||
exports.AsnBitStringConverter = {
|
||||
fromASN: (value) => (0, utils_1.toArrayBuffer)(value.valueBlock.valueHexView),
|
||||
toASN: (value) => new asn1js.BitString({ valueHex: value }),
|
||||
};
|
||||
exports.AsnObjectIdentifierConverter = {
|
||||
fromASN: (value) => value.valueBlock.toString(),
|
||||
toASN: (value) => new asn1js.ObjectIdentifier({ value }),
|
||||
};
|
||||
exports.AsnRelativeObjectIdentifierConverter = {
|
||||
fromASN: (value) => value.valueBlock.toString(),
|
||||
toASN: (value) => new asn1js.RelativeObjectIdentifier({ value }),
|
||||
};
|
||||
exports.AsnBooleanConverter = {
|
||||
fromASN: (value) => value.valueBlock.value,
|
||||
toASN: (value) => new asn1js.Boolean({ value }),
|
||||
};
|
||||
exports.AsnOctetStringConverter = {
|
||||
fromASN: (value) => (0, utils_1.toArrayBuffer)(value.valueBlock.valueHexView),
|
||||
toASN: (value) => new asn1js.OctetString({ valueHex: value }),
|
||||
};
|
||||
exports.AsnConstructedOctetStringConverter = {
|
||||
fromASN: (value) => new index_1.OctetString(value.getValue()),
|
||||
toASN: (value) => value.toASN(),
|
||||
};
|
||||
function createStringConverter(Asn1Type) {
|
||||
return {
|
||||
fromASN: (value) => value.valueBlock.value,
|
||||
toASN: (value) => new Asn1Type({ value }),
|
||||
};
|
||||
}
|
||||
exports.AsnUtf8StringConverter = createStringConverter(asn1js.Utf8String);
|
||||
exports.AsnBmpStringConverter = createStringConverter(asn1js.BmpString);
|
||||
exports.AsnUniversalStringConverter = createStringConverter(asn1js.UniversalString);
|
||||
exports.AsnNumericStringConverter = createStringConverter(asn1js.NumericString);
|
||||
exports.AsnPrintableStringConverter = createStringConverter(asn1js.PrintableString);
|
||||
exports.AsnTeletexStringConverter = createStringConverter(asn1js.TeletexString);
|
||||
exports.AsnVideotexStringConverter = createStringConverter(asn1js.VideotexString);
|
||||
exports.AsnIA5StringConverter = createStringConverter(asn1js.IA5String);
|
||||
exports.AsnGraphicStringConverter = createStringConverter(asn1js.GraphicString);
|
||||
exports.AsnVisibleStringConverter = createStringConverter(asn1js.VisibleString);
|
||||
exports.AsnGeneralStringConverter = createStringConverter(asn1js.GeneralString);
|
||||
exports.AsnCharacterStringConverter = createStringConverter(asn1js.CharacterString);
|
||||
exports.AsnUTCTimeConverter = {
|
||||
fromASN: (value) => value.toDate(),
|
||||
toASN: (value) => new asn1js.UTCTime({ valueDate: value }),
|
||||
};
|
||||
exports.AsnGeneralizedTimeConverter = {
|
||||
fromASN: (value) => value.toDate(),
|
||||
toASN: (value) => new asn1js.GeneralizedTime({ valueDate: value }),
|
||||
};
|
||||
exports.AsnNullConverter = {
|
||||
fromASN: () => null,
|
||||
toASN: () => {
|
||||
return new asn1js.Null();
|
||||
},
|
||||
};
|
||||
function defaultConverter(type) {
|
||||
switch (type) {
|
||||
case enums_1.AsnPropTypes.Any:
|
||||
return exports.AsnAnyConverter;
|
||||
case enums_1.AsnPropTypes.BitString:
|
||||
return exports.AsnBitStringConverter;
|
||||
case enums_1.AsnPropTypes.BmpString:
|
||||
return exports.AsnBmpStringConverter;
|
||||
case enums_1.AsnPropTypes.Boolean:
|
||||
return exports.AsnBooleanConverter;
|
||||
case enums_1.AsnPropTypes.CharacterString:
|
||||
return exports.AsnCharacterStringConverter;
|
||||
case enums_1.AsnPropTypes.Enumerated:
|
||||
return exports.AsnEnumeratedConverter;
|
||||
case enums_1.AsnPropTypes.GeneralString:
|
||||
return exports.AsnGeneralStringConverter;
|
||||
case enums_1.AsnPropTypes.GeneralizedTime:
|
||||
return exports.AsnGeneralizedTimeConverter;
|
||||
case enums_1.AsnPropTypes.GraphicString:
|
||||
return exports.AsnGraphicStringConverter;
|
||||
case enums_1.AsnPropTypes.IA5String:
|
||||
return exports.AsnIA5StringConverter;
|
||||
case enums_1.AsnPropTypes.Integer:
|
||||
return exports.AsnIntegerConverter;
|
||||
case enums_1.AsnPropTypes.Null:
|
||||
return exports.AsnNullConverter;
|
||||
case enums_1.AsnPropTypes.NumericString:
|
||||
return exports.AsnNumericStringConverter;
|
||||
case enums_1.AsnPropTypes.ObjectIdentifier:
|
||||
return exports.AsnObjectIdentifierConverter;
|
||||
case enums_1.AsnPropTypes.RelativeObjectIdentifier:
|
||||
return exports.AsnRelativeObjectIdentifierConverter;
|
||||
case enums_1.AsnPropTypes.OctetString:
|
||||
return exports.AsnOctetStringConverter;
|
||||
case enums_1.AsnPropTypes.PrintableString:
|
||||
return exports.AsnPrintableStringConverter;
|
||||
case enums_1.AsnPropTypes.TeletexString:
|
||||
return exports.AsnTeletexStringConverter;
|
||||
case enums_1.AsnPropTypes.UTCTime:
|
||||
return exports.AsnUTCTimeConverter;
|
||||
case enums_1.AsnPropTypes.UniversalString:
|
||||
return exports.AsnUniversalStringConverter;
|
||||
case enums_1.AsnPropTypes.Utf8String:
|
||||
return exports.AsnUtf8StringConverter;
|
||||
case enums_1.AsnPropTypes.VideotexString:
|
||||
return exports.AsnVideotexStringConverter;
|
||||
case enums_1.AsnPropTypes.VisibleString:
|
||||
return exports.AsnVisibleStringConverter;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.AsnProp = exports.AsnSequenceType = exports.AsnSetType = exports.AsnChoiceType = exports.AsnType = void 0;
|
||||
const tslib_1 = require("tslib");
|
||||
const converters = tslib_1.__importStar(require("./converters"));
|
||||
const enums_1 = require("./enums");
|
||||
const storage_1 = require("./storage");
|
||||
const AsnType = (options) => (target) => {
|
||||
let schema;
|
||||
if (!storage_1.schemaStorage.has(target)) {
|
||||
schema = storage_1.schemaStorage.createDefault(target);
|
||||
storage_1.schemaStorage.set(target, schema);
|
||||
}
|
||||
else {
|
||||
schema = storage_1.schemaStorage.get(target);
|
||||
}
|
||||
Object.assign(schema, options);
|
||||
};
|
||||
exports.AsnType = AsnType;
|
||||
const AsnChoiceType = () => (0, exports.AsnType)({ type: enums_1.AsnTypeTypes.Choice });
|
||||
exports.AsnChoiceType = AsnChoiceType;
|
||||
const AsnSetType = (options) => (0, exports.AsnType)({
|
||||
type: enums_1.AsnTypeTypes.Set,
|
||||
...options,
|
||||
});
|
||||
exports.AsnSetType = AsnSetType;
|
||||
const AsnSequenceType = (options) => (0, exports.AsnType)({
|
||||
type: enums_1.AsnTypeTypes.Sequence,
|
||||
...options,
|
||||
});
|
||||
exports.AsnSequenceType = AsnSequenceType;
|
||||
const AsnProp = (options) => (target, propertyKey) => {
|
||||
let schema;
|
||||
if (!storage_1.schemaStorage.has(target.constructor)) {
|
||||
schema = storage_1.schemaStorage.createDefault(target.constructor);
|
||||
storage_1.schemaStorage.set(target.constructor, schema);
|
||||
}
|
||||
else {
|
||||
schema = storage_1.schemaStorage.get(target.constructor);
|
||||
}
|
||||
const copyOptions = Object.assign({}, options);
|
||||
if (typeof copyOptions.type === "number" && !copyOptions.converter) {
|
||||
const defaultConverter = converters.defaultConverter(options.type);
|
||||
if (!defaultConverter) {
|
||||
throw new Error(`Cannot get default converter for property '${propertyKey}' of ${target.constructor.name}`);
|
||||
}
|
||||
copyOptions.converter = defaultConverter;
|
||||
}
|
||||
copyOptions.raw = options.raw;
|
||||
schema.items[propertyKey] = copyOptions;
|
||||
};
|
||||
exports.AsnProp = AsnProp;
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.AsnPropTypes = exports.AsnTypeTypes = void 0;
|
||||
var AsnTypeTypes;
|
||||
(function (AsnTypeTypes) {
|
||||
AsnTypeTypes[AsnTypeTypes["Sequence"] = 0] = "Sequence";
|
||||
AsnTypeTypes[AsnTypeTypes["Set"] = 1] = "Set";
|
||||
AsnTypeTypes[AsnTypeTypes["Choice"] = 2] = "Choice";
|
||||
})(AsnTypeTypes || (exports.AsnTypeTypes = AsnTypeTypes = {}));
|
||||
var AsnPropTypes;
|
||||
(function (AsnPropTypes) {
|
||||
AsnPropTypes[AsnPropTypes["Any"] = 1] = "Any";
|
||||
AsnPropTypes[AsnPropTypes["Boolean"] = 2] = "Boolean";
|
||||
AsnPropTypes[AsnPropTypes["OctetString"] = 3] = "OctetString";
|
||||
AsnPropTypes[AsnPropTypes["BitString"] = 4] = "BitString";
|
||||
AsnPropTypes[AsnPropTypes["Integer"] = 5] = "Integer";
|
||||
AsnPropTypes[AsnPropTypes["Enumerated"] = 6] = "Enumerated";
|
||||
AsnPropTypes[AsnPropTypes["ObjectIdentifier"] = 7] = "ObjectIdentifier";
|
||||
AsnPropTypes[AsnPropTypes["Utf8String"] = 8] = "Utf8String";
|
||||
AsnPropTypes[AsnPropTypes["BmpString"] = 9] = "BmpString";
|
||||
AsnPropTypes[AsnPropTypes["UniversalString"] = 10] = "UniversalString";
|
||||
AsnPropTypes[AsnPropTypes["NumericString"] = 11] = "NumericString";
|
||||
AsnPropTypes[AsnPropTypes["PrintableString"] = 12] = "PrintableString";
|
||||
AsnPropTypes[AsnPropTypes["TeletexString"] = 13] = "TeletexString";
|
||||
AsnPropTypes[AsnPropTypes["VideotexString"] = 14] = "VideotexString";
|
||||
AsnPropTypes[AsnPropTypes["IA5String"] = 15] = "IA5String";
|
||||
AsnPropTypes[AsnPropTypes["GraphicString"] = 16] = "GraphicString";
|
||||
AsnPropTypes[AsnPropTypes["VisibleString"] = 17] = "VisibleString";
|
||||
AsnPropTypes[AsnPropTypes["GeneralString"] = 18] = "GeneralString";
|
||||
AsnPropTypes[AsnPropTypes["CharacterString"] = 19] = "CharacterString";
|
||||
AsnPropTypes[AsnPropTypes["UTCTime"] = 20] = "UTCTime";
|
||||
AsnPropTypes[AsnPropTypes["GeneralizedTime"] = 21] = "GeneralizedTime";
|
||||
AsnPropTypes[AsnPropTypes["DATE"] = 22] = "DATE";
|
||||
AsnPropTypes[AsnPropTypes["TimeOfDay"] = 23] = "TimeOfDay";
|
||||
AsnPropTypes[AsnPropTypes["DateTime"] = 24] = "DateTime";
|
||||
AsnPropTypes[AsnPropTypes["Duration"] = 25] = "Duration";
|
||||
AsnPropTypes[AsnPropTypes["TIME"] = 26] = "TIME";
|
||||
AsnPropTypes[AsnPropTypes["Null"] = 27] = "Null";
|
||||
AsnPropTypes[AsnPropTypes["RelativeObjectIdentifier"] = 28] = "RelativeObjectIdentifier";
|
||||
})(AsnPropTypes || (exports.AsnPropTypes = AsnPropTypes = {}));
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const tslib_1 = require("tslib");
|
||||
tslib_1.__exportStar(require("./schema_validation"), exports);
|
||||
Reference in New Issue
Block a user