OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / tendermint / go-crypto / armor.go
1 package crypto
2
3 import (
4         "bytes"
5         "io/ioutil"
6
7         . "github.com/tendermint/tmlibs/common"
8         "golang.org/x/crypto/openpgp/armor"
9 )
10
11 func EncodeArmor(blockType string, headers map[string]string, data []byte) string {
12         buf := new(bytes.Buffer)
13         w, err := armor.Encode(buf, blockType, headers)
14         if err != nil {
15                 PanicSanity("Error encoding ascii armor: " + err.Error())
16         }
17         _, err = w.Write(data)
18         if err != nil {
19                 PanicSanity("Error encoding ascii armor: " + err.Error())
20         }
21         err = w.Close()
22         if err != nil {
23                 PanicSanity("Error encoding ascii armor: " + err.Error())
24         }
25         return buf.String()
26 }
27
28 func DecodeArmor(armorStr string) (blockType string, headers map[string]string, data []byte, err error) {
29         buf := bytes.NewBufferString(armorStr)
30         block, err := armor.Decode(buf)
31         if err != nil {
32                 return "", nil, nil, err
33         }
34         data, err = ioutil.ReadAll(block.Body)
35         if err != nil {
36                 return "", nil, nil, err
37         }
38         return block.Type, block.Header, data, nil
39 }