func doKeyInfo() { b, err := ioutil.ReadFile(*kiFilename) log.Fatale(err, "cannot read keyfile") var sk [64]byte isPrivate, err := spki.LoadKeyFile(bytes.NewReader(b), &sk) log.Fatale(err, "cannot decode keyfile") if isPrivate { fmt.Fprintf(os.Stderr, ";; Ed25519 Private Key\n") } else { fmt.Fprintf(os.Stderr, ";; Ed25519 Public Key\n") } fmt.Fprintf(os.Stderr, ";; Fingerprint: %v\n", hexFormat(sk[32:64])) fmt.Fprintf(os.Stderr, ";; Fingerprint (b32): %v\n", spki.EncodeB32(sk[32:64])) fmt.Fprintf(os.Stderr, "%s", prefix(randomart.Generate(sk[32:64], " Ed25519").String())) var cpk [32]byte var edpub [32]byte copy(edpub[:], sk[32:64]) if !extra25519.PublicKeyToCurve25519(&cpk, &edpub) { log.Fatal("Cannot derive Curve25519 public key.") } fmt.Fprintf(os.Stderr, ";; Curve25519 Fingerprint: %v\n", hexFormat(cpk[:])) fmt.Fprintf(os.Stderr, ";; Curve25519 Fingerprint (b32): %v\n", spki.EncodeB32(cpk[:])) }
func TestB32(t *testing.T) { const c = "rtum6hh5iddpaytvcqq4akx6dem4p66tb4dcrp4avssymxmkkvka" b, err := spki.DecodeB32(c) if err != nil { t.Fatalf("error: %v", err) } s := spki.EncodeB32(b) if s != c { t.Fatalf("mismatch") } }