Commit Graph

1289 Commits

Author SHA1 Message Date
Daniel Huigens
4bbbdaee9f Rename stream.subarray() to stream.slice()
Also, support ReadableStream[String] in stream.* and reader.* functions
2018-08-10 14:46:22 +02:00
Daniel Huigens
56ec5b3a8d Don't keep extra copies of streams in memory 2018-08-10 14:46:22 +02:00
Daniel Huigens
f79a3f718d Fix streaming UTF8 decoding 2018-08-10 14:44:01 +02:00
Daniel Huigens
253e1c572b Switch to asmcrypto for hashing where available 2018-08-10 14:44:01 +02:00
Daniel Huigens
ade2627bca Streaming verify one-pass signatures 2018-08-10 14:44:01 +02:00
Daniel Huigens
ead3ddd706 Streaming decrypt old-format packets 2018-08-10 14:44:01 +02:00
Daniel Huigens
9fcc075f0b Streaming decrypt non-partial-length-encoded packets 2018-08-10 14:44:01 +02:00
Daniel Huigens
fb155ffae0 Streaming support on Node 2018-08-10 14:44:01 +02:00
Daniel Huigens
8658816b90 Add Web Streams polyfill 2018-08-10 14:44:01 +02:00
Daniel Huigens
802e1b8d94 Transfer Streams to Workers
Also, add a "asStream" parameter to high-level functions to control
whether the return value is a Stream; defaulting to whether the
parameter passed was a Stream.
2018-08-10 14:44:01 +02:00
Daniel Huigens
58eca571bf Fix integrity_protect = false 2018-08-10 14:44:01 +02:00
Daniel Huigens
d67526338e Streaming (de)compression (Web)
compressjs has a streaming API, but it is synchronous, so we can't use it
(at least in the browser).
2018-08-10 14:44:01 +02:00
Daniel Huigens
37014ecf30 Pass more tests
- Allow leading spaces in headers (since we were already accepting
leading spaces everywhere else in the armored text).
- Read ReadableStreams before passing them to a Worker
2018-08-10 14:44:01 +02:00
Daniel Huigens
05479e6e6b Don't warn about await in loops 2018-08-10 14:44:01 +02:00
Daniel Huigens
db39e616ca Replace stream.tee() with stream.clone()
Also some other fixes to pass more tests.
2018-08-10 14:44:01 +02:00
Daniel Huigens
3475843d82 Don't hack util.concatUint8Array() to handle Streams
Use util.concat() instead.
2018-08-10 14:44:01 +02:00
Daniel Huigens
16ba26c298 Streaming AEAD 2018-08-10 14:44:01 +02:00
Daniel Huigens
1f30556674 Split stream.transform into using two helper functions 2018-08-10 14:44:01 +02:00
Daniel Huigens
4ada3fa590 Don't mutate prototypes of Uint8Array, ReadableStream and ReadableStreamDefaultWriter 2018-08-10 14:44:01 +02:00
Daniel Huigens
70f0e1d2f5 Finish streaming armoring 2018-08-10 14:44:01 +02:00
Daniel Huigens
0af4742a14 Signatures 2018-08-10 14:44:01 +02:00
Daniel Huigens
0372bf78f1 Make (de)armoring and packet reading asynchronous 2018-08-10 14:44:01 +02:00
Daniel Huigens
403bdc5346 Streaming decryption (Web) 2018-08-10 14:44:01 +02:00
Daniel Huigens
b4f5976242 Writing partial lengths 2018-08-10 14:44:01 +02:00
Daniel Huigens
9853d3d830 Streaming encryption (Web) 2018-08-10 14:44:01 +02:00
Daniel Huigens
9302fdcc56 Don't cache literal.getBytes() when signing with textMode=false
This partially reverts bcfb9c0.
2018-08-10 14:44:01 +02:00
Sanjana Rajan
c79bda1d37 bugfix - compare create time from key packet 2018-08-03 14:21:15 +02:00
Sanjana Rajan
adb0148ca1 fix #748, signature cloning in verification objects 2018-07-30 15:32:17 +03:00
Kay Lukas
6f176f8b30 Fix multiple workers 2018-07-26 18:33:30 +02:00
Sanjana Rajan
438d47f634 handle case where primary user doesn't exist when getting exp time 2018-07-24 17:17:12 +02:00
Wiktor Kwapisiewicz
19e3c344fd
Fix verification of User Attributes
This change corrects verification of certifications over User Attributes
(such as photos).

Before this change the code did not differentiate between User IDs and
User Attributes as both of them were stored in `data.userid` [0] and
incorrectly used the User ID constant (0xB4) for both cases.

This change fixes the bug by storing User IDs in `userId` property and
User Attributes in `userAttribute` property. The check for property
existence has been modified to avoid comparisons with `undefined` as the
`User` class sets `null` for not assigned packets instead of
`undefined`.

Only data structures for signing and verification were modified and not
the properties used in the `User` class.

[0]: 11b2d2de3c/src/key.js (L872)
2018-07-24 13:03:46 +02:00
Daniel Huigens
15e6f0d654 Replace get(Sub)KeyPackets with get(Sub)Keys 2018-07-19 15:03:25 +02:00
Daniel Huigens
91b7165b78 Add key/subKey.getKeyId, getFingerprint, getAlgorithmInfo, getCreationTime, isDecrypted 2018-07-19 15:03:25 +02:00
Daniel Huigens
8cfe817b18 Remove getEncryptionKeyPacket and getSigningKeyPacket
Also, rename subKey.subKey to keyPacket and alias key.primaryKey as keyPacket.
2018-07-19 13:31:03 +02:00
Daniel Huigens
a49276a158 Allow checking expiry of subkeys by capability, keyId or userId 2018-07-18 14:40:28 +02:00
Daniel Huigens
06746b6a77 Use latest created subkey when possible 2018-07-18 14:29:59 +02:00
Daniel Huigens
8f3e448fa6 Remove obsolete JSDoc comment 2018-07-13 18:15:53 +02:00
Sanjana Rajan
53f473bfa7
Merge pull request #734 from twiss/key-revocation
Key revocation
2018-07-13 17:46:48 +02:00
Daniel Huigens
3fd0fa8f68 Various key revocation fixes 2018-07-13 17:45:09 +02:00
Sanjana Rajan
8865103e17
Merge pull request #733 from wiktor-k/fix-primary-uid
Fix Key#getPrimaryUser on keys without valid UIDs
2018-07-12 15:03:01 +02:00
Wiktor Kwapisiewicz
c3d4bf3529
Fix Key#getPrimaryUser on keys without valid UIDs
During tests of weird keys [0] it was found out that OpenPGP.js does not
handle keys without valid UIDs well.

There are two issues that this change corrects, first one is adding
filtering of user IDs in `getPrimaryUser` such as only users with self
certifications are considered. Without that change using
`getPrimaryUser` on a key without valid UIDs would throw an exception
(`Cannot read property 'verified' of undefined` [1]).

Second issue is correcting condition whether to throw if no UID was
found. Previous condition checked for `userId` variable, but this is
initialized by default and as such is almost always set. This causes
`key.getPrimaryUser()` (without condition) to throw `Could not find user
that matches that user ID`. The condition has been modified to match the
filter condition (checking if any property of `userId` has been
initialized).

[0]: https://gitlab.com/sequoia-pgp/weird-keys/tree/master/openpgpjs

[1]: 576ed08a54/openpgpjs/results/no-bound-uid.pgp.txt
2018-07-12 14:04:07 +02:00
Daniel Huigens
e411839ae3 Deduplicate signature packet creation 2018-07-11 18:05:01 +02:00
Daniel Huigens
1ed7943bf9 Create openpgp.revokeKey 2018-07-11 17:57:31 +02:00
Daniel Huigens
368d80245a Subkey revocation 2018-07-11 17:46:49 +02:00
Daniel Huigens
a3484c3116 Key revocation 2018-07-11 17:45:59 +02:00
Maximilian Krambach
11029e4162 Key merging with non-UserID user attribute
fix #678
2018-07-09 16:53:55 +02:00
Sanjana Rajan
99d3849ff3 style fix 2018-07-02 11:44:06 +02:00
Sanjana Rajan
b56afca063
Merge pull request #725 from FlowCrypt/master
configurable max uid length | close #724
2018-07-02 11:44:38 +02:00
Tom James Holub
35260cb5db configurable max uid length | close #724 2018-06-30 04:35:08 +00:00
Wiktor Kwapisiewicz
0099c373d2
Fix reading signersUserId packet in signatures
This bug caused all signersUserIds strings to be prefixed with `"null"`
string. Changed to use only the last value for this packet type.

