Refactored random byte generation functions.

This commit is contained in:
Jakob Friedl
2025-08-25 20:08:23 +02:00
parent 84f889451c
commit dd7433588f
11 changed files with 18 additions and 26 deletions

View File

@@ -1,4 +1,4 @@
import system
import macros, system
import nimcrypto
import ./[utils, types]
@@ -7,18 +7,11 @@ import ./[utils, types]
Symmetric AES256 GCM encryption for secure C2 traffic
Ensures both confidentiality and integrity of the packet
]#
proc generateIV*(): Iv =
# Generate a random 98-bit (12-byte) initialization vector for AES-256 GCM mode
var iv: Iv
if randomBytes(iv) != sizeof(Iv):
raise newException(CatchableError, "Failed to generate IV.")
return iv
proc generateKey*(): Key =
var key: Key
if randomBytes(key) != sizeof(Key):
raise newException(CatchableError, "Failed to generate IV.")
return key
proc generateBytes*(T: typedesc[Key | Iv]): array =
var bytes: T
if randomBytes(bytes) != sizeof(T):
raise newException(CatchableError, "Failed to generate byte array.")
return bytes
proc encrypt*(key: Key, iv: Iv, data: seq[byte], sequenceNumber: uint32 = 0): (seq[byte], AuthenticationTag) =
@@ -97,7 +90,7 @@ proc wipeKey*(data: var openArray[byte]) =
# Key pair generation
proc generateKeyPair*(): KeyPair =
let privateKey = generateKey()
let privateKey = generateBytes(Key)
return KeyPair(
privateKey: privateKey,
publicKey: getPublicKey(privateKey)
@@ -158,4 +151,4 @@ proc loadKeyPair*(keyFile: string): KeyPair =
except IOError:
let keyPair = generateKeyPair()
writeKeyToDisk(keyFile, keyPair.privateKey)
return keyPair
return keyPair