diff -pruN 0.99.2-1/.gitlab-ci.yml 0.99.2+git20230520.ebdcedbc-1/.gitlab-ci.yml
--- 0.99.2-1/.gitlab-ci.yml	2023-05-13 17:00:50.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/.gitlab-ci.yml	2023-05-20 18:34:01.000000000 +0000
@@ -41,7 +41,7 @@ test-ruff:
     - changes:
       - "**/*.py"
   script:
-    - pip3 install ruff==0.0.254
+    - pip3 install ruff==0.0.267
     - ruff .
   interruptible: true
 
@@ -121,7 +121,8 @@ publish-release:
   rules:
     - if: '$CI_COMMIT_TAG'
   script:
-    - release-helper create-release \
+    - >
+      release-helper create-release \
         $CI_PROJECT_ID \
         $CI_JOB_TOKEN \
         --version=${CI_COMMIT_TAG:1} \
diff -pruN 0.99.2-1/.pre-commit-config.yaml 0.99.2+git20230520.ebdcedbc-1/.pre-commit-config.yaml
--- 0.99.2-1/.pre-commit-config.yaml	2023-05-13 17:00:50.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/.pre-commit-config.yaml	2023-05-20 18:34:01.000000000 +0000
@@ -1,6 +1,6 @@
 repos:
   - repo: https://github.com/charliermarsh/ruff-pre-commit
-    rev: v0.0.259
+    rev: v0.0.267
     hooks:
       - id: ruff
         exclude: ".githooks/"
diff -pruN 0.99.2-1/debian/changelog 0.99.2+git20230520.ebdcedbc-1/debian/changelog
--- 0.99.2-1/debian/changelog	2023-05-16 06:41:31.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/debian/changelog	2023-05-22 17:44:14.000000000 +0000
@@ -1,3 +1,9 @@
+omemo-dr (0.99.2+git20230520.ebdcedbc-1) unstable; urgency=medium
+
+  * New upstream snapshot, should fix unit test for i386
+
+ -- Martin <debacle@debian.org>  Mon, 22 May 2023 17:44:14 +0000
+
 omemo-dr (0.99.2-1) unstable; urgency=medium
 
   * New upstream version
