Skip to content

Commit dc1bbea

Browse files
knagyBorcsa134
andcommitted
SECURITY-10891: pull in new test cases, fix tests
Co-authored-by: Borisz Juhasz <borisz.juhasz@emarsys.com>
1 parent 53eafdf commit dc1bbea

File tree

6 files changed

+16
-13
lines changed

6 files changed

+16
-13
lines changed

lib/authhelper.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@ class AuthHelper {
4444
}
4545

4646
generatePreSignedUrl(requestUrl, expires) {
47-
const parsedUrl = Utils.parseUrl(requestUrl, true); // TODO apply fixed parse here too (?)
47+
let [urlToSign, fragment] = requestUrl.split('#', 2);
48+
fragment = fragment ? `#${fragment}` : '';
49+
50+
const parsedUrl = Utils.parseUrl(urlToSign, true); // TODO apply fixed parse here too (?)
4851
const requestOptions = {
4952
host: parsedUrl.host,
5053
method: 'GET',
@@ -64,16 +67,16 @@ class AuthHelper {
6467
};
6568

6669
Object.keys(params).forEach(key => {
67-
requestUrl = Utils.appendQueryParamToUrl(requestUrl, this._getParamKey(key), params[key]);
70+
urlToSign = Utils.appendQueryParamToUrl(urlToSign, this._getParamKey(key), params[key]);
6871
});
6972

70-
requestOptions.url = Utils.parseUrl(requestUrl, true).path;
73+
requestOptions.url = Utils.parseUrl(urlToSign, true).path;
7174
const signer = new Signer(this._config, this._currentDate);
7275
const signature = signer.calculateSignature(
7376
signer.getStringToSign(requestOptions, 'UNSIGNED-PAYLOAD', headersToSign),
7477
signer.calculateSigningKey()
7578
);
76-
return Utils.appendQueryParamToUrl(requestUrl, this._getParamKey('Signature'), signature);
79+
return Utils.appendQueryParamToUrl(urlToSign, this._getParamKey('Signature'), signature) + fragment;
7780
}
7881

7982
_getParamKey(paramName) {

lib/escher.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class Escher {
1212
const config = Utils.mergeOptions(
1313
{
1414
algoPrefix: 'ESR',
15-
vendorKey: 'ESCHER',
15+
vendorKey: 'Escher',
1616
hashAlgo: 'SHA256',
1717
credentialScope: 'escher_request',
1818
authHeaderName: 'X-Escher-Auth',
@@ -23,8 +23,8 @@ class Escher {
2323
);
2424

2525
// validate the configuration
26-
if (typeof config.vendorKey !== 'string' || config.vendorKey !== config.vendorKey.toUpperCase()) {
27-
throw new Error('Vendor key should be an uppercase string');
26+
if (typeof config.vendorKey !== 'string') {
27+
throw new Error('Vendor key should be a string');
2828
}
2929

3030
if (typeof config.algoPrefix !== 'string') {

spec/auth-helper.tape.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function runAuthHelperTests(testCases) {
1111
}
1212

1313
function runGenerateHeaderTape({ test, group, file }) {
14-
if (test.expected.authHeader) {
14+
if (test.config.hashAlgo && test.expected.authHeader) {
1515
tape(`[${group}] ${file} | AuthHelper #generateHeader`, t => {
1616
const authHeader = new AuthHelper(test.config, new Date(test.config.date)).generateHeader(
1717
test.request,

spec/date-handling.tape.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ function runDateHandlingTests() {
6060

6161
const signedUrl = escher.preSignUrl(urlToSign, 60);
6262
const query = querystring.parse(Utils.parseUrl(signedUrl).query);
63-
const date = query['X-ESCHER-Date'];
63+
const date = query['X-Escher-Date'];
6464

6565
t.equal(date, '19780210T010203Z');
6666
t.end();
@@ -74,11 +74,11 @@ function runDateHandlingTests() {
7474

7575
const firstSignedUrl = escher.preSignUrl(urlToSign, 60);
7676
const firstQuery = querystring.parse(Utils.parseUrl(firstSignedUrl).query);
77-
const firstDate = firstQuery['X-ESCHER-Date'];
77+
const firstDate = firstQuery['X-Escher-Date'];
7878
clock.tick(1000);
7979
const secondSignedUrl = escher.preSignUrl(urlToSign, 60);
8080
const secondQuery = querystring.parse(Utils.parseUrl(secondSignedUrl).query);
81-
const secondDate = secondQuery['X-ESCHER-Date'];
81+
const secondDate = secondQuery['X-Escher-Date'];
8282

8383
t.equal(firstDate, '19780210T010203Z');
8484
t.equal(secondDate, '19780210T010204Z');

spec/signer.tape.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function runSignerTests(testCases) {
1111
}
1212

1313
function runGetStringToSignTape({ test, group, file }) {
14-
if (test.expected.stringToSign) {
14+
if (test.config.hashAlgo && test.expected.stringToSign) {
1515
tape(`[${group}] ${file} | Signer #getStringToSign`, t => {
1616
const stringToSign = new Signer(test.config, new Date(test.config.date)).getStringToSign(
1717
test.request,

0 commit comments

Comments
 (0)