Skip to content

Commit c927dd1

Browse files
committed
Bug fixes
Fix parse_data returning None for no MetaInfo Data Fix datetime.utcnow() deprecated Upgrade dependencies Fix: #77
1 parent be80d97 commit c927dd1

File tree

7 files changed

+472
-458
lines changed

7 files changed

+472
-458
lines changed

poetry.lock

+451-446
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ include = [{ path = "tests", format = "sdist" }]
4141

4242
[tool.poetry.dependencies]
4343
python = "^3.10"
44-
pycryptodomex = "^3.18.0"
44+
pycryptodomex = "^3.20.0"
4545
pygtrie = "^2.5.0"
4646
aenum = "^3.1.12"
47-
lark = "^1.1.7"
48-
aiohttp = "^3.8.5"
47+
lark = "^1.1.9"
48+
aiohttp = "^3.9.3"
4949

5050
# Extra dependencies [dev]
5151
pytest = { version = "^7.1.2", optional = true }

src/ndn/app_support/security_v2.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# limitations under the License.
1717
# -----------------------------------------------------------------------------
1818
from typing import Tuple
19-
from datetime import datetime, timedelta
19+
from datetime import datetime, timedelta, timezone
2020
from ..utils import timestamp
2121
from ..encoding import Component, Name, ModelField, TlvModel, ContentType, BytesField,\
2222
SignatureInfo, TypeNumber, RepeatedField, IncludeBase, MetaInfo, VarBinaryStr,\
@@ -112,17 +112,17 @@ def new_cert(key_name, issuer_id_component, pub_key, signer, start_time, end_tim
112112

113113

114114
def self_sign(key_name, pub_key, signer) -> Tuple[FormalName, VarBinaryStr]:
115-
end_time = datetime.utcnow()
115+
end_time = datetime.now(timezone.utc)
116116
end_time = end_time.replace(year=end_time.year + 20)
117117
return new_cert(key_name, SELF_COMPONENT, pub_key, signer,
118118
datetime.fromisoformat('1970-01-01T00:00:00'), end_time)
119119

120120

121121
def sign_req(key_name, pub_key, signer) -> Tuple[FormalName, VarBinaryStr]:
122-
start_time = datetime.utcnow()
122+
start_time = datetime.now(timezone.utc)
123123
end_time = start_time + timedelta(days=10)
124124
return new_cert(key_name, SIGN_REQ_COMPONENT, pub_key, signer,
125-
datetime.utcnow(), end_time)
125+
datetime.now(timezone.utc), end_time)
126126

127127

128128
def derive_cert(key_name, issuer_id, pub_key, signer, start_time, expire_sec) -> Tuple[FormalName, VarBinaryStr]:

src/ndn/bin/sec/cmd_sign_cert.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import sys
2020
import base64
2121
import argparse
22-
from datetime import datetime, timedelta
22+
from datetime import datetime, timedelta, timezone
2323
from ...encoding import Name
2424
from ...app_support.security_v2 import parse_certificate, new_cert
2525
from .utils import resolve_keychain, infer_obj_name
@@ -89,7 +89,7 @@ def execute(args: argparse.Namespace):
8989
return -3
9090

9191
if not args.not_before:
92-
not_before = datetime.utcnow()
92+
not_before = datetime.now(timezone.utc)
9393
else:
9494
try:
9595
not_before = datetime.strptime(args.not_before, '%Y%m%dT%H%M%S')

src/ndn/encoding/ndn_format_0_3.py

+2
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,8 @@ def parse_data(wire: BinaryStr, with_tl: bool = True) -> Data:
501501
markers = {}
502502
ret = DataPacketValue.parse(wire, markers)
503503
params = ret.meta_info
504+
if params is None:
505+
params = MetaInfo()
504506
sig_ptrs = SignaturePtrs(
505507
signature_info=ret.signature_info,
506508
signature_covered_part=ret._sig_cover_part.get_arg(markers),

tests/encoding/ndn_format_0_3_test.py

+7
Original file line numberDiff line numberDiff line change
@@ -435,3 +435,10 @@ def test_meta_info():
435435
for part in sig.signature_covered_part:
436436
algo.update(part)
437437
assert sig.signature_value_buf == algo.digest()
438+
439+
@staticmethod
440+
def test_none_meta_info():
441+
wire = b'\x06\x0f\x07\x06\x08\x01\x41\x08\x01\x31\x16\x03\x1b\x01\xc8\x17\x00'
442+
_, meta_info, _, _ = parse_data(wire)
443+
assert meta_info is not None
444+
assert meta_info.content_type == ContentType.BLOB

tests/misc/light_versec_test.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# limitations under the License.
1717
# -----------------------------------------------------------------------------
1818
import os
19-
from datetime import datetime
19+
from datetime import datetime, timezone
2020
import pytest
2121
from tempfile import TemporaryDirectory
2222
from ndn.encoding import Component
@@ -321,7 +321,7 @@ def test_signing_suggest():
321321
la_author_cert_name, la_author_cert = derive_cert(la_author_id.default_key().name,
322322
Component.from_str('la-signer'),
323323
la_cert_data.content, la_signer,
324-
datetime.utcnow(), 100)
324+
datetime.now(timezone.utc), 100)
325325
keychain.import_cert(la_id.default_key().name, la_author_cert_name, la_author_cert)
326326

327327
ny_id = keychain.touch_identity('/ny')
@@ -334,7 +334,7 @@ def test_signing_suggest():
334334
ny_author_cert_name, ny_author_cert = derive_cert(ny_author_id.default_key().name,
335335
Component.from_str('ny-signer'),
336336
ny_cert_data.content, ny_signer,
337-
datetime.utcnow(), 100)
337+
datetime.now(timezone.utc), 100)
338338
keychain.import_cert(ny_id.default_key().name, ny_author_cert_name, ny_author_cert)
339339

340340
lvs = r'''

0 commit comments

Comments
 (0)