Commit Graph
23 Commits
Author SHA1 Message Date
Adam Langley 7bb6c099c0 go.crypto/openpgp: support v3 detached signatures.
Although the package doesn't attempt to fully support ancient, version
3 messages, supporting v3 detached signatures is fairly easy and some
projects (in this case, Ubuntu) are using them for unknown reasons.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/14590043
2013-10-09 17:24:09 -04:00
Casey Marshall 58b09dec0e openpgp/packet: Compact UserAttribute subpacket lengths, fixes signatures.
Necessary to reproduce the same hash for verifying a UserAttribute signature.
Reuse and fix defect in serializeSubpacketLength, RFC 4880, Section 4.2.2.2.

R=agl
CC=golang-dev
https://golang.org/cl/13464044
2013-09-04 10:21:45 -04:00
Casey Marshall 964142eb52 openpgp/packet: Add support for V3 public keys and signatures.
My goal here is to allow read-only access to legacy key material without allowing new V3 keys or signatures.

R=agl
CC=golang-dev
https://golang.org/cl/12746046
2013-09-03 10:36:04 -04:00
Adam Langley 488d045bc0 go.crypto/openpgp/packet: use minimal interface for SerializeSignaturePrefix.
Only an io.Writer is needed in this case.

Fixes golang/go#6035.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/13277044
2013-08-30 10:38:22 -04:00
Casey Marshall da934910d6 openpgp/packet: Parse and serialize ECC key material (RFC 6637).
Support ECDSA signature verification.

R=agl
CC=golang-dev
https://golang.org/cl/13141044
2013-08-29 17:10:08 -04:00
Casey Marshall 3780a70b7b go.crypto/openpgp/packet: Add user attribute packet support.
Supports JPEG images as well as free-form arbitrary subpacket data in
user attributes (RFC 4880, Section 5.12)

R=agl
CC=golang-dev
https://golang.org/cl/12966045
2013-08-28 11:02:21 -04:00
Brian Gitonga Marete 690e22b80a openpgp: Implement compressed data packets & add support for compressing data during symmetric encryption.
This patch implements the facilities needed to compress data before
encryption as allowed (and recommended) by RFC 4880. The new
functionality is then used to add support for compressing data during
symmetric encryption (openpgp.SymmetricallyEncrypt()).

For now, compression defaults to off. Also, only the ZIP and ZLIB
compression schemes are supported by this patch.

Resulting output tested/verified using GPG.

https://gist.github.com/marete/6189760 is a small program that can be
used to test that the output of various compression/encryption settings
can be read by GPG or other RFC 4880 programs.

Upon review, I will follow this patch with 2 others: a) Add support for 	compression during public key encryption (openpgp.Encrypt()) b) Enable
compression by default (subject to the restrictions of the "Compression 	Preferences" section in RFC 4880).

R=golang-dev, agl
CC=golang-dev
https://golang.org/cl/12685044
2013-08-15 12:04:10 -04:00
Adam Langley f23aef828f go.crypto/openpgp: test that hashes are compiled in before using them.
Previously, if Encrypt decided to use a hash function that wasn't
compiled in then it would panic.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/12055043
2013-08-05 14:22:57 -04:00
Adam Langley eb19e229bd go.crypto/openpgp: don't select expired keys.
When selecting keys for encryption, don't select keys that have
expired.

Fixes golang/go#5808.

R=bradfitz
CC=golang-dev
https://golang.org/cl/10847043
2013-07-22 18:23:28 -04:00
Drew Hintz 0982ebf089 crypto: Correct s2k type constants. They are 0,1,3 according to both the RFC: http://tools.ietf.org/html/rfc4880#section-3.7
And according to the gpg implementation: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git&a=search&h=refs%2Fheads%2FSTABLE-BRANCH-2-0&st=grep&s=s2kmode

R=agl
CC=evn, golang-dev
https://golang.org/cl/11355046
2013-07-16 17:39:57 -04:00
Brian Gitonga Marete d43a35d821 openpgp: Add support for BZIP2-compressed data packets.
Tested using a variety of files encrypted with gpg and the
"--compress-algo BZIP2" gpg option.

