96 lines
3.0 KiB
Go
96 lines
3.0 KiB
Go
|
// Copyright 2010 The Go Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package armor
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"hash/adler32"
|
||
|
"io/ioutil"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestDecodeEncode(t *testing.T) {
|
||
|
buf := bytes.NewBuffer([]byte(armorExample1))
|
||
|
result, err := Decode(buf)
|
||
|
if err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
expectedType := "PGP SIGNATURE"
|
||
|
if result.Type != expectedType {
|
||
|
t.Errorf("result.Type: got:%s want:%s", result.Type, expectedType)
|
||
|
}
|
||
|
if len(result.Header) != 1 {
|
||
|
t.Errorf("len(result.Header): got:%d want:1", len(result.Header))
|
||
|
}
|
||
|
v, ok := result.Header["Version"]
|
||
|
if !ok || v != "GnuPG v1.4.10 (GNU/Linux)" {
|
||
|
t.Errorf("result.Header: got:%#v", result.Header)
|
||
|
}
|
||
|
|
||
|
contents, err := ioutil.ReadAll(result.Body)
|
||
|
if err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
|
||
|
if adler32.Checksum(contents) != 0x27b144be {
|
||
|
t.Errorf("contents: got: %x", contents)
|
||
|
}
|
||
|
|
||
|
buf = bytes.NewBuffer(nil)
|
||
|
w, err := Encode(buf, result.Type, result.Header)
|
||
|
if err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
_, err = w.Write(contents)
|
||
|
if err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
w.Close()
|
||
|
|
||
|
if !bytes.Equal(buf.Bytes(), []byte(armorExample1)) {
|
||
|
t.Errorf("got: %s\nwant: %s", string(buf.Bytes()), armorExample1)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestLongHeader(t *testing.T) {
|
||
|
buf := bytes.NewBuffer([]byte(armorLongLine))
|
||
|
result, err := Decode(buf)
|
||
|
if err != nil {
|
||
|
t.Error(err)
|
||
|
return
|
||
|
}
|
||
|
value, ok := result.Header["Version"]
|
||
|
if !ok {
|
||
|
t.Errorf("missing Version header")
|
||
|
}
|
||
|
if value != longValueExpected {
|
||
|
t.Errorf("got: %s want: %s", value, longValueExpected)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const armorExample1 = `-----BEGIN PGP SIGNATURE-----
|
||
|
Version: GnuPG v1.4.10 (GNU/Linux)
|
||
|
|
||
|
iJwEAAECAAYFAk1Fv/0ACgkQo01+GMIMMbsYTwQAiAw+QAaNfY6WBdplZ/uMAccm
|
||
|
4g+81QPmTSGHnetSb6WBiY13kVzK4HQiZH8JSkmmroMLuGeJwsRTEL4wbjRyUKEt
|
||
|
p1xwUZDECs234F1xiG5enc5SGlRtP7foLBz9lOsjx+LEcA4sTl5/2eZR9zyFZqWW
|
||
|
TxRjs+fJCIFuo71xb1g=
|
||
|
=/teI
|
||
|
-----END PGP SIGNATURE-----`
|
||
|
|
||
|
const armorLongLine = `-----BEGIN PGP SIGNATURE-----
|
||
|
Version: 0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz
|
||
|
|
||
|
iQEcBAABAgAGBQJMtFESAAoJEKsQXJGvOPsVj40H/1WW6jaMXv4BW+1ueDSMDwM8
|
||
|
kx1fLOXbVM5/Kn5LStZNt1jWWnpxdz7eq3uiqeCQjmqUoRde3YbB2EMnnwRbAhpp
|
||
|
cacnAvy9ZQ78OTxUdNW1mhX5bS6q1MTEJnl+DcyigD70HG/yNNQD7sOPMdYQw0TA
|
||
|
byQBwmLwmTsuZsrYqB68QyLHI+DUugn+kX6Hd2WDB62DKa2suoIUIHQQCd/ofwB3
|
||
|
WfCYInXQKKOSxu2YOg2Eb4kLNhSMc1i9uKUWAH+sdgJh7NBgdoE4MaNtBFkHXRvv
|
||
|
okWuf3+xA9ksp1npSY/mDvgHijmjvtpRDe6iUeqfCn8N9u9CBg8geANgaG8+QA4=
|
||
|
=wfQG
|
||
|
-----END PGP SIGNATURE-----`
|
||
|
|
||
|
const longValueExpected = "0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz"
|