Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/openpgpjs/openpgpjs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHexagon <robinnilsson@gmail.com>2021-12-07 16:07:46 +0300
committerGitHub <noreply@github.com>2021-12-07 16:07:46 +0300
commitce5174dd2135d73daed30fd429e0695a52f8843c (patch)
tree0bac5ee1913c3590eeb41f3b44bfcb64f1a34d81
parentd6139daa79accba980796a78454f5db17b38fdbf (diff)
Initial Deno support (#1448)
-rw-r--r--README.md9
-rw-r--r--src/crypto/hash/index.js2
-rw-r--r--src/crypto/mode/eax.js2
-rw-r--r--src/crypto/mode/gcm.js4
-rw-r--r--test/worker/application_worker.js2
5 files changed, 14 insertions, 5 deletions
diff --git a/README.md b/README.md
index 6b8660bd..ce3cc1de 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,7 @@ OpenPGP.js [![BrowserStack Status](https://automate.browserstack.com/badge.svg?b
- [Performance](#performance)
- [Getting started](#getting-started)
- [Node.js](#nodejs)
+ - [Deno (experimental)](#deno-experimental)
- [Browser (webpack)](#browser-webpack)
- [Browser (plain files)](#browser-plain-files)
- [Examples](#examples)
@@ -109,6 +110,14 @@ Or as an ES6 module, from an .mjs file:
import * as openpgp from 'openpgp';
```
+#### Deno (experimental)
+
+Import as an ES6 module, using /dist/openpgp.mjs.
+
+```js
+import * as openpgp from './openpgpjs/dist/openpgp.mjs';
+```
+
#### Browser (webpack)
Install OpenPGP.js using npm and save it in your devDependencies:
diff --git a/src/crypto/hash/index.js b/src/crypto/hash/index.js
index cfec8d38..33cd4c08 100644
--- a/src/crypto/hash/index.js
+++ b/src/crypto/hash/index.js
@@ -77,7 +77,7 @@ if (nodeCrypto) { // Use Node native crypto for all hash functions
} else { // Use JS fallbacks
hashFunctions = {
md5: md5,
- sha1: asmcryptoHash(Sha1, navigator.userAgent.indexOf('Edge') === -1 && 'SHA-1'),
+ sha1: asmcryptoHash(Sha1, (!navigator.userAgent || navigator.userAgent.indexOf('Edge') === -1) && 'SHA-1'),
sha224: hashjsHash(sha224),
sha256: asmcryptoHash(Sha256, 'SHA-256'),
sha384: hashjsHash(sha384, 'SHA-384'),
diff --git a/src/crypto/mode/eax.js b/src/crypto/mode/eax.js
index cf68c460..024ea6f7 100644
--- a/src/crypto/mode/eax.js
+++ b/src/crypto/mode/eax.js
@@ -51,7 +51,7 @@ async function CTR(key) {
if (
util.getWebCrypto() &&
key.length !== 24 && // WebCrypto (no 192 bit support) see: https://www.chromium.org/blink/webcrypto#TOC-AES-support
- navigator.userAgent.indexOf('Edge') === -1
+ (!navigator.userAgent || navigator.userAgent.indexOf('Edge') === -1)
) {
key = await webCrypto.importKey('raw', key, { name: 'AES-CTR', length: key.length * 8 }, false, ['encrypt']);
return async function(pt, iv) {
diff --git a/src/crypto/mode/gcm.js b/src/crypto/mode/gcm.js
index 424b7e1a..1155cfe1 100644
--- a/src/crypto/mode/gcm.js
+++ b/src/crypto/mode/gcm.js
@@ -56,7 +56,7 @@ async function GCM(cipher, key) {
!pt.length ||
// iOS does not support GCM-en/decrypting empty messages
// Also, synchronous en/decryption might be faster in this case.
- (!adata.length && navigator.userAgent.indexOf('Edge') !== -1)
+ (!adata.length && navigator.userAgent && navigator.userAgent.indexOf('Edge') !== -1)
// Edge does not support GCM-en/decrypting without ADATA
) {
return AES_GCM.encrypt(pt, key, iv, adata);
@@ -70,7 +70,7 @@ async function GCM(cipher, key) {
ct.length === tagLength ||
// iOS does not support GCM-en/decrypting empty messages
// Also, synchronous en/decryption might be faster in this case.
- (!adata.length && navigator.userAgent.indexOf('Edge') !== -1)
+ (!adata.length && navigator.userAgent && navigator.userAgent.indexOf('Edge') !== -1)
// Edge does not support GCM-en/decrypting without ADATA
) {
return AES_GCM.decrypt(ct, key, iv, adata);
diff --git a/test/worker/application_worker.js b/test/worker/application_worker.js
index f40dd9f5..e34188b2 100644
--- a/test/worker/application_worker.js
+++ b/test/worker/application_worker.js
@@ -12,7 +12,7 @@ module.exports = () => tryTests('Application Worker', tests, {
function tests() {
it('Should support loading OpenPGP.js from inside a Web Worker', async function() {
- if (/Edge/.test(navigator.userAgent)) {
+ if (navigator.userAgent && /Edge/.test(navigator.userAgent)) {
this.skip(); // Old Edge doesn't support crypto.getRandomValues inside a Worker.
}
try {