R=golang-dev, bradfitz, agl
CC=golang-dev
https://golang.org/cl/10801043
2013-07-03 11:31:17 -04:00
Adam Langley aa0f5b4081 go.crypto: revert 7f5a59ff6b43.
This change reverts https://golang.org/cl/10113043/ because
some folks are stuck on 1.0 till 1.1.1 comes out.

R=golang-dev
CC=golang-dev
https://golang.org/cl/10151043
2013-06-10 10:57:00 -04:00
Adam Langley eca6c1626e go.crypto: remove unreachable code.
I ran go vet over all of go.crypto and removed lots of panic("unreachable") that are no longer needed.

R=golang-dev, r, dgryski
CC=golang-dev
https://golang.org/cl/10113043
2013-06-07 16:05:15 -04:00
Casey Marshall 50ff460fe1 openpgp: remove TeeReader from packet.Read
This is a followup to issue 6927044. I *really* don't want to
break streaming for large encrypted data packets.

Removing the automatic re-parsing. OpaqueReader can be
used for recovering useful information from mangled/unsupported packets.

R=agl
CC=golang-dev
https://golang.org/cl/6944056
2012-12-18 17:57:21 -05:00
Casey Marshall 2da167fbbe openpgp: improve parser resilience & flexibility, add PublicKey.BitLength()
These are improvements I've made as necessary to develop Hockeypuck,
an OpenPGP keyserver (https://launchpad.net/hockeypuck).

The max armor line length was increased to 96 because some keyservers (SKS)
will output armor with lines greater than 64 (the prior max).

I've exposed packet.ReadEntity to support stream-parsing, useful for
large SKS dump files.

ReadKeyRing attempts to recover in the event of malformed data.

Because many packet types are not yet supported, I added OpaquePacket to
capture unsupported types for offline storage and later reparsing.

R=agl
CC=golang-dev
https://golang.org/cl/6927044
2012-12-15 14:30:05 -05:00
Mikio Hara eeef66c528 go.crypto: gofmt -w -s
R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/6948057
2012-12-15 14:19:17 +09:00
Adam Langley be3c8d448b openpgp: support 3DES encrypted private keys.
It appears that CentOS (and so I presume Fedora/RHEL too) default to
encrypting private keys with 3DES so it looks like we need to support
that.

Fixes golang/go#3940.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/6446121
2012-08-12 17:36:49 -04:00
Adam Langley 63736bd2bf openpgp: fix error strings and typos.
Fixes golang/go#2841.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5688054
2012-02-21 09:52:37 -05:00
Adam Langley 54eafe1dea openpgp: eliminate implicit rand.Reader and time.Now
Fixes golang/go#2501.

R=rsc, bradfitz
CC=golang-dev
https://golang.org/cl/5653067
2012-02-20 10:48:21 -05:00
Andrew Gerrand 1e43631a6e go.crypto/openpgp/armor: update for NewBufferSize signature change
Fixes the go.crypto build.

R=r
CC=golang-dev
https://golang.org/cl/5641049
2012-02-08 14:15:21 +11:00
Adam Langley 303976f059 crypto/openpgp: add clear-signing support.
Clear signed messages are often seen in email and are formatted so
that the plaintext of the signed message is readable without any
special tools.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5604043
2012-02-03 16:46:11 -05:00
Adam Langley a1e605a210 openpgp/packet: move OCFB code here.
The code has been moved from crypto/cipher in CL 5629044.

R=rsc
CC=golang-dev
https://golang.org/cl/5627045
2012-02-03 15:08:12 -05:00
Russ Cox 470549d502 go.crypto: initial code
Manual edits to README.
Moved from main Go repository, deleted Makefiles, ran gofix -r go1rename.

Tested with: go test code.google.com/p/go.crypto/...

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5564059
2012-01-25 15:31:12 -05:00