diff options
Diffstat (limited to 'ms_core')
| -rw-r--r-- | ms_core/system_id.v | 17 | ||||
| -rw-r--r-- | ms_core/system_id_test.v | 24 |
2 files changed, 41 insertions, 0 deletions
diff --git a/ms_core/system_id.v b/ms_core/system_id.v new file mode 100644 index 0000000..4413b75 --- /dev/null +++ b/ms_core/system_id.v @@ -0,0 +1,17 @@ +module ms_core + +import crypto.rand + +pub struct SystemId { +mut: + base [16]u8 +} + +pub fn get_new_system_id() !SystemId { + bytes := rand.bytes(16) or { panic('Could not retireve 16 randrom bytes for system_id!') } + mut base := [16]u8{} + copy(mut base, bytes) + return SystemId{ + base: base + } +} diff --git a/ms_core/system_id_test.v b/ms_core/system_id_test.v new file mode 100644 index 0000000..08a893d --- /dev/null +++ b/ms_core/system_id_test.v @@ -0,0 +1,24 @@ +module ms_core + +fn test_generate_system_id() { + id := get_new_system_id() or { + assert false, 'failed to generate SystemId: ${err}' + return + } + + assert id.base.len == 16 +} + +fn test_system_ids_are_unique() { + id1 := get_new_system_id() or { + assert false, 'failed to generate first SystemId: ${err}' + return + } + + id2 := get_new_system_id() or { + assert false, 'failed to generate second SystemId: ${err}' + return + } + + assert id1.base != id2.base +} |
