// Copyright 2019 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package note_test import ( "fmt" "io" "os" "golang.org/x/mod/sumdb/note" ) func ExampleSign() { skey := "PRIVATE+KEY+PeterNeumann+c74f20a3+AYEKFALVFGyNhPJEMzD1QIDr+Y7hfZx09iUvxdXHKDFz" text := "If you think cryptography is the answer to your problem,\n" + "then you don't know what your problem is.\n" signer, err := note.NewSigner(skey) if err != nil { fmt.Println(err) return } msg, err := note.Sign(¬e.Note{Text: text}, signer) if err != nil { fmt.Println(err) return } os.Stdout.Write(msg) // Output: // If you think cryptography is the answer to your problem, // then you don't know what your problem is. // // — PeterNeumann x08go/ZJkuBS9UG/SffcvIAQxVBtiFupLLr8pAcElZInNIuGUgYN1FFYC2pZSNXgKvqfqdngotpRZb6KE6RyyBwJnAM= } func ExampleOpen() { vkey := "PeterNeumann+c74f20a3+ARpc2QcUPDhMQegwxbzhKqiBfsVkmqq/LDE4izWy10TW" msg := []byte("If you think cryptography is the answer to your problem,\n" + "then you don't know what your problem is.\n" + "\n" + "— PeterNeumann x08go/ZJkuBS9UG/SffcvIAQxVBtiFupLLr8pAcElZInNIuGUgYN1FFYC2pZSNXgKvqfqdngotpRZb6KE6RyyBwJnAM=\n") verifier, err := note.NewVerifier(vkey) if err != nil { fmt.Println(err) return } verifiers := note.VerifierList(verifier) n, err := note.Open(msg, verifiers) if err != nil { fmt.Println(err) return } fmt.Printf("%s (%08x):\n%s", n.Sigs[0].Name, n.Sigs[0].Hash, n.Text) // Output: // PeterNeumann (c74f20a3): // If you think cryptography is the answer to your problem, // then you don't know what your problem is. } var rand = struct { Reader io.Reader }{ zeroReader{}, } type zeroReader struct{} func (zeroReader) Read(buf []byte) (int, error) { for i := range buf { buf[i] = 0 } return len(buf), nil } func ExampleSign_add_signatures() { vkey := "PeterNeumann+c74f20a3+ARpc2QcUPDhMQegwxbzhKqiBfsVkmqq/LDE4izWy10TW" msg := []byte("If you think cryptography is the answer to your problem,\n" + "then you don't know what your problem is.\n" + "\n" + "— PeterNeumann x08go/ZJkuBS9UG/SffcvIAQxVBtiFupLLr8pAcElZInNIuGUgYN1FFYC2pZSNXgKvqfqdngotpRZb6KE6RyyBwJnAM=\n") verifier, err := note.NewVerifier(vkey) if err != nil { fmt.Println(err) return } verifiers := note.VerifierList(verifier) n, err := note.Open([]byte(msg), verifiers) if err != nil { fmt.Println(err) return } skey, vkey, err := note.GenerateKey(rand.Reader, "EnochRoot") if err != nil { fmt.Println(err) return } _ = vkey // give to verifiers me, err := note.NewSigner(skey) if err != nil { fmt.Println(err) return } msg, err = note.Sign(n, me) if err != nil { fmt.Println(err) return } os.Stdout.Write(msg) // Output: // If you think cryptography is the answer to your problem, // then you don't know what your problem is. // // — PeterNeumann x08go/ZJkuBS9UG/SffcvIAQxVBtiFupLLr8pAcElZInNIuGUgYN1FFYC2pZSNXgKvqfqdngotpRZb6KE6RyyBwJnAM= // — EnochRoot rwz+eBzmZa0SO3NbfRGzPCpDckykFXSdeX+MNtCOXm2/5n2tiOHp+vAF1aGrQ5ovTG01oOTGwnWLox33WWd1RvMc+QQ= }