Skip to content

Commit a6383f2

Browse files
authored
Merge pull request #69 from jrmi/master
Fix cryptography v2.5 lib deprecation warnings
2 parents 53e8a14 + 5ad5fb9 commit a6383f2

File tree

6 files changed

+27
-13
lines changed

6 files changed

+27
-13
lines changed

python/py_vapid/__init__.py

+12-6
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ def from_raw(cls, private_raw):
6767

6868
@classmethod
6969
def from_raw_public(cls, public_raw):
70-
key = ec.EllipticCurvePublicNumbers.from_encoded_point(
70+
key = ec.EllipticCurvePublicKey.from_encoded_point(
7171
curve=ec.SECP256R1(),
7272
data=b64urldecode(public_raw)
73-
).public_key(default_backend())
73+
)
7474
ss = cls()
7575
ss._public_key = key
7676
return ss
@@ -258,13 +258,13 @@ def _base_sign(self, claims):
258258
cclaims = copy.deepcopy(claims)
259259
if not cclaims.get('exp'):
260260
cclaims['exp'] = str(int(time.time()) + 86400)
261-
if not re.match("mailto:.+@.+\..+",
261+
if not re.match(r'mailto:.+@.+\..+',
262262
cclaims.get('sub', ''),
263263
re.IGNORECASE):
264264
raise VapidException(
265265
"Missing 'sub' from claims. "
266266
"'sub' is your admin email as a mailto: link.")
267-
if not re.match("^https?:\/\/[^\/\.:]+\.[^\/:]+(:\d+)?$",
267+
if not re.match(r"^https?://[^/.:]+\.[^/:]+(:\d+)?$",
268268
cclaims.get("aud", ""),
269269
re.IGNORECASE):
270270
raise VapidException(
@@ -289,7 +289,10 @@ def sign(self, claims, crypto_key=None):
289289
sig = sign(self._base_sign(claims), self.private_key)
290290
pkey = 'p256ecdsa='
291291
pkey += b64urlencode(
292-
self.public_key.public_numbers().encode_point())
292+
self.public_key.public_bytes(
293+
serialization.Encoding.X962,
294+
serialization.PublicFormat.UncompressedPoint
295+
))
293296
if crypto_key:
294297
crypto_key = crypto_key + ';' + pkey
295298
else:
@@ -309,7 +312,10 @@ class Vapid02(Vapid01):
309312

310313
def sign(self, claims, crypto_key=None):
311314
sig = sign(self._base_sign(claims), self.private_key)
312-
pkey = self.public_key.public_numbers().encode_point()
315+
pkey = self.public_key.public_bytes(
316+
serialization.Encoding.X962,
317+
serialization.PublicFormat.UncompressedPoint
318+
)
313319
return{
314320
"Authorization": "{schema} t={t},k={k}".format(
315321
schema=self._schema,

python/py_vapid/jwt.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import json
33

44
from cryptography.exceptions import InvalidSignature
5-
from cryptography.hazmat.backends import default_backend
65
from cryptography.hazmat.primitives.asymmetric import ec, utils
76
from cryptography.hazmat.primitives import hashes
87

@@ -47,10 +46,10 @@ def decode(token, key):
4746
try:
4847
sig_material, signature = extract_signature(token)
4948
dkey = b64urldecode(key.encode('utf8'))
50-
pkey = ec.EllipticCurvePublicNumbers.from_encoded_point(
49+
pkey = ec.EllipticCurvePublicKey.from_encoded_point(
5150
ec.SECP256R1(),
5251
dkey,
53-
).public_key(default_backend())
52+
)
5453
pkey.verify(
5554
signature,
5655
sig_material,

python/py_vapid/main.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import os
77
import json
88

9+
from cryptography.hazmat.primitives import serialization
10+
911
from py_vapid import Vapid01, Vapid02, b64urlencode
1012

1113

@@ -60,7 +62,10 @@ def main():
6062
claim_file = args.sign
6163
result = dict()
6264
if args.applicationServerKey:
63-
raw_pub = vapid.public_key.public_numbers().encode_point()
65+
raw_pub = vapid.public_key.public_bytes(
66+
serialization.Encoding.X962,
67+
serialization.PublicFormat.UncompressedPoint
68+
)
6469
print("Application Server Key = {}\n\n".format(
6570
b64urlencode(raw_pub)))
6671
if claim_file:

python/py_vapid/tests/test_vapid.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import os
55
import json
66
import unittest
7+
from cryptography.hazmat.primitives import serialization
78
from nose.tools import eq_, ok_
89
from mock import patch, Mock
910

@@ -137,7 +138,10 @@ def test_sign_01(self):
137138
eq_(result['Crypto-Key'],
138139
'id=previous;p256ecdsa=' + T_PUBLIC_RAW.decode('utf8'))
139140
pkey = binascii.b2a_base64(
140-
v.public_key.public_numbers().encode_point()
141+
v.public_key.public_bytes(
142+
serialization.Encoding.X962,
143+
serialization.PublicFormat.UncompressedPoint
144+
)
141145
).decode('utf8').replace('+', '-').replace('/', '_').strip()
142146
items = decode(result['Authorization'].split(' ')[1], pkey)
143147
for k in claims:

python/requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
cryptography>=1.8.2
1+
cryptography>=2.5

python/setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from setuptools import setup, find_packages
55

6-
__version__ = "1.4.0"
6+
__version__ = "1.5.0"
77

88

99
def read_from(file):

0 commit comments

Comments
 (0)