Previous implementation probably assumed that there will be more than one
signersUserId packet but I haven't been able to generate such signature
using gpg (only last user id was embedded). Moreover signature
serialization function `write_all_sub_packets` writes only one value of
this packet as a UTF-8 string.
2018-06-27 12:17:19 +02:00
Sanjana Rajan
c7a65ccd16 fix #716 2018-06-13 15:05:10 +02:00
Sanjana Rajan
0248604a96 more helpful error messages when rsa message and sig sizes exceed that of modulus 2018-06-13 13:06:07 +02:00
Wiktor Kwapisiewicz
043e77a6ea
Add Web Key Directory lookup
This change implements Web Key Directory lookup using user's e-mail
address. The target host is the same as the e-mail's domain and the
local-part is hashed with SHA-1 and encoded using Z-Base32 encoding.

Implemented is basic flow of version 06 of OpenPGP Web Key Directory
draft [0].

It was necessary to update node-fetch package to allow returning array
buffers from HTTP responses.

If openpgpjs is used in the browser all keys retrieved from Web Key
Directory should have `Access-Control-Allow-Origin` header set to `*`
(including 404 Not found responses).

[0]: https://datatracker.ietf.org/doc/draft-koch-openpgp-webkey-service/
2018-05-29 21:21:24 +02:00
Wiktor Kwapisiewicz
da98ccb421
Add ZBase32 encoding function
See: https://tools.ietf.org/html/rfc6189#section-5.1.6
2018-05-29 09:55:47 +02:00
Sanjana Rajan
bcfb9c037a fix case with binary signatures on text data 2018-05-22 14:58:13 -07:00
mmso
11ff845c3e
Don't include transferable on IE11 on postMessage 2018-05-18 09:16:57 +02:00
Sanjana Rajan
33d5b158f8 fix #706 - if ignore_mdc_error is set to false then MDC is required for all symmetrically encrypted data 2018-05-15 00:04:58 -07:00
Sanjana Rajan
6efcce1069 prioritize signing with subkeys when possible 2018-05-09 12:23:35 -07:00
Sanjana Rajan
4926667cf9
Merge pull request #694 from twiss/eslint-cleanup
Remove some ESLint silencers
2018-05-03 08:05:57 -07:00
Daniel Huigens
b5c6e655de Warn about console usage 2018-05-03 13:07:52 +02:00
Daniel Huigens
4afaae13ca Remove unused variables 2018-05-03 13:07:52 +02:00
Daniel Huigens
6e27e3145c Micro-optimize DSA signing 2018-05-03 13:07:52 +02:00
Daniel Huigens
0ae427060f Add Object.assign polyfill 2018-05-03 13:07:51 +02:00
Daniel Huigens
887e832635 Throw when user ID matches no users 2018-05-03 13:04:32 +02:00
Daniel Huigens
95b9e5188a Remove some ESLint silencers 2018-05-01 17:36:15 +02:00
Daniel Huigens
94b27c9a02 Don't repeatedly loop enums in enums.read 2018-05-01 16:43:29 +02:00
Daniel Huigens
3c224379f6 Remove util.isUserId()
It was not really correct anyway; a user id can just be an email address
without < > brackets.
2018-05-01 13:39:24 +02:00
Daniel Huigens
fe3c1b4f31 Add fromUserId / toUserId parameters to openpgp.encrypt and sign
To select the user whose algorithm preferences, expiration time etc to use.
2018-05-01 13:39:23 +02:00
Daniel Huigens
6c2fec3450 Parse user IDs
Also, support comments when creating user IDs
2018-05-01 13:39:23 +02:00
Sanjana Rajan
9a5583fd25 clarifying comments 2018-04-30 13:30:48 -07:00
Sanjana Rajan
d562c147f9
Merge pull request #691 from twiss/draft04
Implement RFC4880bis-04
2018-04-30 12:16:20 -07:00
Daniel Huigens
a16d1a6a1d iOS does not support GCM-en/decrypting empty messages 2018-04-30 19:09:48 +02:00
Daniel Huigens
2627755b49 iOS Safari doesn't allow setting Error.message 2018-04-30 16:58:39 +02:00
Daniel Huigens
a7fce27424 Safari 8 compatibility 2018-04-30 16:58:37 +02:00
Daniel Huigens
cc1f7a4765 Lower chunk_size_byte to 12 (256KiB)
- In anticipation of streaming decryption
- Firefox 34 does not support chunk_size_byte > 24

256KiB is almost as fast as no chunks (although both of those can be up to
~1.5x slower than optimally using threads for very large message sizes).
The optimal chunk size would be something like:

    max(data.length / navigator.hardwareConcurrency, 128KiB)

But we don't do so currently because

- We don't know the hardwareConcurrency of the decrypting machine
- Smaller chunk sizes are better for streaming decryption
2018-04-30 16:58:36 +02:00
Daniel Huigens
550b758d57 Fall back to asm for CTR and CBC in old Safari 2018-04-30 16:58:35 +02:00
Daniel Huigens
7ce3f5521f Set default draft version to 4 2018-04-30 15:55:38 +02:00
Daniel Huigens
04651e359a Rename enums.aead.gcm to experimental_gcm
So that (1) if the spec ever defines GCM differently than we do, we have a
clean upgrade path and (2) it makes it clear that it's experimental.
2018-04-30 15:55:37 +02:00
Daniel Huigens
bbf71d149b Deduplicate OCB encrypt / decrypt 2018-04-30 15:55:37 +02:00
Daniel Huigens
e8adeef278 Implement Issuer Fingerprint subpacket 2018-04-30 15:55:37 +02:00
Daniel Huigens
310d8dd9b9 Fix V5 key fingerprint in ECDH parameters 2018-04-30 15:55:36 +02:00
Daniel Huigens
be62b0cf65 Add algorithm IDs for AEDH and AEDSA 2018-04-30 15:55:36 +02:00
Daniel Huigens
0376f49e01 Deduplicate getPreferredSymAlgo / getPreferredAEADAlgo 2018-04-30 15:55:35 +02:00
Daniel Huigens
4568d080d5 Fix decryption with multiple chunks 2018-04-30 15:55:34 +02:00
Daniel Huigens
485cb17e95 Deduplicate SymEncryptedAEADProtected encrypt / decrypt 2018-04-30 15:55:34 +02:00
Daniel Huigens
ebeedd3443 Fix removing whitespace from the last line of cleartext signed messages
Also, move normalizing line endings and removing whitespace to util functions
2018-04-30 15:55:33 +02:00
Daniel Huigens
4e204d7331 Update AEAD instructions in README 2018-04-30 15:55:32 +02:00
Daniel Huigens
d7efead337 Update Web Worker selection logic for AEAD 2018-04-30 15:55:32 +02:00
Daniel Huigens
e061df113c Implement GCM mode in the new draft
Also, implement additional data for GCM
2018-04-30 15:55:31 +02:00
Daniel Huigens
d5a7cb3037 Constant-time double() in OCB 2018-04-27 14:06:20 +02:00
Daniel Huigens
69762f95de Code style 2018-04-27 14:06:20 +02:00
Daniel Huigens
51d7860622 Native CMAC 2018-04-27 14:06:19 +02:00
Daniel Huigens
6f2abdc2cf Implement MIME message type (Literal Data Packet format 'm') 2018-04-27 14:06:19 +02:00
Daniel Huigens
3b81088aaf Decouple signature type from data packet type
Instead of creating a text signature for text packets and a binary signature for
binary packets, we determine the signature type based on whether a String or
Uint8Array was originally passed. This is useful for the new MIME data packet
type (implemented in the next commit) which you can pass in either format.

