mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-25 02:31:46 +00:00
Add ascii armor support
This commit is contained in:
39
armor.go
Normal file
39
armor.go
Normal file
@ -0,0 +1,39 @@
|
||||
package crypto
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io/ioutil"
|
||||
|
||||
. "github.com/tendermint/go-common"
|
||||
"golang.org/x/crypto/openpgp/armor"
|
||||
)
|
||||
|
||||
func EncodeArmor(blockType string, headers map[string]string, data []byte) string {
|
||||
buf := new(bytes.Buffer)
|
||||
w, err := armor.Encode(buf, blockType, headers)
|
||||
if err != nil {
|
||||
PanicSanity("Error encoding ascii armor: " + err.Error())
|
||||
}
|
||||
_, err = w.Write(data)
|
||||
if err != nil {
|
||||
PanicSanity("Error encoding ascii armor: " + err.Error())
|
||||
}
|
||||
err = w.Close()
|
||||
if err != nil {
|
||||
PanicSanity("Error encoding ascii armor: " + err.Error())
|
||||
}
|
||||
return string(buf.Bytes())
|
||||
}
|
||||
|
||||
func DecodeArmor(armorStr string) (blockType string, headers map[string]string, data []byte, err error) {
|
||||
buf := bytes.NewBufferString(armorStr)
|
||||
block, err := armor.Decode(buf)
|
||||
if err != nil {
|
||||
return "", nil, nil, err
|
||||
}
|
||||
data, err = ioutil.ReadAll(block.Body)
|
||||
if err != nil {
|
||||
return "", nil, nil, err
|
||||
}
|
||||
return block.Type, block.Header, data, nil
|
||||
}
|
Reference in New Issue
Block a user