about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/ellipticcurve/utils/oid.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/ellipticcurve/utils/oid.py')
-rw-r--r--.venv/lib/python3.12/site-packages/ellipticcurve/utils/oid.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/ellipticcurve/utils/oid.py b/.venv/lib/python3.12/site-packages/ellipticcurve/utils/oid.py
new file mode 100644
index 00000000..dbfebe79
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/ellipticcurve/utils/oid.py
@@ -0,0 +1,35 @@
+from .binary import intFromHex, hexFromInt
+
+
+def oidFromHex(hexadecimal):
+    firstByte, remainingBytes = hexadecimal[:2], hexadecimal[2:]
+    firstByteInt = intFromHex(firstByte)
+    oid = [firstByteInt // 40, firstByteInt % 40]
+    oidInt = 0
+    while len(remainingBytes) > 0:
+        byte, remainingBytes = remainingBytes[0:2], remainingBytes[2:]
+        byteInt = intFromHex(byte)
+        if byteInt >= 128:
+            oidInt = (128 * oidInt) + (byteInt - 128)
+            continue
+        oidInt = (128 * oidInt) + byteInt
+        oid.append(oidInt)
+        oidInt = 0
+    return oid
+
+
+def oidToHex(oid):
+    hexadecimal = hexFromInt(40 * oid[0] + oid[1])
+    for number in oid[2:]:
+        hexadecimal += _oidNumberToHex(number)
+    return hexadecimal
+
+
+def _oidNumberToHex(number):
+    hexadecimal = ""
+    endDelta = 0
+    while number > 0:
+        hexadecimal = hexFromInt((number % 128) + endDelta) + hexadecimal
+        number //= 128
+        endDelta = 128
+    return hexadecimal or "00"