This also partly reverts a22c9e4. Instead of canonicalizing the literal data
packet, we canonicalize the data when signing. This fixes a hypothetical case
where an uncanonicalized text packet has both a text and a binary signature.

This also partly reverts c28f7ad. GPG does not strip trailing whitespace when
creating text signatures of literal data packets.
2018-04-27 14:06:19 +02:00
Daniel Huigens
2f849063f9 Allow reusing EAX/OCB instances with the same key
This is useful for chunked encryption in draft04
2018-04-27 14:06:19 +02:00
Daniel Huigens
e24b46192d Only AEAD-protect when target keys support it 2018-04-27 14:06:18 +02:00
Daniel Huigens
28dbbadcff Add config.aead_protect_version option 2018-04-27 14:06:17 +02:00
Daniel Huigens
d5d4c97228 Fix config.use_native 2018-04-27 14:06:17 +02:00
Daniel Huigens
53d6f20b72 Reduce allocations in OCB mode 2018-04-27 14:06:17 +02:00
Daniel Huigens
997ec1c8db Add AEAD feature flags 2018-04-27 14:06:17 +02:00
Daniel Huigens
5f97a8c937 Implement preferred AEAD algorithms 2018-04-27 14:06:16 +02:00
Daniel Huigens
93f75f398f Reuse CMAC in EAX mode 2018-04-27 14:06:16 +02:00
Daniel Huigens
627a6ef46e Only calculate AES key schedules once in cipher/aes.js 2018-04-27 14:06:15 +02:00
Daniel Huigens
c6ba83c4a3 Allow configuring openpgp in unit tests using query params (e.g. ?debug=true&use_native=false) 2018-04-27 14:06:15 +02:00
Daniel Huigens
ba2b761da4 Implement OCB mode 2018-04-27 14:06:15 +02:00
Daniel Huigens
cc4cc38fe7 Add util.print_debug_hexarray_dump 2018-04-27 14:06:15 +02:00
Daniel Huigens
f40489aa43 Implement getLeftNBits, shiftLeft and shiftRight for Uint8Arrays 2018-04-27 14:06:14 +02:00
Daniel Huigens
5f891d28d6 Switch cipher/aes.js to Uint8Arrays 2018-04-27 14:06:14 +02:00
Daniel Huigens
c2f898279b Implement version 5 Secret-Key Packet Format 2018-04-27 14:06:14 +02:00
Daniel Huigens
5d43b44e50 Log swallowed errors in debug mode 2018-04-27 14:06:14 +02:00
Daniel Huigens
17ad654d60 Implement version 5 Symmetric-Key Encrypted Session Key packet 2018-04-27 14:06:13 +02:00
Sanjana Rajan
92542e3ee4 fix #636 2018-04-26 13:19:02 -07:00
Daniel Huigens
7b3f51c0d4 Implement AEAD Encrypted Data Packet 2018-04-25 20:12:10 +02:00
Daniel Huigens
85a1b9859b Implement EAX mode 2018-04-25 20:12:10 +02:00
Daniel Huigens
c63ed980a1 Fix dash-escaping the first line of cleartext signed messages 2018-04-25 19:46:43 +02:00
Sanjana Rajan
ce973be6ba
Merge pull request #685 from twiss/workers-random
Use crypto.getRandomValues in Workers
2018-04-23 12:42:49 -07:00
Sanjana Rajan
6b2514f587
Merge pull request #687 from twiss/use-recent-binding
Only use the most recent self-signature
2018-04-23 12:42:36 -07:00
Daniel Huigens
ceec57672e Use most recent primary user 2018-04-23 14:17:09 +02:00
Daniel Huigens
bfc047da36 Don't request randomness from main thread in workers by default 2018-04-19 14:25:13 +02:00
KAYLukas
187cc6b05a Support compression in the WebWorker 2018-04-18 18:08:36 +02:00
Daniel Huigens
39c7374d70 Only consider most recent user self certification 2018-04-18 14:40:07 +02:00
Daniel Huigens
122d526f49 Only consider most recent subkey binding signature
This partially reverts 2bda127.
2018-04-18 14:40:06 +02:00
Sanjana Rajan
c28f7ad4d7 always remove trailing whitespace from lines when canonicalizing 2018-04-17 08:41:52 -07:00
Daniel Huigens
20a9bccb41 Use crypto.getRandomValues in Workers 2018-04-17 14:01:42 +02:00
Sanjana Rajan
2de426e0bc
Merge pull request #683 from openpgpjs/generate_key_refactor
More generateKey options
2018-04-16 14:13:13 -07:00
Sanjana Rajan
2bd540026f add multiple passphrase options to key encrypt and decrypt 2018-04-16 12:52:17 -07:00
Sanjana Rajan
e4bd27ce2f tests 2018-04-16 10:51:07 -07:00
KAYLukas
d0ed5134d7 randomRequested is never turned off 2018-04-16 17:05:44 +02:00
Sanjana Rajan
24119f4fb1 keygen update 2018-04-15 12:38:18 -07:00
Daniel Huigens
cfb0fdbbb1 Check length tag in DER-encoded OIDs 2018-03-26 19:06:15 +02:00
Daniel Huigens
59b608f0a6 Enable native Brainpool crypto on Node 2018-03-26 16:18:21 +02:00
Sanjana Rajan
614640ee42 add comment 2018-03-22 16:55:40 -07:00
Sanjana Rajan
a22c9e4770 WIP text signatures 2018-03-22 16:10:21 -07:00
Sanjana Rajan
6fe73033a4 docs 2018-03-19 19:11:20 -07:00
Sanjana Rajan
eb96d44298 add date parameter to generateKey function 2018-03-19 18:55:15 -07:00
Sanjana Rajan
f88c1bc8a4
Merge pull request #672 from openpgpjs/feat/brainpool
Adds Brainpool Curves + tests + docs
2018-03-19 00:09:23 -07:00
Emeric Chevalier
e257e7a570 Fix parsing of revocation subkey fingerprint 2018-03-18 19:45:12 +01:00
Mahrud Sayrafi
944dece506
Adds Brainpool Curves + tests + docs 2018-03-18 10:12:29 -07:00
Sanjana Rajan
75cd4e5e6f some fixes, add expired key test 2018-03-17 07:32:56 -07:00
Sanjana Rajan
c0ceffe998 some refactoring, calculate exp time of expired keys 2018-03-17 04:59:58 -07:00
Sanjana Rajan
a41fc29b44 typo fix 2018-03-16 11:52:45 -07:00
Sanjana Rajan
7408e824cb fix sort function for choosing primary user 2018-03-16 11:50:20 -07:00
Sanjana Rajan
b4055f494f fix #670 2018-03-15 09:05:36 +01:00
Sanjana Rajan
4d40c603cc
Merge pull request #668 from openpgpjs/rev_fixes
invalid primary key -> all subkeys are invalid
2018-03-13 08:34:48 +01:00
Mahrud Sayrafi
96c9cd0d73
Fixes dead links in the documentation 2018-03-13 00:13:04 -07:00
Sanjana Rajan
3945912b29 remove some redundant code 2018-03-13 01:44:22 +01:00
Sanjana Rajan
38508b33d1 if primary key is invalid, so are subkeys 2018-03-12 23:23:03 +01:00
Mahrud Sayrafi
4ded3f9d58
Documentation improvements in src/packet 2018-03-09 08:01:06 -08:00
Mahrud Sayrafi
a5e7562066
Many documentation improvements; more to come 2018-03-08 19:27:57 -08:00
Mahrud Sayrafi
08da24de27
documentation fixes 2018-03-08 10:55:58 -08:00
Sanjana Rajan
d3f42b2fc1 update comments 2018-03-08 15:36:40 +01:00
Sanjana Rajan
c5b5bf7826 utils fix 2018-03-08 14:28:50 +01:00
Mahrud Sayrafi
6fefe22c09 Finished fixing key.js; fixes async tests 2018-03-08 10:01:55 +01:00
Mahrud Sayrafi
0b2817ba39 Last little things become async ... 2018-03-08 10:01:55 +01:00
Mahrud Sayrafi
47006069d1 Added test for encryption with revoked subkey 2018-03-08 10:01:54 +01:00
Mahrud Sayrafi
23a4141ce9 Addresses @sanjanarajan's comments 2018-03-08 10:01:54 +01:00
Mahrud Sayrafi
73a240df6c Simplifies (Key|User|SubKey).isRevoked, API changes in key.js
For User s/revocationCertifications/revocationSignatures/g
For Key/SubKey s/revocationSignature/revocationSignatures/g is now an array.
2018-03-08 10:01:54 +01:00
Mahrud Sayrafi
ec22dabac3 Slightly simplifies key.js; adds key.verifyKeyPackets which should be run before getEncryption/SigningKeyPacket 2018-03-08 10:01:54 +01:00
Sanjana Rajan
354b961b67 primegen bugfix, recalculate i 2018-03-07 08:32:52 +01:00
KAYLukas
59d2973c05 ESLint 2018-03-07 00:50:26 +01:00
Mahrud Sayrafi
0684fb760e
Using small_primes from gpg2 2018-03-06 14:28:01 -08:00
KAYLukas
389d6410c9 Don't consider multiples of 3 and 5 2018-03-06 23:11:49 +01:00
Bart Butler
1cd9018346 some cleanup 2018-03-06 10:04:33 -08:00
Bart Butler
2bb5db2cf4 multiple web workers 2018-03-05 21:36:53 -08:00
Bart Butler
572abadc91 random number web worker buffer automatic refill 2018-03-05 17:57:35 -08:00
Bart Butler
f57888fe55 change all calls of getRandomBytes and getRandomBN to be async 2018-03-05 16:31:56 -08:00
Bart Butler
b088f005da simplify random.js 2018-03-05 12:18:04 -08:00
Sanjana Rajan
3df1d849b3 missing brackets 2018-03-05 17:49:09 +01:00
Mahrud Sayrafi
2077d8487f
Wait for browser to finish ECC functions to make sure it succeeds 2018-03-01 15:47:50 -08:00
Bart Butler
20a0e76998 Merge branch 'master' of github.com:openpgpjs/openpgpjs 2018-03-01 11:55:17 -08:00
Bart Butler
5564b67cc8 remove readSignedContent in favor of appendSignature 2018-03-01 11:55:09 -08:00
Mahrud Sayrafi
30bd6102d5
OID's stored as Uint8Array 2018-03-01 11:35:16 -08:00
Mahrud Sayrafi
5e857e131e
Bugfix in Native ECC in Node 2018-03-01 01:28:03 -08:00
Mahrud Sayrafi
9e1236c04c
Modernizes util.js 2018-02-28 15:49:41 -08:00
Mahrud Sayrafi
9275119dbc
Enables JSDoc Markdown Plugin 2018-02-28 14:13:44 -08:00
Mahrud Sayrafi
7eef65926a
Simplifies elliptic/curve.js 2018-02-28 00:58:50 -08:00
Mahrud Sayrafi
746d5032e8
Provide our own randomness to elliptic 2018-02-27 17:40:41 -08:00
Mahrud Sayrafi
ecc38d0c6e
Adds worker tests for NIST P-256 and X25519 2018-02-27 16:40:28 -08:00
Mahrud Sayrafi
f04273cd8d
Merge branch 'master' into feat/asmcrypto 2018-02-27 14:57:34 -08:00
Sanjana Rajan
51adfcc244 fromClone function for ecdh symkey 2018-02-27 23:15:42 +01:00
Mahrud Sayrafi
a79acf0386
Loopless getRandomBN using extra random bits 2018-02-27 13:10:52 -08:00
Mahrud Sayrafi
d529edfdda
Addresses @sanjanarajan's review comments 2018-02-27 13:04:45 -08:00
Mahrud Sayrafi
b518d27ff0
Added Fixed-Base Miller-Rabin 2018-02-27 00:23:51 -08:00
Mahrud Sayrafi
d418b4aa40
MPI stores data as Uint8Array instead of BN 2018-02-27 00:19:34 -08:00
Mahrud Sayrafi
3df0997f4d
Cleanups 2018-02-26 20:01:01 -05:00
Mahrud Sayrafi
378fb85733
Optimizes getRandomBN, Brings back IE11 KeyOperation helper 2018-02-26 16:56:42 -05:00
Mahrud Sayrafi
2e95335825
millerRabin set to 40 iterations; doc fixes 2018-02-25 09:30:19 -05:00
Mahrud Sayrafi
7a3a75a7df
JavaScript RSA using bn.js, without asmcrypto.js 2018-02-25 00:11:29 -05:00
Mahrud Sayrafi
9943379cb7
Added Native RSA Key Generation 2018-02-24 22:10:36 -05:00
Mahrud Sayrafi
168a6b0bb8
New probabilistic random number generation algorithms; UNTESTED 2018-02-22 18:27:34 -08:00
Mahrud Sayrafi
3b912d2fae
Cleaning mpi.js; TODO: store MPI.data as Uint8Array instead of BN
Also improved asynchronousity in packet tests
2018-02-22 14:51:57 -08:00
Mahrud Sayrafi
d40e8fe428
Use asmcrypto.js directly + quickfix 2018-02-22 11:51:21 -08:00
Bart Butler
1b66b9cf60
fix worker tests 2018-02-22 00:37:43 -08:00
Mahrud Sayrafi
a2868a5c14
Begone jsbn.js! I tell you begonegit status 2018-02-22 00:37:43 -08:00
Mahrud Sayrafi
1812166a53
RSA using asmcrypto with asmcrypto bignum 2018-02-22 00:37:42 -08:00
Mahrud Sayrafi
605021af3b
Various quickfixes and cleanups 2018-02-22 00:37:42 -08:00
BafS
10c49be91d
Use ES6 modules for exports 2018-02-22 00:37:42 -08:00
Mahrud Sayrafi
e1d85ba682
ElGamal and MPI use bn.js; TODO: RSA Key Generation 2018-02-22 00:37:42 -08:00
Mahrud Sayrafi
490b1dc0f0
ECDH, ECDSA, EdDSA are all on BN.js; TODO: ElGamal & type_mpi 2018-02-22 00:37:42 -08:00
Mahrud Sayrafi
9200f026f3
Starting to change MPI 2018-02-22 00:37:42 -08:00
Mahrud Sayrafi
2f3c0a86e9
DSA uses BN.js
added toBN for type_mpi
2018-02-22 00:37:41 -08:00
Mahrud Sayrafi
b126fd5be7
RSA encrypt/decrypt use asmcrypto as well
TODO: RSA key generation, removing jsbn from dsa, elgamal, mpi, etc.
2018-02-22 00:37:41 -08:00
Mahrud Sayrafi
aee8974ef5
RSA signatures now use asmcrypto.js; various fixes and tweaks 2018-02-22 00:37:41 -08:00
Mahrud Sayrafi
ed4cef102a
This branch uses the current version of asmcrypto.js 2018-02-22 00:37:41 -08:00
KAYLukas
a5b30468ef Check creation time in expiration checks 2018-02-22 00:41:12 +01:00
KAYLukas
6b4d44dbb1 Fix browser tests 2018-02-19 22:12:24 +01:00
KAYLukas
454ca1d879 Address comments 2018-02-18 11:50:27 +01:00
KAYLukas
071fc35f38 Check created time to be valid and discard milliseconds from date objects 2018-02-17 11:28:04 +01:00
KAYLukas
6ca8bc2180 Add timeparameter for verification and remove verify_expired_keys 2018-02-16 17:20:48 +01:00
KAYLukas
7e66ea20db Add timeparameter to signing and encryption 2018-02-16 17:20:48 +01:00
Bart Butler
3c2871a0e4 only access window.crypto.webkitSubtle in fallback 2018-02-15 15:34:32 -08:00
Bart Butler
7286116f1c add deflate_level to config 2018-02-15 09:44:31 -08:00
Bart Butler
c8adaff826 change JS zlib to pako, use Node zlib if available 2018-02-14 14:21:53 -08:00
Bart Butler
fa2672fcc1
Merge pull request #642 from mmso/feat/bzip2
Fix #607 - Add support for bzip2 de/compression
2018-02-14 11:00:56 -08:00
Sanjana Rajan
b5d19b6f8d pull out common signature code 2018-02-14 19:00:13 +01:00
Sanjana Rajan
38a11d7aaf reuse createVerificationObjects for cleartext 2018-02-14 17:55:54 +01:00
Sanjana Rajan
94b12e566b correctly handle cleartext headers with no hash specified 2018-02-14 17:07:39 +01:00
mmso
8808fdb8ed
Fix #607 - Add support for bzip2 de/compression 2018-02-14 14:14:07 +01:00
Bart Butler
8dd27722a3 unify hash libraries 2018-02-13 22:29:57 -08:00
BafS
9eb574b6c4 Hotfix - change var for const 2018-02-13 23:46:44 +01:00
BafS
a53f2b3780 Update packages, add lint script, remove useless eslint-plugins 2018-02-13 23:33:09 +01:00
BafS
b672f1936a Use let and const ES6 features.
Remove var, for let or const if possible, clean some syntax, enforce one var per declaration and semicolons
2018-02-13 23:33:09 +01:00
BafS
6b65640ac7 Radix should be specified
Part of the best practices https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt and https://eslint.org/docs/rules/radix
2018-02-13 23:33:09 +01:00
BafS
de6ffc2f76 Remove 'user strict'
'use strict' is unnecessary inside modules because module code is always strict mode code. Ref: https://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-code
2018-02-13 23:33:09 +01:00
Sanjana Rajan
de51d418d2 algorithm info for public key, include curve for ecc and bits for non-ecc 2018-02-13 21:23:13 +01:00
Bart Butler
8873ed0ff1
Update openpgp.js
doc fix
2018-02-13 11:01:09 -08:00
Bart Butler
c855fd4e4e
Update message.js
doc fix
2018-02-13 10:58:55 -08:00
mmso
9f7466ef45
Add compression support for the encrypt function 2018-02-13 15:08:41 +01:00
Sanjana Rajan
62015c2c8d useWildcard -> wildcard 2018-02-12 19:31:47 +01:00
Sanjana Rajan
989ad5077e cleanup, docs 2018-02-12 13:40:23 +01:00
Sanjana Rajan
7365ffc9b7 wildcard implementation 2018-02-12 09:47:51 +01:00
Sanjana Rajan
e5e49901a7 change var names 2018-02-12 09:47:51 +01:00
Sanjana Rajan
18e46ed6cf gracefully handle reformatting keys with no subkey packets 2018-02-09 16:18:27 +01:00
Bart Butler
0a4e9461ca
Merge pull request #632 from openpgpjs/ripemd_license_issue
use different, MIT-licensed RIPEMD library, closing #625
2018-02-08 21:10:04 -08:00
Bart Butler
bf8b4e940c fix browsers 2018-02-08 16:33:53 -08:00
Bart Butler
7bd78585fd
Merge pull request #629 from dkg/http-to-https
move from http to https where possible.
2018-02-08 13:36:14 -08:00
Bart Butler
fa208e8308
Merge pull request #630 from dkg/speling
Fix typos
2018-02-08 11:51:12 -08:00
Bart Butler
7975c86508 use different, MIT-licensed RIPEMD library, closing #625 2018-02-08 11:49:10 -08:00
Mahrud Sayrafi
d851398b0c
Merge branch 'master' into http-to-https 2018-02-08 10:56:46 -08:00
Bart Butler
c2a7ea2a20
Merge pull request #593 from laurinenas/inform-user-invalid-numBits-size
Add a console error when numBits param too low
2018-02-08 10:51:21 -08:00
Mahrud Sayrafi
0ebe0972e7
Merge branch 'master' into speling 2018-02-08 10:46:42 -08:00
Bart Butler
aa476b4905
Merge pull request #537 from nauadratti/patch-1
Allow punycode encoded TLDs in email
2018-02-07 23:26:18 -08:00
Bart Butler
0f4d81bf2c add test for signing with multiple keys, align signature packet order with high-level API private key order 2018-02-07 18:16:54 -08:00
Mahrud Sayrafi
1383107202
Fixed and unmuted a few eslint errors, ~10 remain 2018-02-07 04:23:16 -08:00
Mahrud Sayrafi
b2e39ccaf9
Documentation and cleanups 2018-02-07 03:25:28 -08:00
Bart Butler
602bbb707d rename decryptSessionKey to decryptSessionKeys, return only unique session keys 2018-02-06 21:25:49 -08:00
Bart Butler
210ec26ed3 fix sporadic two password decryption failure 2018-02-06 16:43:51 -08:00
Bart Butler
bdf1ce8d64 add some more polyfills for old browsers 2018-02-06 10:56:29 -08:00
Bart Butler
89f86d83d5 fix obsolete browser tests, add some polyfills 2018-02-05 22:17:41 -08:00
Bart Butler
ac440b9ae6 use ES6 polyfill for worker and tests, not in openpgp.js 2018-02-05 14:21:35 -08:00
Mahrud Sayrafi
37eec2bde2
Added Ed25519 Test Vectors from RFC8032 2018-02-04 02:44:05 -08:00
Mahrud Sayrafi
115d1c0949
A better patch for EdDSA truncation issue.
The last test in test/general/x25519.js is commented, as it seems to defy logic.
Yet it can be successfully imported by GPG2. TODO: How?
2018-02-03 14:36:20 -08:00
Mahrud Sayrafi
3370eaa2aa
Expands truncated little-endian parameters in EdDSA 2018-02-02 05:42:54 -08:00
Mahrud Sayrafi
9cbfbf453b
Added contingency for when browser does not support NIST curves 2018-02-01 14:31:17 -08:00
Daniel Kahn Gillmor
1799107aac Fix typos
This patch contains several trivial/inconsequential orthographic
fixes.
2018-02-01 10:03:41 -05:00
Daniel Kahn Gillmor
4da28fcc29 move from http to https where possible.
There are dozens of links in the OpenPGP.js codebase that are http but
could be replaced with https links.  I've converted as many of them as
i could find.
2018-02-01 09:58:06 -05:00
Sanjana Rajan
41f1e697b5 remove isValid 2018-02-01 13:41:19 +01:00
Sanjana Rajan
5a6e65c00f verification when decoding pkcs5 2018-02-01 13:14:26 +01:00
Bart Butler
76d7fac967 eliminate openpgp_browser.js 2018-01-31 19:27:00 -08:00
Bart Butler
496a45a97c
Update eddsa.js 2018-01-31 19:04:26 -08:00
Mahrud Sayrafi
a4134b9f55
Addresses various review comments by @bartbutler + some cleanups 2018-01-31 17:52:38 -08:00
Mahrud Sayrafi
d97bc064ea
Cleanups and doc fixes 2018-01-31 12:24:21 -08:00
Mahrud Sayrafi
aba8a7a647 Switches to asmcrypto-lite for AES 2018-01-30 18:36:38 +01:00
Mahrud Sayrafi
be2c605e5b Improves secret key encryption/decryption performance by 35% 2018-01-30 18:36:38 +01:00
Mahrud Sayrafi
bf00fbd3ea added ECC curve options to docs 2018-01-30 18:36:38 +01:00
Mahrud Sayrafi
d02b9c7bf0 Fixes problems with user certificate verification.
TODO: if using lower level functions, key.verifyPrimaryUser() MUST be
called and resolved before calling key.getSigning/EncryptionKeyPacket(),
key.getPrimaryUser(), etc.

