Blame


1 71191436 2024-02-28 o package apub
2 71191436 2024-02-28 o
3 71191436 2024-02-28 o import (
4 71191436 2024-02-28 o "crypto/rsa"
5 71191436 2024-02-28 o "crypto/x509"
6 71191436 2024-02-28 o "encoding/pem"
7 71191436 2024-02-28 o "fmt"
8 71191436 2024-02-28 o "net/http"
9 71191436 2024-02-28 o "os"
10 71191436 2024-02-28 o "strings"
11 71191436 2024-02-28 o "testing"
12 71191436 2024-02-28 o )
13 71191436 2024-02-28 o
14 71191436 2024-02-28 o func readPrivKey(name string) (*rsa.PrivateKey, error) {
15 71191436 2024-02-28 o b, err := os.ReadFile(name)
16 71191436 2024-02-28 o if err != nil {
17 71191436 2024-02-28 o return nil, err
18 71191436 2024-02-28 o }
19 71191436 2024-02-28 o block, _ := pem.Decode(b)
20 71191436 2024-02-28 o return x509.ParsePKCS1PrivateKey(block.Bytes)
21 71191436 2024-02-28 o }
22 71191436 2024-02-28 o
23 71191436 2024-02-28 o func TestSign(t *testing.T) {
24 71191436 2024-02-28 o req, err := http.NewRequest(http.MethodPost, "http://example.invalid", strings.NewReader("hello, world!"))
25 71191436 2024-02-28 o if err != nil {
26 71191436 2024-02-28 o t.Fatal(err)
27 71191436 2024-02-28 o }
28 71191436 2024-02-28 o key, err := readPrivKey("testdata/private.pem")
29 71191436 2024-02-28 o if err != nil {
30 71191436 2024-02-28 o t.Fatal(err)
31 71191436 2024-02-28 o }
32 71191436 2024-02-28 o if err := Sign(req, key, "http://from.invalid/actor"); err != nil {
33 71191436 2024-02-28 o t.Fatal(err)
34 71191436 2024-02-28 o }
35 71191436 2024-02-28 o fmt.Println(req.Header.Get("Digest"))
36 71191436 2024-02-28 o fmt.Println(req.Header.Get("Signature"))
37 71191436 2024-02-28 o }