Documentation
¶
Index ¶
- func Decoder(b []byte, v **stdpem.Block) error
- func Encoder(v *stdpem.Block) ([]byte, error)
- func NewCodec() encoding.Codec[*stdpem.Block, []byte]
- func NewStreamCodec() encoding.StreamCodec[*stdpem.Block]
- func StreamDecoder(r io.Reader, v **stdpem.Block) error
- func StreamEncoder(w io.Writer, v *stdpem.Block) error
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewCodec ¶
NewCodec returns a PEM codec. It is safe for concurrent use.
Example ¶
package main
import (
stdpem "encoding/pem"
"fmt"
"github.com/foomo/goencode/pem"
)
func main() {
c := pem.NewCodec()
block := &stdpem.Block{
Type: "TEST",
Bytes: []byte("hello"),
}
encoded, err := c.Encode(block)
if err != nil {
fmt.Printf("Encode failed: %v\n", err)
return
}
fmt.Printf("Encoded:\n%s", string(encoded))
var decoded *stdpem.Block
if err := c.Decode(encoded, &decoded); err != nil {
fmt.Printf("Decode failed: %v\n", err)
return
}
fmt.Printf("Decoded Type: %s\n", decoded.Type)
fmt.Printf("Decoded Bytes: %s\n", string(decoded.Bytes))
}
Output: Encoded: -----BEGIN TEST----- aGVsbG8= -----END TEST----- Decoded Type: TEST Decoded Bytes: hello
func NewStreamCodec ¶
func NewStreamCodec() encoding.StreamCodec[*stdpem.Block]
NewStreamCodec returns a PEM stream codec. It is safe for concurrent use.
Example ¶
package main
import (
"bytes"
stdpem "encoding/pem"
"fmt"
"github.com/foomo/goencode/pem"
)
func main() {
c := pem.NewStreamCodec()
block := &stdpem.Block{
Type: "TEST",
Bytes: []byte("hello"),
}
var buf bytes.Buffer
if err := c.Encode(&buf, block); err != nil {
fmt.Printf("Encode failed: %v\n", err)
return
}
var decoded *stdpem.Block
if err := c.Decode(&buf, &decoded); err != nil {
fmt.Printf("Decode failed: %v\n", err)
return
}
fmt.Printf("Decoded Type: %s\n", decoded.Type)
fmt.Printf("Decoded Bytes: %s\n", string(decoded.Bytes))
}
Output: Decoded Type: TEST Decoded Bytes: hello
func StreamDecoder ¶ added in v0.2.0
StreamDecoder decodes a PEM block from a stream.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.