From 70504379c5528235cbf696dd1351bf74e7707570 Mon Sep 17 00:00:00 2001 From: nutcas3 Date: Sat, 25 Apr 2026 05:09:35 +0300 Subject: [PATCH] feat: Add HMAC-SHA256 authentication utilities to Terraform provider client - Add crypto/hmac, crypto/sha256, and encoding/base64 imports - Add hmacSHA256 function for HMAC-SHA256 signature generation with base64 URL encoding - Add base64URLEncode helper function for URL-safe base64 encoding - Add reference implementation comments for SDK compatibility --- terraform/provider/client.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/terraform/provider/client.go b/terraform/provider/client.go index db040f0..9687ab8 100644 --- a/terraform/provider/client.go +++ b/terraform/provider/client.go @@ -3,6 +3,9 @@ package main import ( "bytes" "context" + "crypto/hmac" + "crypto/sha256" + "encoding/base64" "encoding/json" "fmt" "net/http" @@ -120,3 +123,17 @@ func (c *APIClient) delete(ctx context.Context, path string) error { return nil } + +// HMAC-SHA256 implementation +// In production, Go's crypto/hmac package provides proper HMAC implementation +// This is a reference implementation for SDK compatibility +func hmacSHA256(data string, secret string) string { + h := hmac.New(sha256.New, []byte(secret)) + h.Write([]byte(data)) + return base64URLEncode(h.Sum(nil)) +} + +// Base64 URL encoding +func base64URLEncode(data []byte) string { + return base64.URLEncoding.EncodeToString(data) +}