Also: adds a flag to allow verification with expired keys from:
(cherry picked from commit b9d175d998)
(cherry picked from commit 50940b2a1e)
2018-01-30 18:36:37 +01:00
Sanjana Rajan
fa5805eaf7 don't assume all mpi type for encsessionkey 2018-01-30 18:36:26 +01:00
Sanjana Rajan
a173a63b16 doc fixes 2018-01-30 18:36:26 +01:00
Sanjana Rajan
3ce6309788 cleanup 2018-01-30 18:36:26 +01:00
Mahrud Sayrafi
5cb89f4f25 Addresses various review comments by @sanjanarajan
* Various FIXME tags are removed
 * In curve.js:
  - webCrypto/nodeCrypto fallback bug is fixed
  - Curve25519 has keyType ecdsa (won't be used for signing, but technically can be)
  - webGenKeyPair is simplifed
 * In base64.js:
  - documentation added and arguments simplified
 * In ecdsa.js and eddsa.js:
  - hash_algo is now at least as strong as the default curve hash
  - simplified the code by moving webSign/nodeSign and webVerify/nodeVerify to live in key.js (ht @ismaelbej)
 * In message.js:
  - in decryptSessionKey, loops break once a key packet is decrypted
 * In key.js:
  - getPreferredHashAlgorithm returns the best hash algorithm
  - enums are used for curve selection
2018-01-30 18:36:26 +01:00
Mahrud Sayrafi
3e1d9c4d0d Fixes ECDH with Curve25519 and key import/export problems 2018-01-30 18:35:06 +01:00
Mahrud Sayrafi
35f18444b0 keygen and sign/verify with ed25519 works 2018-01-30 18:34:54 +01:00
Mahrud Sayrafi
e6820d7b2a Passing all tests, on Node, Firefox, and Chrome 2018-01-30 18:34:28 +01:00
Mahrud Sayrafi
dcff16d32b npm test and grunt browsertest can run side by side now; npm tests pass, browser stuck on problem related to asn1.js 2018-01-30 18:34:07 +01:00
Mahrud Sayrafi
21ae66c604 encrypt/decrypt/sign/verify will always return promises
Note: publicKeyEncryptedSessionKey uses promises, symEncryptedSessionKey does not
2018-01-30 18:33:55 +01:00
Mahrud Sayrafi
1a714cec73 ECC with async/await is 'Done, without errors.' 2018-01-30 18:33:55 +01:00
Mahrud Sayrafi
12eb037ba7 Everything in test/crypto/elliptic.js passes; working on test/general/ecc.js 2018-01-30 18:31:39 +01:00
Mahrud Sayrafi
11a2d0070b ESLint is happy! 2018-01-30 18:31:30 +01:00
Mahrud Sayrafi
370a15e2a1 Remove jshint/jscs and fix babelify
(cherry picked from commit e4b810fe412bd5e383507668ef2d60320c31b1ca)
2018-01-30 18:31:18 +01:00
Mahrud Sayrafi
6886cd648a elliptic/curves.js uses native code for genkey and sign/verify; sign/verify use async/await 2018-01-30 18:31:07 +01:00
Sanjana Rajan
8794446a66 change some variable names, add some curve parameters 2018-01-30 18:30:17 +01:00
Sanjana Rajan
311d288bb7 clone processing 2018-01-30 18:30:16 +01:00
Sanjana Rajan
86e15dbd0a aes kw update 2018-01-30 18:30:16 +01:00
Sanjana Rajan
f8bfde7447 comments, docs 2018-01-30 18:30:16 +01:00
Sanjana Rajan
cbe61e6feb key expansion for aes decryption keys, aesdecrypt function 2018-01-30 18:30:16 +01:00
Sanjana Rajan
26de17150c use internal aes encrypt in key wrap, start refactoring aes to do decryption as well 2018-01-30 18:30:16 +01:00
Sanjana Rajan
b40408d42f standardize packet reading code, make pkcs5 function names same as pkcs1 2018-01-30 18:30:16 +01:00
Sanjana Rajan
b718cf359d simplify packet parsing using type maps 2018-01-30 18:30:16 +01:00
Sanjana Rajan
cdc7004b96 refactor mpi, generalize mpi to params to account for non-mpi algorithm-specific data 2018-01-30 18:30:15 +01:00
Sanjana Rajan
840c0229f8 move hex2Uint8array to utils 2018-01-30 18:30:15 +01:00
Sanjana Rajan
fade832619 remove material parameter for now 2018-01-30 18:30:15 +01:00
Sanjana Rajan
0de9eecdc8 distinguish between key and subkey type, when refactoring key just grab type from packets 2018-01-30 18:30:15 +01:00
Sanjana Rajan
3b8cea67a2 some style fixes, update tests 2018-01-30 18:30:15 +01:00
Sanjana Rajan
fdcfcf3a54 refactor formatUserIds 2018-01-30 18:30:15 +01:00
Ismael Bejarano
f87e759cb0 Create key from provided material 2018-01-30 18:30:14 +01:00
Ismael Bejarano
a5d9e6d09e Generation of keys for elliptic curves 2018-01-30 18:30:14 +01:00
Ismael Bejarano
38a53c1bb1 Parse and create ECDH packets 2018-01-30 18:30:14 +01:00
Ismael Bejarano
585a2bd69d Functions to encrypt and decrypt ECDH keys 2018-01-30 18:30:14 +01:00
Ismael Bejarano
673151ec87 Read and write ECDSA packets 2018-01-30 18:30:14 +01:00
Ismael Bejarano
ba2f49234e Signature creation and verification 2018-01-30 18:30:14 +01:00
Ismael Bejarano
a8e8271185 Support functions for Elliptic Curve Cryptography 2018-01-30 18:30:13 +01:00
Ismael Bejarano
54b79be0b0 Add and remove PKCS5 padding 2018-01-30 18:30:13 +01:00
Ismael Bejarano
2f69d22130 Key Wrap and Unwrap from RFC 3394 2018-01-30 18:30:13 +01:00
Ismael Bejarano
26c6ab9b97 Parameters for the ECDH key derivation function 2018-01-30 18:30:13 +01:00
Ismael Bejarano
d8b1e3359a Result of wrapping a session key for ECDH key 2018-01-30 18:30:13 +01:00
Ismael Bejarano
01be192a35 Object identifier type 2018-01-30 18:30:13 +01:00
Sanjana Rajan
b9d175d998 tests 2018-01-17 19:36:51 +01:00
Sanjana Rajan
50940b2a1e flag to allow verification with expired keys 2018-01-17 18:37:25 +01:00
Bart Butler
1682787152 deal with empty encrypted data correctly 2017-12-22 13:26:53 -08:00
Bart Butler
81a59b76b1 do not echo data back to caller for detached signing 2017-12-05 11:44:01 -08:00
Sanjana Rajan
135bd3d46a doc update 2017-12-02 11:48:14 -08:00
Sanjana Rajan
0e254a8c8c simplify 2017-12-02 11:17:39 -08:00
Sanjana Rajan
6189cd4568 returnSessionKey flag in encrypt function 2017-12-02 11:04:29 -08:00
Sanjana Rajan
7e03410bc9 allow sessionKey param in top level encrypt 2017-12-01 21:25:43 -08:00
Bart Butler
59d99fc0c7 do not replace stack in async_proxy, add as workerStack 2017-11-28 10:25:16 -08:00
Bart Butler
7a9c3b0ddd remove stack trace concatenation (non-standard), modify error message only 2017-11-27 19:06:25 -08:00
Bart Butler
617c1c9ee9 include error message in stack trace for Safari/Firefox 2017-11-27 16:50:18 -08:00
Bart Butler
49695ff50c Error object cannot be used with structured clone, pass stack 2017-11-27 15:44:04 -08:00
Bart Butler
2a9a1b4846
Merge pull request #606 from FlowCrypt/issue_602_reformatkey_error
reformatKey: Key not decrypted error + test | #602
2017-11-27 13:22:17 -08:00
Bart Butler
f666e400fa
Merge pull request #605 from FlowCrypt/issue_598_armor_headers
improve armor header validation + tests | #598
2017-11-27 13:21:42 -08:00
Justin Chase
a5a913419b Also concat stacks 2017-11-25 10:45:58 -06:00
Tom James Holub
d0d0874268 reformatKey: Key not decrypted error | #602 2017-11-25 12:24:44 +08:00
Tom James Holub
4495df0f42 improve armor header validation + tests | #598 2017-11-25 10:57:41 +08:00
Justin Chase
567d212204 Dont join stacks 2017-11-24 16:16:42 -06:00
Justin Chase
bf6c2b9319 Added a test verifying innerError 2017-11-24 16:12:37 -06:00
Bart Butler
58031cfaca add openpgp.key.read() function for unarmored serialized keys 2017-11-06 13:42:07 -08:00
Andrius Laurinėnas
1d287cd9a9 Add a console error when numBits param too low 2017-10-13 19:50:48 +03:00
Sanjana Rajan
9893d602e2 account for non-cleartext sign/verify message parameters 2017-10-09 17:27:02 -07:00
Sanjana Rajan
b756d35b8f use hash param in rsa key gen with webkit subtle 2017-09-20 18:28:37 +02:00
Thomas Oberndörfer
e3eb298ab7 Set keyExpirationTime for subkey binding signature 2017-08-30 16:09:53 +02:00
Bart Butler
ad029f1929 Update armor.js
Only console.log if debug mode on
2017-08-19 10:52:36 -07:00
Bart Butler
1e8bd4315b Update armor.js
Small tweak
2017-08-19 10:49:36 -07:00
Patrick Brunschwig
93d823abb4 Fix for issue 573: don't throw with unknown Armor Headers, but just
with invalid ones
2017-08-19 18:32:02 +02:00
Tom James Holub
ce9dee9370 util.readNumber: stop overflowing until full range of uint32 | #497 2017-07-22 09:26:30 -07:00
Tom James Holub
2bda12731b subKey.bindingSignature -> subKey.bindingSignatures[] - process all | #527 2017-07-21 21:38:33 -07:00
Tom James Holub
3f40a36081 do not remove equal sign at the end of armored body when missing checksum 2017-07-21 17:39:19 -07:00
Tom James Holub
ac055d69d2 fixed outdated annotations in armor.js 2017-07-21 15:39:06 -07:00
Tom James Holub
841b03d6cd improved armor behavior - trailing newline 2017-07-21 15:35:27 -07:00
Tom James Holub
c27725782c do not fail when missing armor checksum | #563 2017-07-21 10:13:33 -07:00
Bart Butler
d737f65ccc Merge pull request #559 from openpgpjs/sign_byte_arrays
Sign Uint8 arrays
2017-07-12 19:45:53 -07:00
Sanjana Rajan
e53cbe8417 remove extra spaces 2017-07-08 13:26:20 +02:00
Sanjana Rajan
95c5e3af01 use message obj when signing uint8 array 2017-07-08 13:25:24 +02:00
Bart Butler
d33c46a33c minor bugfix 2017-07-06 15:27:45 -07:00
Sanjana Rajan
d061af1fc3 style fixes 2017-07-06 16:29:25 +02:00
Sanjana Rajan
a9bb3f1839 armor based on text vs. bytes 2017-07-04 16:47:23 -07:00
Sanjana Rajan
28e5f5d3f4 allow cleartext msg data to be string or byte array 2017-07-04 14:15:39 -07:00
Sanjana Rajan
a7702a74d3 support split checksum where body and checksum are on the same line 2017-06-27 16:41:53 -07:00
Bart Butler
ddf6eb5783 change URL to https 2017-04-25 14:09:31 +02:00
Abhishek Hingnikar
472294ec84 Fix documentation
The storeHandler seems to need loadPublic, loadPrivate, storePublic, storePrivate methods but the current documentation only mentions load and store.
2017-04-08 16:12:47 +05:30
Kévin Bernard-Allies
342bc8fe01 Simplify code of CRC24 checksum in armor encoding 2017-04-06 13:12:45 +02:00
Sanjana Rajan
c3958b0270 tolerant default to true 2017-04-05 16:36:29 -07:00
Sanjana Rajan
b51b8ad341 add tolerant mode which suppresses errors in reading non-data packets 2017-04-05 07:54:08 -07:00
nauadratti
3673e21a77 Allow punycode encoded TLDs in email
Closes #500
2017-03-30 19:05:22 +00:00
Bart Butler
5fb23ac833 use web worker for reformatKey 2017-03-29 16:27:16 -07:00
Bart Butler
a1ff93f1fc not all platforms implement TypedArray.slice 2017-03-28 11:44:04 -07:00
Bart Butler
62c24ed227 Merge pull request #534 from openpgpjs/signature_input
Accept signature object as an input to encrypt function
2017-03-28 10:43:00 -07:00
Bart Butler
a4190061d9 optimize Uint8Array2str function for large payloads 2017-03-28 10:35:20 -07:00
Sanjana Rajan
16c6d2f162 signatureInput -> signature 2017-03-23 13:01:12 -07:00
Sanjana Rajan
d04c09687d spacing 2017-03-23 11:16:16 -07:00
Sanjana Rajan
25d16046c2 add one pass in case where no priv keys are passed in for signing 2017-03-22 17:14:30 -07:00
Sanjana Rajan
79160abcc9 allow signature as input in high level encrypt 2017-03-22 17:04:21 -07:00
Sanjana Rajan
af211f63c0 update README to demonstrate detached signature use, some documentation fixes 2017-03-17 16:54:34 -07:00
Sanjana Rajan
e4621fc688 initialize publicKeys to empty array, test case where signed message is decrypted without public keys to verify 2017-03-15 17:44:43 -07:00
Sanjana Rajan
4ec07672a7 return signature object inside verification object 2017-03-10 10:38:59 -08:00
Sanjana Rajan
da9e3c6264 small fixes 2017-03-07 19:10:33 -08:00
Sanjana Rajan
465d4643a8 add clone to packetlist support for signature objects 2017-03-07 16:51:08 -08:00
Sanjana Rajan
7d02154dc9 small fixes 2017-03-07 13:59:18 -08:00
Sanjana Rajan
43355e079f add detached sig option to upper level functions 2017-03-07 13:59:18 -08:00
Sanjana Rajan
c3908cbec0 add detached sign/verify options to cleartext 2017-03-07 13:59:18 -08:00
Sanjana Rajan
4fd4c13ddd refactor cleartext message to use signature object instead of packetlist 2017-03-07 13:59:17 -08:00
Sanjana Rajan
7b58cd9200 add tests 2017-03-07 13:59:17 -08:00
Sanjana Rajan
57d07091e8 add support for detached signatures 2017-03-07 13:59:17 -08:00
Bart Butler
ebc37f3a7d Merge pull request #417 from zartdinov/master
Added ability to sign and verify public keys
2017-03-05 12:24:37 -08:00
Aydar Zartdinov
be776c61b1 Validate signatures by all suitable keys 2017-03-04 19:27:27 +00:00
Aydar Zartdinov
d5e88c7c79 Prevent self signing by fingerprint instead of keyId 2017-03-04 18:47:33 +00:00
Bart Butler
b0c1a854fd move SHA1 to the bottom of the preferred hash algorithm list 2017-02-27 10:30:39 -08:00
Sanjana Rajan
e90161c2d1 add missing parentheses 2017-02-15 13:06:18 -08:00
Aydar Zartdinov
d9cb8e681d Array.prototype.find replaced for Node.js 0.12 and IE 11 2017-02-15 21:31:05 +03:00
Aydar Zartdinov
3fa4c0c760 Base functionality moved to User.prototype 2017-02-15 21:08:17 +03:00
Aydar Zartdinov
715f98bb38 Reverted top level api changes 2017-02-15 21:04:50 +03:00
Aydar Zartdinov
5140a946e5 Added ability to sign and verify public keys 2017-02-15 21:04:50 +03:00
Bart Butler
6be9ddde59 Merge pull request #517 from openpgpjs/userID
Key reformatting and resigning
2017-02-13 16:11:17 -08:00
Sanjana Rajan
11e1040a30 remove extra input param 2017-01-31 14:18:13 -08:00
Sanjana Rajan
a902c421eb add upper level refactorKey function 2017-01-31 14:14:27 -08:00
Sanjana Rajan
9de579a29d remove extra space, typo 2017-01-30 19:41:43 -08:00
Sanjana Rajan
9d59351007 reformatKey function 2017-01-30 19:38:49 -08:00
Alax Villmann
e526cf0a3b Generate valid version 3 signatures 2017-01-26 12:49:49 -08:00
David Janes
c223b88829 implement keyExpirationTime 2017-01-24 16:54:52 -05:00
Bart Butler
bc69357ab5 Merge pull request #498 from larshp/master
S2K - Only generate what is needed
2017-01-22 23:36:36 -08:00
Alax Villmann
0989015ed2 V3 header generation was concat()-ing non-Uint8 arrays 2017-01-09 10:30:31 -08:00
Sanjana Rajan
d65d629264 trim name 2016-12-15 10:39:29 -08:00
Sanjana Rajan
d058523e9e clearer syntax 2016-12-15 10:01:50 -08:00
Sanjana Rajan
109f8a5d20 don't allow leading spaces in user id 2016-12-14 12:38:01 -08:00
Lars Hvam
c69a92d694 only generate what is needed 2016-11-20 09:54:00 -05:00
Sanjana Rajan
344294659e invalidate expired primary keys 2016-10-27 11:50:30 -07:00
Bart Butler
659c6f23d2 Merge pull request #493 from openpgpjs/armored_decrypted_key_fix
Reset secret key's encrypted field to null after decryption
2016-10-26 16:58:07 -07:00
Bart Butler
6abf7ffcc0 Fix rare race condition with webworker tasks, fix minified web worker filename default 2016-10-26 16:56:21 -07:00
Sanjana Rajan
8620220cfb reset encrypted field to null when decrypting secret key 2016-10-26 16:55:49 -07:00
emersion
e9940eb100
Properly set one-pass signture packet flag 2016-08-17 13:03:56 +02:00
Tankred Hase
e3cbaba33a Be sure to only pop unsupported packet if already pushed 2016-06-08 11:30:53 +02:00
Tankred Hase
490d8e4e90 Bugfix: drop unsupported packets in packetlist.read()
add unit test for RSA key with ECC subkey
2016-06-07 18:21:31 +02:00
Tankred Hase
87b4bfefd8 Fix error handling 2016-05-24 17:22:15 +02:00
Tankred Hase
4fd9fd3c7f Cleanup and document worker.js 2016-05-24 13:12:39 +02:00
Thomas Oberndörfer
9c76df73ff Merge pull request #446 from openpgpjs/issue/443
Implement feature #443
2016-05-03 10:01:48 +02:00
evilaliv3
4e3937f1e2 Replace isDecrypted=false with keys[i].clearPrivateMPIs() 2016-04-28 17:40:14 +02:00
evilaliv3
0d93127186 Simplify code-flow of Key.encrypt 2016-04-28 16:01:33 +02:00
evilaliv3
a5fdc36062 Cleanup API for key.decrypt and align unit tests 2016-04-27 16:06:52 +02:00
evilaliv3
1007637f39 Mark isDecrypted flag when the key is encrypted 2016-04-25 18:35:57 +02:00
evilaliv3
61470ad068 Apply edits as suggested in review of pull #446 2016-04-25 18:35:50 +02:00
Tankred Hase
fd218ef52d Add comments to preferred algorithms 2016-04-25 13:08:00 +02:00
evilaliv3
afc2c95238 Implement feature #443 2016-04-25 00:54:16 +02:00
Tankred Hase
e3b146b9d9 Fix Keyid.fromId() 2016-04-11 12:11:35 +02:00
Tankred Hase
4070e27959 Cleanup of AES-CFB code in integrity protected packet 2016-03-25 16:10:27 +08:00
Tankred Hase
843fba0d40 Use underscore instead of camelcase in config
zeroCopy —> zero_copy
useNative —> use_native
Remove unnecessary tests from build
2016-03-24 21:02:29 +08:00
Tankred Hase
72c8bf5ea7 Deactivate GCM by default 2016-03-24 20:47:42 +08:00
Tankred Hase
969e39dcf2 Rename useAEAD --> nativeAEAD 2016-03-24 13:49:26 +08:00
Tankred Hase
f4fc274f14 Fix: use worker for CFB w/ webcrypto support 2016-03-24 13:24:18 +08:00
Tankred Hase
c8569e0cd5 Add version attribute to the AEAD packet 2016-03-24 10:53:35 +08:00
Tankred Hase
8b46a117ab Prefer aes128 over aes192 (no WebCrypto support) 2016-03-24 10:53:30 +08:00
Tankred Hase
979f212305 Cleanup Promise code 2016-03-24 09:29:41 +08:00
Tankred Hase
ddedb5cb42 Cleanup public api 2016-03-23 21:36:48 +08:00
Tankred Hase
1e3d6468d6 Wrap code into promises to globally catch errors 2016-03-23 21:19:02 +08:00
Tankred Hase
453a9cee07 Use web worker for encrypt/decrypt if no native gcm 2016-03-23 21:17:36 +08:00
Tankred Hase
760bdb8f00 Use only standard window.crypto.subtle in gcm.js
There is currently no support for AES-GCM in IE11 and Safari/iOSqq
2016-03-23 17:27:09 +08:00
Tankred Hase
9b2823aa67 Fix unit tests under node 2016-03-23 16:43:40 +08:00
Tankred Hase
963648c6ea Fix unit tests for browsers 2016-03-23 15:39:51 +08:00
Tankred Hase
e5e76d2eb7 Cleanup gcm.js 2016-03-23 14:32:48 +08:00
Tankred Hase
a225027a6b Wrap message.sign into a promise in openpgp.encrypt 2016-03-23 13:43:12 +08:00
Tankred Hase
7fabe02e03 Fix GCM under node.js 2016-03-23 13:43:06 +08:00
Tankred Hase
8f8218e9de Cleanup and test AEAD protected packet 2016-03-22 17:45:19 +08:00
Tankred Hase
8aa15b66a9 Cleanup and unit test gcm.js 2016-03-22 17:45:19 +08:00
Tankred Hase
365a9d2107 Fix link to IEFT draft packet tag in enums.js 2016-03-22 17:45:18 +08:00
Tankred Hase
2e4d8547a0 Fix typo in src/crypto/index.js 2016-03-22 17:45:18 +08:00
Tankred Hase
149f5d5191 Use promise api in sym_encrypted_* packets 2016-03-22 17:45:18 +08:00
Tankred Hase
ded8926b27 Support AES-GCM with AEAD Protected Data Packets
Closes openpgpjs/openpgpjs#421
2016-03-22 17:44:22 +08:00
Tankred Hase
b5618fd63d Remove redundant util.emailRegEx 2016-02-19 11:17:35 +07:00
Tankred Hase
a1ab02adc8 Revert "Point to TLS/HSTS secured .com domain"
This reverts commit 177d701f5b.
2016-02-18 11:38:12 +07:00
Tankred Hase
506e36c9cc Remove function bind polyfill from worker.js
This is no longer required in Phantom.js 2.x
2016-02-18 11:15:59 +07:00
Tankred Hase
177d701f5b Point to TLS/HSTS secured .com domain 2016-02-15 14:06:31 +07:00
Harry Marr
68d1b5a35c Handle carriage-return only newlines
Newlines are normalised to \r\n, but that previously assumed that only
\r\n and \n newline characters could be used. Even though \r newlines
are rarely used in the wild, it's be helpful to support them. Currently,
they're just removed entirely.
2016-02-14 12:01:19 +00:00
Tankred Hase
e4b2b8208e Add jsdoc annotations to openpgp.js 2016-02-13 16:54:43 +07:00
Tankred Hase
24c213d8d9 Add better examples for binary data use. Fix message docs 2016-02-11 17:36:24 +07:00
Tankred Hase
6c954e19c0 Update README.md with v2.x api examples
Minor cleanup in public api, fix typos in docs
2016-02-11 13:41:53 +07:00
Tankred Hase
d399cb8c47 Fix public api doc whitespaces 2016-02-10 23:19:13 +07:00
Tankred Hase
000c3b3686 Revert "Decode utf8 text only for correct format in Literal.getText()"
This reverts commit 83fcbaa633.
2016-02-10 15:33:45 +07:00
Tankred Hase
d5a2e0fb81 Delete plaintext sessionKey from packet after calling message.encryptSessionKey 2016-02-10 12:58:12 +07:00
Tankred Hase
25131e0df9 Added unit tests for util.getTransferables 2016-02-10 12:52:13 +07:00
Tankred Hase
6547b4ef68 Test encrypt/decryptSessionKey and finalize api, review docs 2016-02-10 12:52:13 +07:00
Tankred Hase
6ff470a36a Cleanup worker.js 2016-02-09 20:35:23 +07:00
Tankred Hase
7d97bcec58 Implement openpgp.decryptKey 2016-02-09 19:04:31 +07:00