# httpsign **Repository Path**: mirrors_gin-contrib/httpsign ## Basic Information - **Project Name**: httpsign - **Description**: Signing HTTP Messages Middleware - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-24 - **Last Updated**: 2026-03-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # httpsign [![Run Tests](https://github.com/gin-contrib/httpsign/actions/workflows/go.yml/badge.svg)](https://github.com/gin-contrib/httpsign/actions/workflows/go.yml) [![Trivy Security Scan](https://github.com/gin-contrib/httpsign/actions/workflows/trivy-scan.yml/badge.svg)](https://github.com/gin-contrib/httpsign/actions/workflows/trivy-scan.yml) [![codecov](https://codecov.io/gh/gin-contrib/httpsign/branch/master/graph/badge.svg)](https://codecov.io/gh/gin-contrib/httpsign) [![Go Report Card](https://goreportcard.com/badge/github.com/gin-contrib/httpsign)](https://goreportcard.com/report/github.com/gin-contrib/httpsign) [![GoDoc](https://godoc.org/github.com/gin-contrib/httpsign?status.svg)](https://godoc.org/github.com/gin-contrib/httpsign) Signing HTTP Messages Middleware base on [HTTP Signatures](https://tools.ietf.org/html/draft-cavage-http-signatures). ## Example ``` go package main import ( "github.com/gin-contrib/httpsign" "github.com/gin-contrib/httpsign/crypto" "github.com/gin-gonic/gin" ) func main() { // Define algorithm hmacsha256 := &crypto.HmacSha256{} hmacsha512 := &crypto.HmacSha512{} // Init define secret params readKeyID := httpsign.KeyID("read") writeKeyID := httpsign.KeyID("write") secrets := httpsign.Secrets{ readKeyID: &httpsign.Secret{ Key: "HMACSHA256-SecretKey", Algorithm: hmacsha256, // You could using other algo with interface Crypto }, writeKeyID: &httpsign.Secret{ Key: "HMACSHA512-SecretKey", Algorithm: hmacsha512, }, } // Init server r := gin.Default() //Create middleware with default rule. Could modify by parse Option func auth := httpsign.NewAuthenticator(secrets) r.Use(auth.Authenticated()) r.GET("/a", a) r.POST("/b", b) r.POST("/c", c) r.Run(":8080") } ```