Documentation ¶
Overview ¶
pgpmime implements MIME security with OpenPGP, as defined in RFC 3156.
Index ¶
Examples ¶
Constants ¶
View Source
const MessageType = "PGP MESSAGE"
MessageType is the armored type for PGP encrypted messages.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Writer ¶
type Writer interface { io.WriteCloser // ContentType returns the content type of the PGP/MIME message. ContentType() string }
Writer writes a PGP/MIME message body.
func Encrypt ¶
func Encrypt(w io.Writer, h textproto.MIMEHeader, to []*openpgp.Entity, signed *openpgp.Entity, config *packet.Config) (cleartext Writer)
Encrypt creates a new encrypted PGP/MIME message writer.
Example ¶
var b bytes.Buffer // Create the mail header mh := mail.NewHeader() mh.SetAddressList("From", []*mail.Address{{"Mitsuha Miyamizu", "mitsuha.miyamizu@example.org"}}) mh.SetSubject("Your Name") // Create the text part header th := mail.NewTextHeader() th.SetContentType("text/plain", nil) // Create a new PGP/MIME writer var ciphertext struct{ *message.Writer } cleartext := pgpmime.Encrypt(&ciphertext, textproto.MIMEHeader(th.Header), to, nil, nil) // Add the PGP/MIME Content-Type header field to the mail header mh.Set("Content-Type", cleartext.ContentType()) // Create a new mail writer with our mail header mw, err := message.CreateWriter(&b, mh.Header) if err != nil { log.Fatal(err) } // Set the PGP/MIME writer output to the mail body ciphertext.Writer = mw // Write the cleartext body _, err = io.WriteString(cleartext, "What's your name?") if err != nil { log.Fatal(err) } // Close all writers if err := cleartext.Close(); err != nil { log.Fatal(err) } if err := mw.Close(); err != nil { log.Fatal(err) } log.Println(b.String())
Output:
func Sign ¶
func Sign(w io.Writer, h textproto.MIMEHeader, signer *openpgp.Entity, config *packet.Config) (message Writer)
Sign creates a new signed PGP/MIME message writer.
Example ¶
var b bytes.Buffer e, err := openpgp.NewEntity("Mitsuha Miyamizu", "", "mitsuha.miyamizu@example.org", nil) if err != nil { log.Fatal(err) } mh := mail.NewHeader() mh.SetAddressList("From", []*mail.Address{{"Mitsuha Miyamizu", "mitsuha.miyamizu@example.org"}}) mh.SetSubject("Your Name") bh := mail.NewTextHeader() bh.SetContentType("text/plain", nil) var signed struct{ *message.Writer } body := pgpmime.Sign(&signed, textproto.MIMEHeader(bh.Header), e, nil) mh.Set("Content-Type", body.ContentType()) mw, err := message.CreateWriter(&b, mh.Header) if err != nil { log.Fatal(err) } signed.Writer = mw _, err = io.WriteString(body, "What's your name?") if err != nil { log.Fatal(err) } if err := body.Close(); err != nil { log.Fatal(err) } if err := mw.Close(); err != nil { log.Fatal(err) } log.Println(b.String())
Output:
Click to show internal directories.
Click to hide internal directories.