Skip to content
This repository has been archived by the owner on Mar 8, 2024. It is now read-only.

[asn1dir] AlgorithmIdentifier.from_ber() -- AttributeError: 'SEQ' object has no attribute '_tagc' #250

Open
James-E-A opened this issue Dec 6, 2023 · 1 comment

Comments

@James-E-A
Copy link

James-E-A commented Dec 6, 2023

Am I doing something wrong, or does pycrate_asn1dir.X509_2016.AuthenticationFramework.AlgorithmIdentifier not currently work as a stand-alone parser?

from pycrate_asn1dir import X509_2016
# init_modules: different OID objects ... with same OID value ...

AlgId = X509_2016.AuthenticationFramework.AlgorithmIdentifier

AlgId.from_ber(bytes.fromhex('300d06092a864886f70d01010b0500'))
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
#   File "...\.venv\Lib\site-packages\pycrate_asn1rt\asnobj.py", line 1618, in from_ber
#     self._from_ber(char, TLV)
#   File "...\.venv\Lib\site-packages\pycrate_asn1rt\asnobj.py", line 1587, in _from_ber
#     for t in self._tagc:
#              ^^^^^^^^^^
# AttributeError: 'SEQ' object has no attribute '_tagc'. Did you mean: '_tag'?

I'm getting this error on CPython 3.11.6, pycrate 0.7.0

The test input should be valid; I lifted it from offset 583 of this file.

@mitshell
Copy link
Contributor

mitshell commented Mar 1, 2024

The object you are using here AlgorithmIdentifier is a parameterized one, which is not usable for encoding / decoding. This is the reason you get an error here.

Please note a new repository has been setup, including new fixes. This repo will keep being maintained : https://github.com/pycrate-org/pycrate. It includes an explicit exception for your case, to indicate parameterized objects are not to be used for encoding / decoding. In addition, a tiny tool pycrate_certdecode.py has been added to help check whole x.509 certificate.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants