Skip to content

Commit d2a655a

Browse files
committed
Fixed coordinate lengths for elliptic key curves.
1 parent 1ed82fa commit d2a655a

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

src/jwkest/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,12 @@ def long2intarr(long_int):
102102
return _bytes
103103

104104

105-
def long_to_base64(n):
105+
def long_to_base64(n, mlen=0):
106106
bys = long2intarr(n)
107+
if mlen:
108+
_len = mlen - len(bys)
109+
if _len:
110+
bys = [0] * _len + bys
107111
data = struct.pack('%sB' % len(bys), *bys)
108112
if not len(data):
109113
data = '\x00'

src/jwkest/jwk.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -628,14 +628,15 @@ def serialize(self, private=False):
628628
raise SerializationNotPossible()
629629

630630
res = self.common()
631+
blen = self.curve.bytes
631632
res.update({
632633
"crv": self.curve.name(),
633-
"x": long_to_base64(self.x),
634-
"y": long_to_base64(self.y)
634+
"x": long_to_base64(self.x, blen),
635+
"y": long_to_base64(self.y, blen)
635636
})
636637

637638
if private and self.d:
638-
res["d"] = long_to_base64(self.d)
639+
res["d"] = long_to_base64(self.d, blen)
639640

640641
return res
641642

tests/test_4_jwe.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626

2727
def intarr2bytes(arr):
28-
return array.array('B', arr).tostring()
28+
return array.array('B', arr).tobytes()
2929

3030

3131
def bytes2intarr(bts):

0 commit comments

Comments
 (0)