Skip to content

signing http requests with cesr encoded signature

Notifications You must be signed in to change notification settings

provenant-dev/httpsigcesr

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

httpsigcesr

signing http requests with cesr encoded signature

run the main to generate a public/private key pair

example usage:

package main

import (
	"context"
	"encoding/pem"
	"fmt"
	"github.com/Wavecrest/httpsigcesr/httpclient"
	"os"
)

func readPemFile(fileName string) ([]byte, error) {

	// Step 1: Read the file contents
	pemData, err := os.ReadFile(fileName)
	if err != nil {
		return nil, err
	}
	// Step 2: Decode the PEM block
	block, _ := pem.Decode(pemData)
	if block == nil {
		fmt.Println("Failed to parse PEM block")
		os.Exit(1)
	}
	return block.Bytes, nil
}

type ExampleRequest struct {
	Id   int    `json:"id"`
	Name string `json:"name"`
}

func main() {
	//read PEM file from disk
	privKey, err := readPemFile("privkey.pem")
	if err != nil {
		fmt.Println("Error reading PEM file")
		os.Exit(1)
	}
	publicKeyBytes, err := os.ReadFile("pubkey.txt")
	if err != nil {
		fmt.Println("Error reading public key file")
		os.Exit(1)
	}
	publicKey := string(publicKeyBytes)

	client := httpclient.NewCserSignedClient(publicKey, privKey)
	req := ExampleRequest{
		Id:   1,
		Name: "John Doe",
	}
	client.SendSignedRequest(context.Background(), "POST", "http://google.com", req)

}

About

signing http requests with cesr encoded signature

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%