dal-license-server/internal/service/keygen.go
djuka dc0114e4b7 Inicijalni commit: kompletna implementacija + dokumentacija + testovi
- Kompletna Go implementacija licencnog servera (19 Go fajlova)
- Klijentski API: activate, deactivate, validate
- Admin API: CRUD licence, stats, audit log
- Admin dashboard: htmx + Go templates
- RSA-2048 potpisivanje licencnih podataka
- Rate limiting i API key autentifikacija
- MySQL migracije i seed podaci (ESIR, ARV, LIGHT_TICKET)
- Unit testovi: keygen, crypto, model, middleware (24 testa)
- Dokumentacija: SPEC.md, ARCHITECTURE.md, SETUP.md, API.md, TESTING.md, README.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 07:42:25 +00:00

27 lines
556 B
Go

package service
import (
"crypto/rand"
"math/big"
"strings"
)
// Characters: A-H, J-N, P-Y, 2-9 (no O/0/I/1)
const keyChars = "ABCDEFGHJKMNPQRSTUVWXY23456789"
func GenerateKey(prefix string) (string, error) {
groups := make([]string, 4)
for i := range groups {
group := make([]byte, 4)
for j := range group {
idx, err := rand.Int(rand.Reader, big.NewInt(int64(len(keyChars))))
if err != nil {
return "", err
}
group[j] = keyChars[idx.Int64()]
}
groups[i] = string(group)
}
return prefix + strings.Join(groups, "-"), nil
}