Skip to content

Commit ec7592e

Browse files
committed
refactor: type narrowing, replace strings with constants, remove signer from scope of this pr
1 parent a6cd55c commit ec7592e

11 files changed

+698
-1803
lines changed

src/c14n-canonicalization.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import type {
2-
CanonicalizationOrTransformationAlgorithm,
3-
CanonicalizationOrTransformationAlgorithmProcessOptions,
2+
CanonicalizationAlgorithmName,
3+
CanonicalizationAlgorithm,
4+
TransformAlgorithmOptions,
45
NamespacePrefix,
56
RenderedNamespace,
67
} from "./types";
78
import * as utils from "./utils";
89
import * as isDomNode from "@xmldom/is-dom-node";
10+
import { Algorithms } from "./constants";
911

10-
export class C14nCanonicalization implements CanonicalizationOrTransformationAlgorithm {
12+
export class C14nCanonicalization implements CanonicalizationAlgorithm {
1113
protected includeComments = false;
1214

1315
constructor() {
@@ -252,9 +254,10 @@ export class C14nCanonicalization implements CanonicalizationOrTransformationAlg
252254
* Perform canonicalization of the given node
253255
*
254256
* @param node
257+
* @param options
255258
* @api public
256259
*/
257-
process(node: Node, options: CanonicalizationOrTransformationAlgorithmProcessOptions): string {
260+
process(node: Node, options: TransformAlgorithmOptions): string {
258261
options = options || {};
259262
const defaultNs = options.defaultNs || "";
260263
const defaultNsForPrefix = options.defaultNsForPrefix || {};
@@ -275,8 +278,8 @@ export class C14nCanonicalization implements CanonicalizationOrTransformationAlg
275278
return res;
276279
}
277280

278-
getAlgorithmName() {
279-
return "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
281+
getAlgorithmName(): CanonicalizationAlgorithmName {
282+
return Algorithms.canonicalization.C14N;
280283
}
281284
}
282285

@@ -289,7 +292,7 @@ export class C14nCanonicalizationWithComments extends C14nCanonicalization {
289292
this.includeComments = true;
290293
}
291294

292-
getAlgorithmName() {
293-
return "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments";
295+
getAlgorithmName(): CanonicalizationAlgorithmName {
296+
return Algorithms.canonicalization.C14N_WITH_COMMENTS;
294297
}
295298
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,15 @@ export const Algorithms = {
4242
hash: HASH_ALGORITHMS,
4343
signature: SIGNATURE_ALGORITHMS,
4444
};
45+
46+
const NAMESPACES = {
47+
xml: "http://www.w3.org/XML/1998/namespace",
48+
xmlns: "http://www.w3.org/2000/xmlns/",
49+
ds: "http://www.w3.org/2000/09/xmldsig#",
50+
wsu: "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd",
51+
} as const;
52+
53+
/**
54+
* Commonly used namespaces
55+
*/
56+
export const Namespaces = NAMESPACES;

src/enveloped-signature.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ import * as xpath from "xpath";
22
import * as isDomNode from "@xmldom/is-dom-node";
33

44
import type {
5-
CanonicalizationOrTransformationAlgorithm,
6-
CanonicalizationOrTransformationAlgorithmProcessOptions,
7-
CanonicalizationOrTransformAlgorithmType,
5+
TransformAlgorithmOptions,
6+
TransformAlgorithm,
7+
TransformAlgorithmName,
88
} from "./types";
99

10-
export class EnvelopedSignature implements CanonicalizationOrTransformationAlgorithm {
10+
export class EnvelopedSignature implements TransformAlgorithm {
1111
protected includeComments = false;
1212

1313
constructor() {
1414
this.includeComments = false;
1515
}
1616

17-
process(node: Node, options: CanonicalizationOrTransformationAlgorithmProcessOptions): Node {
17+
process(node: Node, options: TransformAlgorithmOptions): Node {
1818
if (null == options.signatureNode) {
1919
const signature = xpath.select1(
2020
"./*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
@@ -55,7 +55,7 @@ export class EnvelopedSignature implements CanonicalizationOrTransformationAlgor
5555
return node;
5656
}
5757

58-
getAlgorithmName(): CanonicalizationOrTransformAlgorithmType {
58+
getAlgorithmName(): TransformAlgorithmName {
5959
return "http://www.w3.org/2000/09/xmldsig#enveloped-signature";
6060
}
6161
}

src/exclusive-canonicalization.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import type {
2-
CanonicalizationOrTransformationAlgorithm,
3-
CanonicalizationOrTransformationAlgorithmProcessOptions,
2+
CanonicalizationAlgorithmName,
3+
CanonicalizationAlgorithm,
4+
TransformAlgorithmOptions,
45
NamespacePrefix,
56
} from "./types";
67
import * as utils from "./utils";
78
import * as isDomNode from "@xmldom/is-dom-node";
9+
import { Algorithms } from "./constants";
810

911
function isPrefixInScope(prefixesInScope, prefix, namespaceURI) {
1012
let ret = false;
@@ -17,7 +19,7 @@ function isPrefixInScope(prefixesInScope, prefix, namespaceURI) {
1719
return ret;
1820
}
1921

20-
export class ExclusiveCanonicalization implements CanonicalizationOrTransformationAlgorithm {
22+
export class ExclusiveCanonicalization implements CanonicalizationAlgorithm {
2123
protected includeComments = false;
2224

2325
constructor() {
@@ -265,7 +267,7 @@ export class ExclusiveCanonicalization implements CanonicalizationOrTransformati
265267
*
266268
* @api public
267269
*/
268-
process(elem: Element, options: CanonicalizationOrTransformationAlgorithmProcessOptions): string {
270+
process(elem: Element, options: TransformAlgorithmOptions): string {
269271
options = options || {};
270272
let inclusiveNamespacesPrefixList = options.inclusiveNamespacesPrefixList || [];
271273
const defaultNs = options.defaultNs || "";
@@ -319,8 +321,8 @@ export class ExclusiveCanonicalization implements CanonicalizationOrTransformati
319321
return res;
320322
}
321323

322-
getAlgorithmName() {
323-
return "http://www.w3.org/2001/10/xml-exc-c14n#";
324+
getAlgorithmName(): CanonicalizationAlgorithmName {
325+
return Algorithms.canonicalization.EXCLUSIVE_C14N;
324326
}
325327
}
326328

@@ -330,7 +332,7 @@ export class ExclusiveCanonicalizationWithComments extends ExclusiveCanonicaliza
330332
this.includeComments = true;
331333
}
332334

333-
getAlgorithmName() {
334-
return "http://www.w3.org/2001/10/xml-exc-c14n#WithComments";
335+
getAlgorithmName(): CanonicalizationAlgorithmName {
336+
return Algorithms.canonicalization.EXCLUSIVE_C14N_WITH_COMMENTS;
335337
}
336338
}

src/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ export {
44
ExclusiveCanonicalizationWithComments,
55
} from "./exclusive-canonicalization";
66
export { SignedXml } from "./signed-xml";
7-
export { XmlDSigSigner } from "./xmldsig-signer";
87
export { XmlDSigValidator } from "./xmldsig-validator";
9-
export { Algorithms } from "./algorithms";
8+
export { Algorithms } from "./constants";
109
export * from "./types";
1110
export * from "./utils";

0 commit comments

Comments
 (0)