diff -pruN 0.99.2-1/pyproject.toml 0.99.2+git20230520.ebdcedbc-1/pyproject.toml
--- 0.99.2-1/pyproject.toml	2023-05-13 17:00:50.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/pyproject.toml	2023-05-20 18:34:01.000000000 +0000
@@ -115,12 +115,15 @@ ignore = [
   "N806", # Variable `x` in function should be lowercase
   "N815", # Variable `messageKeys` in class scope should not be mixedCase
   "N818",   # Exception name should be named with an Error suffix
+  "PGH003",  # Use specific rule codes when ignoring type issues
   "PLR0913", # Too many arguments to function call (x/y)
   "PLR0915", # Too many statements (57/50)
   "PLR2004", # Magic value used in comparison, consider replacing x with a constant variable
   "RUF001", # AmbiguousUnicodeCharacterString
   "S101",   # Use of `assert` detected
   "S110", # `try`-`except`-`pass` detected, consider logging the exception
+  "S311", # Standard pseudo-random generators are not suitable for cryptographic purposes
+  "S603", # check for execution of untrusted input
   "SIM108", # Use ternary operator
   "SIM110", # Use any()` instead of `for` loop
   "SIM118", # Don’t use .keys()
diff -pruN 0.99.2-1/src/omemo_dr/const.py 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/const.py
--- 0.99.2-1/src/omemo_dr/const.py	2023-05-13 17:00:50.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/const.py	2023-05-20 18:34:01.000000000 +0000
@@ -5,6 +5,7 @@ NS_OMEMO_2 = "urn:xmpp:omemo:2"
 
 LEGACY_ENCODED_KEY_LENGTH = 33
 ENCODED_KEY_LENGTH = 32
+MAX_INT = 2**31 - 1
 
 
 class OMEMOTrust(IntEnum):
diff -pruN 0.99.2-1/src/omemo_dr/exceptions.py 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/exceptions.py
--- 0.99.2-1/src/omemo_dr/exceptions.py	2023-05-13 17:00:50.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/exceptions.py	2023-05-20 18:34:01.000000000 +0000
@@ -73,3 +73,7 @@ class InvalidMessage(Exception):
 
 class DuplicateMessage(Exception):
     pass
+
+
+class BundleValidationError(Exception):
+    pass
diff -pruN 0.99.2-1/src/omemo_dr/session_manager.py 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/session_manager.py
--- 0.99.2-1/src/omemo_dr/session_manager.py	2023-05-13 17:00:50.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/session_manager.py	2023-05-20 18:34:01.000000000 +0000
@@ -71,11 +71,11 @@ class OMEMOSessionManager(Observable):
 
     def _generate_keys(self) -> int:
         identity_key_pair = KeyHelper.generate_identity_key_pair()
-        our_device_id = KeyHelper.get_random_sequence(2147483647)
+        our_device_id = KeyHelper.get_random_int()
         self._storage.set_our_identity(our_device_id, identity_key_pair)
 
         signed_pre_key = KeyHelper.generate_signed_pre_key(
-            identity_key_pair, KeyHelper.get_random_sequence(65536)
+            identity_key_pair, KeyHelper.get_random_int()
         )
         self._storage.store_signed_pre_key(signed_pre_key.get_id(), signed_pre_key)
 
@@ -380,13 +380,12 @@ class OMEMOSessionManager(Observable):
 
         # if spk_cycle_seconds is reached, generate a new SignedPreKey
         now = int(time.time())
-        timestamp = self._storage.get_signed_pre_key_timestamp(
-            self._storage.get_current_signed_pre_key_id()
-        )
+        current_spk_id = self._storage.get_current_signed_pre_key_id()
+        timestamp = self._storage.get_signed_pre_key_timestamp(current_spk_id)
 
         if int(timestamp) < now - self._config.spk_cycle_seconds:
             spk = KeyHelper.generate_signed_pre_key(
-                ik_pair, self._storage.get_next_signed_pre_key_id()
+                ik_pair, KeyHelper.get_next_signed_pre_key_id(current_spk_id)
             )
             self._storage.store_signed_pre_key(spk.get_id(), spk)
             self._log.debug("Cycled SignedPreKey")
diff -pruN 0.99.2-1/src/omemo_dr/state/prekeybundle.py 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/state/prekeybundle.py
--- 0.99.2-1/src/omemo_dr/state/prekeybundle.py	2023-05-13 17:00:50.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/state/prekeybundle.py	2023-05-20 18:34:01.000000000 +0000
@@ -1,10 +1,11 @@
 from __future__ import annotations
 
+from ..const import MAX_INT
 from ..const import NS_OMEMO_2
 from ..const import NS_OMEMO_TMP
 from ..ecc.djbec import CurvePublicKey
 from ..ecc.djbec import EdPublicKey
-from ..exceptions import InvalidKeyException
+from ..exceptions import BundleValidationError
 from ..identitykey import IdentityKey
 from ..structs import OMEMOBundleProto
 
@@ -42,10 +43,19 @@ class PreKeyBundle:
         elif ns == NS_OMEMO_2:
             ik_pub = EdPublicKey.from_bytes(bundle.ik).to_curve()
         else:
-            raise InvalidKeyException("Unknown namespace on bundle: %s", ns)
+            raise BundleValidationError("Unknown namespace on bundle: %s", ns)
 
         ik = IdentityKey(ik_pub)
 
+        if not 1 <= bundle.device_id <= MAX_INT:
+            raise BundleValidationError("Device id out of range")
+
+        if not 1 <= prekey["id"] <= MAX_INT:
+            raise BundleValidationError("Prekey id out of range")
+
+        if not 1 <= bundle.spk["id"] <= MAX_INT:
+            raise BundleValidationError("Signed pre key id out of range")
+
         return cls(
             bundle.device_id,
             bundle.namespace,
diff -pruN 0.99.2-1/src/omemo_dr/state/store.py 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/state/store.py
--- 0.99.2-1/src/omemo_dr/state/store.py	2023-05-13 17:00:50.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/state/store.py	2023-05-20 18:34:01.000000000 +0000
@@ -117,10 +117,6 @@ class Store:
         pass
 
     @abc.abstractmethod
-    def get_next_signed_pre_key_id(self) -> int:
-        pass
-
-    @abc.abstractmethod
     def get_signed_pre_key_timestamp(self, signed_pre_key_id: int) -> int:
         pass
 
diff -pruN 0.99.2-1/src/omemo_dr/util/keyhelper.py 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/util/keyhelper.py
--- 0.99.2-1/src/omemo_dr/util/keyhelper.py	2023-05-13 17:00:50.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/util/keyhelper.py	2023-05-20 18:34:01.000000000 +0000
@@ -1,16 +1,14 @@
 from __future__ import annotations
 
-import binascii
-import math
-import os
+import random
 import time
 
+from ..const import MAX_INT
 from ..ecc.curve import Curve
 from ..identitykey import IdentityKey
 from ..identitykeypair import IdentityKeyPair
 from ..state.prekeyrecord import PreKeyRecord
 from ..state.signedprekeyrecord import SignedPreKeyRecord
-from .medium import Medium
 
 
 class KeyHelper:
@@ -27,20 +25,8 @@ class KeyHelper:
         return identity_key_pair
 
     @staticmethod
-    def generate_device_id() -> int:
-        """
-        Generate a registration ID.  Clients should only do this once,
-        at install time.
-        """
-        regId = KeyHelper.get_random_sequence()
-        return regId
-
-    @staticmethod
-    def get_random_sequence(max: int = 4294967296) -> int:
-        size = int(math.log(max) / math.log(2)) / 8
-        rand = os.urandom(int(size))
-        randh = binascii.hexlify(rand)
-        return int(randh, 16)
+    def get_random_int() -> int:
+        return random.randint(1, MAX_INT)
 
     @staticmethod
     def generate_pre_keys(start: int, count: int) -> list[PreKeyRecord]:
@@ -55,7 +41,7 @@ class KeyHelper:
         results: list[PreKeyRecord] = []
         start -= 1
         for i in range(0, count):
-            pre_key_id = ((start + i) % (Medium.MAX_VALUE - 1)) + 1
+            pre_key_id = ((start + i) % MAX_INT) + 1
             results.append(PreKeyRecord.new(pre_key_id, Curve.generate_key_pair()))
 
         return results
@@ -74,3 +60,7 @@ class KeyHelper:
         )
 
         return spk
+
+    @staticmethod
+    def get_next_signed_pre_key_id(current_id: int) -> int:
+        return current_id % MAX_INT + 1
diff -pruN 0.99.2-1/src/omemo_dr/util/medium.py 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/util/medium.py
--- 0.99.2-1/src/omemo_dr/util/medium.py	2023-05-13 17:00:50.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/src/omemo_dr/util/medium.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,2 +0,0 @@
-class Medium:
-    MAX_VALUE = 0xFFFFFF
diff -pruN 0.99.2-1/tests/inmemoryidentitykeystore.py 0.99.2+git20230520.ebdcedbc-1/tests/inmemoryidentitykeystore.py
--- 0.99.2-1/tests/inmemoryidentitykeystore.py	2023-05-13 17:00:50.000000000 +0000
+++ 0.99.2+git20230520.ebdcedbc-1/tests/inmemoryidentitykeystore.py	2023-05-20 18:34:01.000000000 +0000
@@ -14,7 +14,7 @@ class InMemoryIdentityKeyStore:
             IdentityKey(identity_key_pair_keys.get_public_key()),
             identity_key_pair_keys.get_private_key(),
         )
-        self.our_device_id = KeyHelper.generate_device_id()
+        self.our_device_id = KeyHelper.get_random_int()
 
     def get_identity_key_pair(self) -> IdentityKeyPair:
         return self.identity_key_pair
