Skip to content

Commit b0541b3

Browse files
authored
Remove default for signature algorithm (#408)
1 parent b6cc9c0 commit b0541b3

File tree

5 files changed

+27
-3
lines changed

5 files changed

+27
-3
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ _Canonicalization/Transformation Algorithm:_ Exclusive Canonicalization <http://
5555

5656
_Hashing/Digest Algorithm:_ Must be specified by the user
5757

58-
_Signature Algorithm:_ RSA-SHA1 <http://www.w3.org/2000/09/xmldsig#rsa-sha1>
58+
_Signature Algorithm:_ Must be specified by the user
5959

6060
[You are able to extend xml-crypto with custom algorithms.](#customizing-algorithms)
6161

src/signed-xml.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export class SignedXml {
3737
* One of the supported signature algorithms.
3838
* @see {@link SignatureAlgorithmType}
3939
*/
40-
signatureAlgorithm: SignatureAlgorithmType = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
40+
signatureAlgorithm?: SignatureAlgorithmType = undefined;
4141
/**
4242
* Rules used to convert an XML document into its canonical form.
4343
*/
@@ -347,7 +347,10 @@ export class SignedXml {
347347
}
348348
}
349349

350-
private findSignatureAlgorithm(name: SignatureAlgorithmType) {
350+
private findSignatureAlgorithm(name?: SignatureAlgorithmType) {
351+
if (name == null) {
352+
throw new Error("signatureAlgorithm is required");
353+
}
351354
const algo = this.SignatureAlgorithms[name];
352355
if (algo) {
353356
return new algo();

test/key-info-tests.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ describe("KeyInfo tests", function () {
1212
sig.privateKey = fs.readFileSync("./test/static/client.pem");
1313
sig.publicCert = fs.readFileSync("./test/static/client_public.pem");
1414
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
15+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
1516
sig.computeSignature(xml);
1617
const signedXml = sig.getSignedXml();
1718
const doc = new xmldom.DOMParser().parseFromString(signedXml);

test/signature-integration-tests.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ describe("Signature integration tests", function () {
1515
});
1616

1717
sig.canonicalizationAlgorithm = canonicalizationAlgorithm;
18+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
1819
sig.computeSignature(xml);
1920
const signed = sig.getSignedXml();
2021

@@ -177,6 +178,7 @@ describe("Signature integration tests", function () {
177178
});
178179
sig.privateKey = fs.readFileSync("./test/static/client.pem");
179180
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
181+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
180182
sig.computeSignature(xml);
181183

182184
const signed = sig.getSignedXml();

test/signature-unit-tests.spec.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ describe("Signature unit tests", function () {
3636
});
3737

3838
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
39+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
3940
sig.computeSignature(xml);
4041
const signedXml = sig.getOriginalXmlWithIds();
4142
const doc = new xmldom.DOMParser().parseFromString(signedXml);
@@ -72,6 +73,7 @@ describe("Signature unit tests", function () {
7273
});
7374

7475
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
76+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
7577
sig.computeSignature(xml, {
7678
existingPrefixes: {
7779
wsu: "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd",
@@ -95,6 +97,7 @@ describe("Signature unit tests", function () {
9597
digestAlgorithm: "http://www.w3.org/2000/09/xmldsig#sha1",
9698
});
9799
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
100+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
98101
sig.computeSignature(xml);
99102
const signedXml = sig.getOriginalXmlWithIds();
100103
const doc = new xmldom.DOMParser().parseFromString(signedXml);
@@ -129,6 +132,7 @@ describe("Signature unit tests", function () {
129132
});
130133

131134
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
135+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
132136
sig.computeSignature(xml, {
133137
attrs: attrs,
134138
});
@@ -163,6 +167,7 @@ describe("Signature unit tests", function () {
163167
digestAlgorithm: "http://www.w3.org/2000/09/xmldsig#sha1",
164168
});
165169
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
170+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
166171
sig.computeSignature(xml);
167172

168173
const doc = new xmldom.DOMParser().parseFromString(sig.getSignedXml());
@@ -186,6 +191,7 @@ describe("Signature unit tests", function () {
186191
});
187192

188193
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
194+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
189195
sig.computeSignature(xml, {
190196
location: {
191197
reference: "/root/name",
@@ -216,6 +222,7 @@ describe("Signature unit tests", function () {
216222
});
217223

218224
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
225+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
219226
sig.computeSignature(xml, {
220227
location: {
221228
reference: "/root/name",
@@ -245,6 +252,7 @@ describe("Signature unit tests", function () {
245252
});
246253

247254
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
255+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
248256
sig.computeSignature(xml, {
249257
location: {
250258
reference: "/root/name",
@@ -275,6 +283,7 @@ describe("Signature unit tests", function () {
275283
});
276284

277285
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
286+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
278287
sig.computeSignature(xml, {
279288
location: {
280289
reference: "/root/name",
@@ -637,6 +646,7 @@ describe("Signature unit tests", function () {
637646
});
638647

639648
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
649+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
640650
sig.computeSignature(xml);
641651
const signedXml = sig.getSignedXml();
642652
const expected =
@@ -956,6 +966,7 @@ describe("Signature unit tests", function () {
956966
});
957967

958968
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
969+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
959970
sig.computeSignature(xml);
960971
const signedXml = sig.getSignedXml();
961972
const doc = new xmldom.DOMParser().parseFromString(signedXml);
@@ -1013,6 +1024,7 @@ describe("Signature unit tests", function () {
10131024
sig.getKeyInfoContent = getKeyInfoContentWithAssertionId.bind(this, { assertionId });
10141025
sig.privateKey = fs.readFileSync("./test/static/client.pem");
10151026
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
1027+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
10161028
sig.computeSignature(xml, {
10171029
prefix: "ds",
10181030
location: {
@@ -1045,6 +1057,7 @@ describe("Signature unit tests", function () {
10451057
});
10461058

10471059
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
1060+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
10481061
sig.computeSignature(xml);
10491062
const signedXml = sig.getSignedXml();
10501063

@@ -1081,6 +1094,7 @@ describe("Signature unit tests", function () {
10811094
});
10821095

10831096
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
1097+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
10841098
sig.computeSignature(xml);
10851099
const signedXml = sig.getSignedXml();
10861100

@@ -1105,6 +1119,7 @@ describe("Signature unit tests", function () {
11051119
});
11061120

11071121
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
1122+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
11081123
sig.computeSignature(xml);
11091124
const signedXml = sig.getSignedXml();
11101125

@@ -1143,6 +1158,7 @@ describe("Signature unit tests", function () {
11431158
});
11441159

11451160
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
1161+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
11461162
sig.computeSignature(xml);
11471163
const signedXml = sig.getSignedXml();
11481164

@@ -1169,6 +1185,7 @@ describe("Signature unit tests", function () {
11691185
sig.getKeyInfoContent = () => "<dummy/>";
11701186

11711187
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
1188+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
11721189
sig.computeSignature(xml);
11731190
const signedXml = sig.getSignedXml();
11741191

@@ -1200,6 +1217,7 @@ describe("Signature unit tests", function () {
12001217
sig.privateKey = pemBuffer;
12011218
sig.publicCert = pemBuffer;
12021219
sig.canonicalizationAlgorithm = "http://www.w3.org/2001/10/xml-exc-c14n#";
1220+
sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
12031221
sig.computeSignature(xml);
12041222
const signedXml = sig.getSignedXml();
12051223

0 commit comments

Comments
 (0)