Skip to content

Commit 9a988f6

Browse files
committed
Remove webkit vendor prefix workaround
Safari began supporting window.crypto.subtle in v10.1
1 parent 8f9ece7 commit 9a988f6

File tree

4 files changed

+13
-67
lines changed

4 files changed

+13
-67
lines changed

packages/sdk-crypto/karma.conf.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ module.exports = function(config) {
2121
logLevel: config.LOG_WARN,
2222
autoWatch: false,
2323
browsers: ['HeadlessChrome'],
24+
browserDisconnectTolerance: 3,
25+
browserNoActivityTimeout: 30000,
2426
singleRun: false,
2527
concurrency: Infinity,
2628
customLaunchers: {

packages/sdk-crypto/lib/BrowserCryptoProvider.ts

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import CryptoProvider, {ProviderOptions, SourceData} from "./CryptoProvider";
2-
import {isSafariWindow} from "./SafariWindow";
32
import isEmptyData, {emptyDataSha256} from './isEmptyData';
43

54
const SHA_256_HASH = {name: 'SHA-256'};
@@ -23,27 +22,31 @@ export default class BrowserCryptoProvider implements CryptoProvider {
2322
}
2423

2524
return this.convertToBuffer(toHash)
26-
.then<ArrayBuffer>(data => getSubtleCryptoInstance().digest(SHA_256_HASH, data))
27-
.then<Uint8Array>(buffer => new Uint8Array(buffer));
25+
.then<ArrayBuffer>(data => window.crypto.subtle.digest(
26+
SHA_256_HASH,
27+
data
28+
)).then<Uint8Array>(buffer => new Uint8Array(buffer));
2829
}
2930

3031
hmacSha256(toHash: SourceData, secret: SourceData): Promise<Uint8Array> {
3132
if (isEmptyData(secret)) {
3233
return Promise.reject('HMAC signatures cannot be generated with empty key data.');
3334
}
3435

35-
const subtle = getSubtleCryptoInstance();
36-
3736
return this.convertToBuffer(secret)
38-
.then(keyData => subtle.importKey(
37+
.then(keyData => window.crypto.subtle.importKey(
3938
'raw',
4039
keyData,
4140
SHA_256_HMAC_ALGO,
4241
false,
4342
['sign']
4443
)).then<ArrayBuffer>(key => {
4544
return this.convertToBuffer(toHash)
46-
.then(data => subtle.sign(SHA_256_HMAC_ALGO, key, data));
45+
.then(data => window.crypto.subtle.sign(
46+
SHA_256_HMAC_ALGO,
47+
key,
48+
data
49+
));
4750
}).then<Uint8Array>(buffer => new Uint8Array(buffer))
4851
}
4952

@@ -75,18 +78,3 @@ export default class BrowserCryptoProvider implements CryptoProvider {
7578
return Promise.resolve(data);
7679
}
7780
}
78-
79-
let subtle: SubtleCrypto|undefined;
80-
function getSubtleCryptoInstance(): SubtleCrypto {
81-
if (subtle) {
82-
return subtle;
83-
}
84-
85-
if (isSafariWindow(window)) {
86-
subtle = window.crypto.webkitSubtle;
87-
} else {
88-
subtle = window.crypto.subtle;
89-
}
90-
91-
return subtle;
92-
}

packages/sdk-crypto/lib/SafariWindow.ts

Lines changed: 0 additions & 43 deletions
This file was deleted.

packages/sdk-crypto/lib/browser.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import Ie11CryptoProvider from './Ie11CryptoProvider';
44
import PureJsCryptoProvider from "./PureJsCryptoProvider";
55
import supportsWebCrypto from './supportsWebCrypto';
66
import {isMsWindow} from './Ie11CryptoProvider/MsWindow';
7-
import {isSafariWindow} from "./SafariWindow";
87

98
const instanceCache: {[key: string]: CryptoProvider} = {};
109

@@ -22,7 +21,7 @@ export function getProviderInstance(
2221
function instantiateProvider(options: ProviderOptions): CryptoProvider {
2322
if (isMsWindow(window)) {
2423
return new Ie11CryptoProvider(options);
25-
} else if (supportsWebCrypto(window) || isSafariWindow(window)) {
24+
} else if (supportsWebCrypto(window)) {
2625
return new BrowserCryptoProvider(options);
2726
}
2827

0 commit comments

Comments
 (0)