Commit Graph

582 Commits

Author SHA1 Message Date
Thomas Oberndörfer
93376b6e13 Add decryptKeyPacket to key class. Used to decrypt specific key
packets and replacing the unlock mechanism. Decrypt method of packet_secret_key
returns boolean to indicate successful decryption. Add config to util class
and cleanup comments. Update tests.
2013-11-19 13:50:14 +01:00
Thomas Oberndörfer
c051eacf36 Introduce unlock method for keys: passphrase is set as attribute of key and used
to decrypt required secret key packets on demand. Directly access config module in armor.js.
Key method getPrivateKeyPacket returns key packets by ID (optionally decrypted).
Message method decrypt returns new message with packetlist of decrypted message.
Add CRLF conversion to literal data packet. Packetlist: make filterByTag variadic,
add findPacket method. Keep state isDecrypted in secret key packet, don't decrypt
if already decrypted. Add mapToHex method to keyid. Simplify emailRegEx.
2013-11-16 22:08:42 +01:00
Thomas Oberndörfer
1be6b8b858 Remove keyring from openpgp namespace. Optimize keyid initialization. 2013-10-24 12:19:46 +02:00
Thomas Oberndörfer
b544343c63 Further clean up in message and key class. Make tests run. 2013-10-22 20:15:05 +02:00
Thomas Oberndörfer
b1c9eb71d2 Refactoring message and key class. Implement decryptMessage. 2013-10-21 20:51:46 +02:00
seancolyer
91070f9750 Changing main api to be more key dependent 2013-10-18 21:46:38 -04:00
seancolyer
7cfa0ab705 Cleanup, creating armor enums 2013-10-18 21:18:38 -04:00
Thomas Oberndörfer
646e370df7 First draft of encrypt message function 2013-10-18 20:21:58 +02:00
seancolyer
8baaa7f511 Fixing the signature to work properly with "hashed" subpackets. 2013-10-17 23:03:13 -04:00
seancolyer
4872b8c720 Work towards signature. There seems to be an issue with generating the
dates of signature packets, gpg is unable to read the results. We used
to do this correctly, so need to figure out exactly what's different..
2013-10-15 22:46:32 -04:00
seancolyer
52cf3eced8 Working towards key generation, started cleanup of config, changing
armor api slightly to pass in whether or not to show version string, not
entirely happy with current solution.
2013-10-14 22:52:10 -04:00
seancolyer
42f26e543e Work around key generation. We need to get the signature data-passing
platform ironed out for things like certifying keypairs/user ids.
2013-10-13 15:39:45 -04:00
seancolyer
11acf33665 Including @arlolra changes to improve MillerRabin 2013-10-09 19:16:31 -04:00
seancolyer
b94566a154 Rebuilding binaries. Fixing minor issue with PR#105 2013-10-09 19:09:54 -04:00
Sean Colyer
81fdb00418 Merge pull request #111 from cryptoreddit/patch-1
In Base64 encoding, if result ends in \n, remove it. (Fixes #79, #105)
2013-10-09 16:06:42 -07:00
Sean Colyer
a856396016 Merge pull request #82 from arlolra/bases
Avoid repeating bases in MillerRabin.
2013-10-09 16:05:19 -07:00
Sean Colyer
14e50a4661 Merge pull request #105 from dcposch/master
Fixed ASCII armor decoding bug
2013-10-09 15:44:35 -07:00
cryptoreddit
ad1983ac12 In Base64 encoding, if result ends in \n, remove it. (Fixes #79, #105) 2013-10-09 09:58:13 -07:00
Niklas Femerstrand
4379bba2cd Fixes erroneous linefeed handle in write_signed_message()
Fixes #109, courtsey of encomiast
2013-10-09 23:36:46 +07:00
seancolyer
7abaa43497 Initial gruntfile support. Forcing a standardized style. 2013-10-08 22:33:36 -04:00
seancolyer
fae321a1e3 Further test work, make keyring marginally work. Start end-to-end work. 2013-10-08 21:54:40 -04:00
seancolyer
30d2c38f00 Started cleaning up the public API/Keyring to use the "packetlist"
concept. More cleanup still to do, also need to determine best way to
submodule keyring. Ripping out previous packet.io addition because it
isn't needed/ goes against packetlist.
2013-10-06 21:44:46 -04:00
DC
d19d1993c6 Fixed ASCII armor decoding bug
Sometimes, there's a blank line between the encoded message body and the checksum line at the end. In those cases, decryption used to crash. Changed only openpgp_encoding_deArmor() in openpgp.encoding.asciiarmor.js to make it resilient to this case.

Cleaned up copy+pasted code in the same function. No other changes.
2013-09-22 20:29:33 -07:00
seancolyer
766d3e34fe Start working on openpgp.sigcheck.js tests. I have exposed packetParser
as packet.io to src/openpgp.js, I think that will quickly be revisited.
2013-09-21 19:39:15 -04:00
atrevarrow
41f0a040e9 Fixed DES/TripleDES padding and added unit tests 2013-08-27 23:23:58 +12:00
seancolyer
ba8a964d05 Merge branch 'pr/95'. Had to manually build make because previously
merged pr96.

Conflicts:
	resources/openpgp.js
	resources/openpgp.min.js
2013-08-25 19:11:12 -04:00
seancolyer
020a46ea3b Test cleanup. 2013-08-22 22:47:46 -04:00
Thomas Oberndörfer
ee993ec623 Convert userId to UTF8 before generating signature 2013-08-20 16:24:23 +02:00
seancolyer
ae1cb14bfb Further test cleaning. openpgp.crypto.js test runs now, next step, make
it pass.
2013-08-19 21:24:17 -04:00
seancolyer
b7d0322b8e Test cleanup, and fall out from that. test/crypto/openpgp.crypto.js is
still broken because DSA still has issues. I'm guessing elgamal will too
once the DSA ones are fixed.
2013-08-18 17:37:37 -04:00
atrevarrow
86df06f8da Fixed DES/TripleDES padding issues which fixed broken TripleDES unit test; added unit tests for DES padding 2013-08-14 00:33:00 +12:00
Thomas Oberndörfer
322f57cc17 Handle wrong UTF8 encodings gracefully 2013-07-12 14:59:38 +02:00
Thomas Oberndörfer
a2db324605 Fix exception in packet.keymaterial.getKeyId() for V3 keys 2013-06-27 11:50:01 +02:00
Thomas Oberndörfer
5898cea4de DeArmor: remove whitespace of blank line 2013-06-25 16:25:10 +02:00
Arlo Breault
ab32d1b9e1 Avoid repeating bases in MillerRabin. 2013-06-15 22:39:32 -07:00
Michal Kolodziej
7d6cc3c771 Initial support for node.js testing. 2013-05-12 23:27:48 +02:00
Michal Kolodziej
c77a17cf31 Twofish test is working once more. 2013-05-12 19:05:13 +02:00
Michal Kolodziej
3537b92a51 Cleanup of symmetric crypto functions and definitions. Broke a few tests. 2013-05-12 14:27:23 +02:00
Michal Kolodziej
664ab71686 Switch to browserify. Basic unit tests are working. 2013-05-11 21:55:48 +02:00
Michal Kolodziej
18236ac097 A ton of changes regarding browserify support. Non functional as of now. 2013-05-11 16:03:25 +02:00
Michal Kolodziej
f421dc0d72 Restructuring and more work on browserify support. 2013-05-11 08:25:53 +02:00
Michal Kolodziej
ccc0a4eb48 Initial browserify support. Symmetric encryption algorithms
and hashes are now working.
2013-05-10 23:50:00 +02:00
Michal Kolodziej
844ebcf254 Minor fixes, work on the msg.* subsystem. 2013-05-10 22:48:11 +02:00
Michal Kolodziej
c64c75bf04 Merged public and secret keys where appropriate. 2013-05-10 19:09:24 +02:00
Michal Kolodziej
77acb5a59a Working signature creation. 2013-05-09 16:51:25 +02:00
Michal Kolodziej
1e49e8ee23 Encryption of secret key packets is working. 2013-05-09 14:25:09 +02:00
Michal Kolodziej
ab31b39d2f Signature verification on primary key is working! 2013-05-09 09:31:50 +02:00
Michal Kolodziej
ba68203b56 Changed up the verification api - it accepts multiple packets now. 2013-05-08 23:11:57 +02:00
Michal Kolodziej
e1e2223e8f Signature verification is working on literal packets. 2013-05-08 13:04:25 +02:00
Michal Kolodziej
3d25fdf8bf Work on bending the signature packet to my will. 2013-05-04 23:05:46 +02:00
Michal Kolodziej
dd5d0c801c Secret key packet decryption is working though, there
is still work to be done in the decryption function
as it's quite a mess still.
2013-04-27 18:14:57 +02:00
Michal Kolodziej
a907dfa7c9 Fixed time. 2013-04-27 16:46:19 +02:00
Michal Kolodziej
03382cbec1 Made sym key and s2k writable. 2013-04-27 16:15:07 +02:00
Michal Kolodziej
a115cccc53 Fixed s2k implementation somewhat. 2013-04-26 18:54:41 +02:00
Michal Kolodziej
1f9bc46a81 Encryption to a subkey from a GPG generated message is working.
Still no decryption and keys are transmitted in plaintext!
2013-04-26 15:48:19 +02:00
Michal Kolodziej
6fe166fa87 Reading of unencrypted secret key packets seems to be working. 2013-04-25 17:28:43 +02:00
Michal Kolodziej
530a9a0c69 Changed mpi interface to a more sane variant - openpgp
methods MUST return openpgp_type_mpi, using BigIntegers
is prohibited as otherwise the wrapper has no point.
2013-04-24 10:46:43 +02:00
Michal Kolodziej
6d45a19f88 Public key encrypted sesssion key is working. 2013-04-24 09:08:55 +02:00
Michal Kolodziej
43c5d1b30d Changed up the interface. Instead of a dedicated list,
all packets are directly on the packetlist object.
2013-04-23 10:19:01 +02:00
Michal Kolodziej
38330ea4a6 Sym encrypted session key is working, decryption of messages
from gpg works too! Fixed some minor bugs and got rid of a
few globals.
2013-04-23 10:03:28 +02:00
Michal Kolodziej
3a3764a436 Added test and working code to the sym encrypted integrity protected packet. 2013-04-22 19:56:51 +02:00
Michal Kolodziej
3f04470e1f First working packet: writing/reading sym encrypted
and literal packets is working. Tests added.
2013-04-22 18:03:50 +02:00
Michal Kolodziej
c190784ffd Working on making the new packet infrastructure run. 2013-04-22 17:04:20 +02:00
Michal Kolodziej
93a7a751fd Started work on providing an uniform interface to all
packet classes that actually uses the object values
instead of igroring them.
2013-04-21 20:38:19 +02:00
seancolyer
aa8a7f94f1 Switching default hash preference to SHA256. 2013-04-20 22:16:32 -04:00
Sean Colyer
21726d5b8b Merge pull request #72 from dreamingofelectricsheep/ascii-fix
Fixed handling of windows line endings within the ascii dearmoring
2013-04-20 17:40:45 -07:00
Michal Kolodziej
23295342fc Added utf8 awareness to the literal and userid packet classes. Made s2k
work correctly with utf8 strings. Fixeda visibility issue with the
testing suite and added relevant unit tests.
2013-04-16 10:47:17 +02:00
Michal Kolodziej
6d7df71c58 Fixed handling of windows line endings within the ascii
dearmoring function.
2013-04-15 16:37:54 +02:00
Michal Kolodziej
51f8f95807 Finished changing all the javascript files, the documentation
now correctly generates via the use of the makefile.
2013-04-12 14:21:07 +02:00
Michal Kolodziej
6242e72a1d Crypto.sym 2013-04-12 13:04:00 +02:00
Michal Kolodziej
8545feb03d Fixed documentation for cfb and crypto files 2013-04-12 13:00:09 +02:00
seancolyer
f69fa5ccab Fix bug with key material expecting s2k.type to exist which breaks with
passphrase-free keys.
2013-03-06 20:36:26 -05:00
Sean Colyer
1778756c70 Merge pull request #66 from toberndo/hushmail_keys
Fix exception on unknown signature
2013-02-28 05:39:38 -08:00
Thomas Oberndörfer
37ade02c32 Fix exception on unknown signature 2013-02-28 10:28:10 +01:00
Thomas Oberndörfer
a5c1740729 V4 keys: prefer subkeys for encryption 2013-02-28 10:11:53 +01:00
Brian Bloniarz
2bb3c30025 openpgp_keyring include subkeys by ID
openpgp_keyring.getPublicKeysForKeyId will now search subkeys
when looking for the ID, and return a key object based on that
subkey.

Updated to add a method, getSubKeyAsKey, to openpgp_msg_publickey.
This returns a full-fledged openpgp_msg_publickey object for a
chosen subkey.
2013-02-13 22:31:27 -08:00
Brian Bloniarz
4a99ed0dfa Add support for GnuPG type 1001 s2k extension
This is a Gnu extension for private keys with stripped secrets, which
can be created by GnuPG's --export-secret-subkeys mode.

Before this patch, "ERROR:  unknown s2k type! 101" would be logged as an
error (though other than that, things seemed to function normally).
2013-02-06 08:36:56 -08:00
Brian Bloniarz
a2f343995a fix array index in verify() with multiple pubkeys.
The log message was showing the Ith userId of the Ith pubkey,
which may not exist. All other code paths use the 0th userid
of the Ith pubkey, do that too.
2013-02-06 08:31:06 -08:00
Brian Bloniarz
b128e2c521 Fix signature check scoping issue.
Signature checks were failing, in the binary-document case of
openpgp_packet_signature.verify() the variable i was being referenced
when there was no i in scope; instead it was getting 8 from a global
variable i, and trimming 8 bytes off the beginning of the data.

The global i was being set by the CAST5 cipher -- this also fixes
that to be a local variable.

Also add unit test to confirm.
2013-02-06 08:26:16 -08:00
seancolyer
77974db1a6 Merge branch 'refactor'. Also marking resources/openpgp*.js files as
binary to make some merge/diffing easier.

Conflicts:
	resources/openpgp.js
	resources/openpgp.min.js
2013-01-14 20:44:58 -05:00
freewil
7dfda1ebf4 fix 2 minor typos 2013-01-04 11:58:51 -05:00
Sean Colyer
968dca9436 Initial work with refactor. Everything should still be functional, but more cleanup can still be done. 2012-10-07 23:44:58 -04:00
Sean Colyer
a50c7a7f4d Fix for ZLIB issue (endless loop), and dynamic header lengths. 2012-10-06 11:39:07 -04:00
Sean Colyer
7aa4a83474 Updates to documentation. Most all classes should now be jsdoc compliant. 2012-09-11 21:54:42 -04:00
Sean Colyer
9f4df57679 Added more jsdoc. 2012-09-05 21:59:31 -04:00
Thomas Oberndörfer
051253c383 Add extractPublicKey() method to private key 2012-09-04 10:20:52 +02:00
Thomas Oberndörfer
0ec3252ba5 Use JXG for ZIP decompression 2012-08-27 14:33:48 +02:00
Sean Colyer
f300b0a1c0 Started modifying inline docs to work with jsdoc3 project, https://github.com/jsdoc3/jsdoc. Built doc based on our source and added to doc directory. Our inline docs need more cleanup, but this document structure looks promising. 2012-08-21 23:23:06 -04:00
Sean Colyer
a82b075a01 Merge branch 'master' of github.com:openpgpjs/openpgpjs into HEAD
Conflicts:
	resources/openpgp.js
	resources/openpgp.min.js
2012-07-30 20:48:10 -04:00
Sean Colyer
bfe37309b0 Change to ignore case when looking up keys. Change to transform both input and keyring keys to use .toLowerCase().
Prompted by: https://github.com/seancolyer/gmail-crypt/issues/12
2012-07-30 20:43:41 -04:00
Sean Colyer
9165232017 Changes to build process to show version number as date rather than hardcoded 0.1. Small doc change. 2012-07-30 20:07:48 -04:00
Thomas Oberndörfer
e42b53199e Use jsxcompressor for ZLIB compressed data packets 2012-06-26 17:06:33 +02:00
Thomas Oberndörfer
028ee46d81 Merge zip.js and inflate.js into zip.js due to dependency in execution order. Remove inflate.js. Add import for zlib compression to test/encryption.html 2012-06-25 10:30:46 +02:00
Thomas Oberndörfer
0ce9a0587d Cleanup: bring tag type blocks in read_message() in order (non-functional) 2012-06-19 18:01:29 +02:00
Thomas Oberndörfer
717fc47fa4 Fix endless loop in read_message() for messages that start with Marker packet 2012-06-19 18:00:55 +02:00
Sean Colyer
3109555137 Added some verification to keyring to check valid email address is being queried. Added a regex to util.js that we can use throughout. 2012-05-07 21:39:43 -04:00
Sean Colyer
245c93440f Added decompression for RFC 1950 - ZLIB. Based this off of the fact that this RFC is heavily dependent on RFC 1951. This solution isn't perfect, it doesn't check the ADLER 32. This is a TODO. 2012-04-29 00:01:07 -04:00
Sean Colyer
66a090c85d Added support for Decompressing messages of Type 1, RFC 1951 - ZIP. 2012-04-28 00:16:00 -04:00
Tankred Hase
7d2723009b fixed getPrivateKeyForKeyId... I hope 2012-04-24 15:14:24 +08:00
Sean Colyer
c86c6043de Fix key generation s2k c value to be a constant 96, which will equate to an iterator of 65536. This is the standard GPG uses. 2012-04-20 21:14:37 -04:00
Sean Colyer
909d41a9ff s2k optimization for large iter values in type 3 s2k. 2012-04-15 23:01:10 -04:00
Sean Colyer
5aba0b2c46 Merge branch 'master' of github.com:openpgpjs/openpgpjs
Conflicts:
	resources/openpgp.js
	resources/openpgp.min.js
2012-04-10 22:08:51 -04:00
Sean Colyer
7228228d96 Updates to work for s2k with AES encryption. Added numBytes to s2k reading with passphrase to account for s2k encryption with blocksize > hashsize output. 2012-04-10 22:04:29 -04:00
Tankred Hase
1f7a503fb1 refactored sha.js internally with module pattern so that it does not require a reference to the window object... external api stays the same 2012-04-06 19:42:44 +08:00
Tankred Hase
61d905e5de modularized symmetric crypto code into its own js file, since openpgp.crypto.js accesses the window and document objects 2012-04-06 17:35:13 +08:00
Sean Colyer
83ac8fe762 Added decryptAndVerifySignature to msg class. A modification of the original decrypt function, provides the ability to specify public keys to check signature against. 2012-03-28 21:17:18 -04:00
Tankred Hase
b348ccc2ab MD5 now returns binary string format instead of hex 2012-03-18 22:48:44 +11:00
Tankred Hase
74c544eb1f added faster md5 implementation 2012-03-17 22:37:25 +11:00
Sean Colyer
7375cf64ad Changes to address issue in key generation where sometimes key ID's would not match between public/private keys. Time data was not being carried between the packet generation as it should have been. 2012-03-06 19:36:59 -05:00
Sean Colyer
cd509caa70 Changes to key generation to allow for creation of keys with passphrase. uses s2k type 3: salt+iter when a passphrase is provided. 2012-03-01 23:40:16 -05:00
Sean Colyer
d11fbaa1df Changes to optimize decrypting. Changed toString in tag 18 to only print data in debug. 2012-02-20 23:27:57 -05:00
Sean Colyer
13b52ebd51 Included CRC-24 Lookup table. Changes to keyring so importing return booleans, allow for password import of private key. 2012-02-20 22:22:36 -05:00
Sean Colyer
e4915a2fcd Changes to printing statements for optimizations. 2012-02-15 21:52:45 -05:00
Sean Colyer
55496a3437 changes for github issue 25. [GPGTools compatibility] decryptSecretMPIs fails 2012-02-15 21:31:54 -05:00
Sean Colyer
645bbf3f16 Changed some debug statements to only call hexstrdump if debug is inactive by creating new print_debug_hexstr_dump method. Applied only for Tag 18 and overall package at this point, will push to full project after further testing. 2012-02-02 08:56:17 -05:00
Sean Colyer
0a651bdd53 Optimized string concatenation in symmetric encryption. Slow large file encryption led to investigating that string concatenation used was inefficient(switched to an array). 2012-02-02 00:28:24 -05:00
Sean Colyer
4640686683 Changes for key generation. Basic RSA key generation now seems fully functional within the openpgp.js, but experiencing an issue interfacing with gpg. 2012-01-29 16:58:11 -05:00
Sean Colyer
15bf0e144c Few bugfixes. Testing for key generation has revealed is currently broken. Investigating. 2012-01-16 21:31:46 -05:00
Alexander Willner
f02f6a1f40 changed GPG4Browsers to OpenPGP.js 2012-01-16 11:26:00 +01:00
Sean Colyer
a08d91f728 Changes to allow for key generation. Provides a basic framework for key generation with a functioning RSA implementation. Still work to be done for s2k and subkeys. 2012-01-16 00:04:27 -05:00
Sean Colyer
17b7f95e3c Few small additions/bugfixes in openpgp.keyring.js 2012-01-04 21:39:32 -05:00
Alexander Willner
5a37c01350 updated documentation 2011-12-16 18:12:39 +01:00
Alexander Willner
1ea0f6d114 refactoring and implemented comment option #17 2011-12-16 18:04:17 +01:00
Alexander Willner
b1062552bf added new option for #17 2011-12-16 18:03:52 +01:00
Alexander Willner
a0010422ed refactoring for #17 2011-12-16 17:49:58 +01:00
Carsten Wentzlow
377dd12d19 - added encryption.html for testing encrytion / decryption of messages 2011-12-14 11:33:20 +01:00
Carsten Wentzlow
f486f601af - unit test for the openpgp_crypto API
- less debug output on blowfish and twofish test vectors
- adjusted unit test table width in css
2011-12-12 18:11:17 +01:00
Carsten Wentzlow
d80e04d3f0 adding openpgp_encoding_eme_pkcs1_decode() function replacing the PKCS1 decoding in the encryptedsessionkey packet 2011-12-12 16:35:53 +01:00
Carsten Wentzlow
1c9aa9b781 bugfix in openpgp_crypto_getRandomBigIntegerInRange() using compareTo() from BigInteger library 2011-12-12 16:34:11 +01:00
Carsten Wentzlow
4f4d3b3a41 - removing executable flag from files 2011-12-09 18:29:47 +01:00
Carsten Wentzlow
81212f213f adding restructured GPG4Browsers code
- created a test suite available at test/index.html
- fixed a bug in MD5 calculation
2011-12-09 18:25:41 +01:00
Alexander Willner
aafc8b0ee4 structure 2011-11-13 11:50:49 +01:00