Skip to content

Commit d280662

Browse files
committed
feat: expose asn1 parse options
1 parent 96e21d4 commit d280662

11 files changed

Lines changed: 269 additions & 141 deletions

package-lock.json

Lines changed: 96 additions & 96 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,14 @@
7070
"vitest": "^4.0.9"
7171
},
7272
"dependencies": {
73-
"@peculiar/asn1-cms": "^2.6.0",
74-
"@peculiar/asn1-csr": "^2.6.0",
75-
"@peculiar/asn1-ecc": "^2.6.0",
76-
"@peculiar/asn1-pkcs9": "^2.6.0",
77-
"@peculiar/asn1-rsa": "^2.6.0",
78-
"@peculiar/asn1-schema": "^2.6.0",
79-
"@peculiar/asn1-x509": "^2.6.0",
80-
"@peculiar/asn1-x509-post-quantum": "^2.7.0",
73+
"@peculiar/asn1-cms": "^2.8.0",
74+
"@peculiar/asn1-csr": "^2.8.0",
75+
"@peculiar/asn1-ecc": "^2.8.0",
76+
"@peculiar/asn1-pkcs9": "^2.8.0",
77+
"@peculiar/asn1-rsa": "^2.8.0",
78+
"@peculiar/asn1-schema": "^2.8.0",
79+
"@peculiar/asn1-x509": "^2.8.0",
80+
"@peculiar/asn1-x509-post-quantum": "^2.8.0",
8181
"pvtsutils": "^1.3.6",
8282
"tslib": "^2.8.1",
8383
"tsyringe": "^4.10.0"

src/asn_data.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
import {
66
TextConverter, TextObject, TextObjectConvertible,
77
} from "./text_converter";
8+
import { ParseOptions } from "./types";
89

910
export type AsnDataStringFormat = "asn" | "text" | "hex" | "base64" | "base64url";
1011

@@ -16,6 +17,18 @@ export abstract class AsnData<T> implements TextObjectConvertible {
1617

1718
#rawData!: ArrayBuffer;
1819

20+
/**
21+
* ASN.1 parse options
22+
*/
23+
#options?: ParseOptions;
24+
25+
/**
26+
* Gets the ASN.1 parse options the instance was created with
27+
*/
28+
protected get parseOptions(): ParseOptions | undefined {
29+
return this.#options;
30+
}
31+
1932
/**
2033
* Gets a DER encoded buffer
2134
*/
@@ -37,16 +50,17 @@ export abstract class AsnData<T> implements TextObjectConvertible {
3750
* @param raw DER encoded buffer
3851
* @param type ASN.1 convertible class for `@peculiar/asn1-schema` schema
3952
*/
40-
public constructor(raw: BufferSource, type: new() => T);
53+
public constructor(raw: BufferSource, type: new() => T, options?: ParseOptions);
4154
/**
4255
* ASN.1 object
4356
* @param asn
4457
*/
4558
public constructor(asn: T);
4659
public constructor(...args: any[]) {
4760
if (BufferSourceConverter.isBufferSource(args[0])) {
48-
// raw, type
49-
this.asn = AsnConvert.parse<T>(args[0], args[1]);
61+
// raw, type, options?
62+
this.#options = args[2];
63+
this.asn = AsnConvert.parse<T>(args[0], args[1], args[2]);
5064
this.#rawData = BufferSourceConverter.toArrayBuffer(args[0]);
5165
this.onInit(this.asn);
5266
} else {
@@ -77,7 +91,7 @@ export abstract class AsnData<T> implements TextObjectConvertible {
7791
public toString(format: AsnDataStringFormat = "text"): string {
7892
switch (format) {
7993
case "asn":
80-
return AsnConvert.toString(this.rawData);
94+
return AsnConvert.toString(this.rawData, this.#options);
8195
case "text":
8296
return TextConverter.serialize(this.toTextObject());
8397
case "hex":

src/pem_data.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { BufferSourceConverter, Convert } from "pvtsutils";
22
import { AsnData, AsnDataStringFormat } from "./asn_data";
3+
import { ParseOptions } from "./types";
34
import { PemConverter } from "./pem_converter";
45

56
export type AsnExportType = "pem" | AsnDataStringFormat;
@@ -61,15 +62,15 @@ export abstract class PemData<T> extends AsnData<T> {
6162
* @param raw Encoded buffer (DER, PEM, HEX, Base64, Base64Url)
6263
* @param type ASN.1 convertible class for `@peculiar/asn1-schema` schema
6364
*/
64-
public constructor(raw: AsnEncodedType, type: new() => T);
65+
public constructor(raw: AsnEncodedType, type: new() => T, options?: ParseOptions);
6566
/**
6667
* Creates a new instance
6768
* @param asn ASN.1 object
6869
*/
6970
public constructor(asn: T);
7071
public constructor(...args: any[]) {
7172
if (PemData.isAsnEncoded(args[0])) {
72-
super(PemData.toArrayBuffer(args[0]), args[1]);
73+
super(PemData.toArrayBuffer(args[0]), args[1], args[2]);
7374
} else {
7475
super(args[0]);
7576
}

0 commit comments

Comments
 (0)