SJA2: Implement DF.SYSTEM/EF.0348_KEY using construct

This implicitly adds support for JSON->binary encoding, not just
decoding (previous code predating construct support).

Change-Id: I0994d9f66a504dd3c60b43ed5cf6645515dcbc6a
diff --git a/pySim/construct.py b/pySim/construct.py
index 97af235..20a6946 100644
--- a/pySim/construct.py
+++ b/pySim/construct.py
@@ -87,6 +87,26 @@
                 len(obj), self.sizeof()))
         return obj + self.pattern * (self.sizeof() - len(obj))
 
+class MultiplyAdapter(Adapter):
+    """
+    Decoder multiplies by multiplicator
+    Encoder divides by multiplicator
+
+    Parameters:
+        subcon: Subconstruct as defined by construct library
+        multiplier: Multiplier to apply to raw encoded value
+    """
+
+    def __init__(self, subcon, multiplicator):
+        super().__init__(subcon)
+        self.multiplicator = multiplicator
+
+    def _decode(self, obj, context, path):
+        return obj * 8
+
+    def _encode(self, obj, context, path):
+        return obj // 8
+
 
 class GsmStringAdapter(Adapter):
     """Convert GSM 03.38 encoded bytes to a string."""