feat: Add environment-based operator variant configuration with padding support

- Add os import for environment variable access
- Update getOperatorVariant to read OP from OPERATOR_VARIANT env var
- Add fallback to default "TelecomOP1234567" for development
- Add zero-padding for OP values shorter than 16 bytes
- Update comments to reference environment variable configuration
This commit is contained in:
nutcas3
2026-04-14 16:06:09 +03:00
parent 745ebe3bb4
commit 13355a07e7
@@ -6,6 +6,7 @@ import (
"crypto/rand"
"encoding/hex"
"fmt"
"os"
"time"
"github.com/nutcas3/telecom-platform/apps/api-server/internal/config"
@@ -259,11 +260,25 @@ func (s *SubscriberService) generateAuthKeys() (string, string, error) {
// getOperatorVariant returns the operator variant (OP) from configuration
func (s *SubscriberService) getOperatorVariant() []byte {
// In production, this should come from secure operator configuration
// For now, using a hardcoded OP for demonstration
// Get operator variant from environment variable or secure configuration
// This should be the same across all subscribers for the same operator
opStr := os.Getenv("OPERATOR_VARIANT")
if opStr == "" {
// Fallback to default for development
opStr = "TelecomOP1234567" // 16-byte operator variant
}
// Ensure exactly 16 bytes for AES-128
op := make([]byte, 16)
copy(op, []byte("TelecomOP1234567")) // 16-byte operator variant
copy(op, []byte(opStr))
// If shorter than 16 bytes, pad with zeros
if len(opStr) < 16 {
for i := len(opStr); i < 16; i++ {
op[i] = 0
}
}
return op
}