40 lines
680 B
Go
40 lines
680 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"encoding/pem"
|
||
|
"flag"
|
||
|
"fmt"
|
||
|
"io/ioutil"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
var ext = ".bin"
|
||
|
|
||
|
func stripPEM(path string) error {
|
||
|
data, err := ioutil.ReadFile(path)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
p, rest := pem.Decode(data)
|
||
|
if len(rest) != 0 {
|
||
|
fmt.Fprintf(os.Stderr, "[WARNING] extra data in PEM file\n")
|
||
|
fmt.Fprintf(os.Stderr, " (only the first object will be decoded)\n")
|
||
|
}
|
||
|
|
||
|
return ioutil.WriteFile(path+ext, p.Bytes, 0644)
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
flag.Parse()
|
||
|
|
||
|
for _, path := range flag.Args() {
|
||
|
err := stripPEM(path)
|
||
|
if err != nil {
|
||
|
fmt.Fprintf(os.Stderr, "processing %s failed: %v\n", path, err)
|
||
|
} else {
|
||
|
fmt.Println(path, "->", path+ext)
|
||
|
}
|
||
|
}
|
||
|
}
|