Skip to main content

A DER decoder for pyasn1 built to detect encoding errors

Project description

pyasn1-fasder

PyPI Python Versions Build status GitHub license

pyasn1-fasder is a DER decoder for pyasn1 with a focus on checking the correctness of encoding. This decoder is more pedantic than most other decoders in terms of flagging DER encoding errors, and this behavior is unlikely to change.

Installation

pip install pyasn1-fasder

Usage

pyasn1-fasder exposes a single function: decode_der. The signature and return type are the same as the pyasn1 decode function, as it is intended to be a drop-in replacement of pyasn1.codec.der.decoder.decode.

from pyasn1.type.char import PrintableString
from pyasn1_fasder import decode_der

substrate = b'\x13\x03\x41\x42\x43'

decoded, rest = decode_der(substrate, asn1Spec=PrintableString())

assert rest == b''
assert str(decoded) == 'ABC'

Limitations

  • There is no encoding counterpart.
  • Trailing octets present after the substrate TLV are not tolerated and will result in an exception being raised. In other words, the rest component of the tuple return value will always be an empty bytes object.
  • Schemaless decoding is not supported. In other words, a non-None asn1Spec must be passed to decode_der.
  • Sets with namedValues are not supported. These are (almost?) never used in cryptography standards, but support can be added if there are valid use cases.
  • openTypes decoding is currently not supported. This can be added if there is interest.
  • The pedantic checks for correctness of encoding cannot be disabled.

Bugs?

Please create a Github issue.

Contributing

Contributions for bug fixes and new features are welcome.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyasn1_fasder-0.1.0.tar.gz (18.9 kB view hashes)

Uploaded Source

Built Distributions

pyasn1_fasder-0.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyasn1_fasder-0.1.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.3 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

pyasn1_fasder-0.1.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.2 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

pyasn1_fasder-0.1.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

pyasn1_fasder-0.1.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.5+ i686

pyasn1_fasder-0.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyasn1_fasder-0.1.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.3 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

pyasn1_fasder-0.1.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.2 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

pyasn1_fasder-0.1.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

pyasn1_fasder-0.1.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.5+ i686

pyasn1_fasder-0.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyasn1_fasder-0.1.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.3 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

pyasn1_fasder-0.1.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.2 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

pyasn1_fasder-0.1.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

pyasn1_fasder-0.1.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.5+ i686

pyasn1_fasder-0.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.2 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ s390x

pyasn1_fasder-0.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.2 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ppc64le

pyasn1_fasder-0.1.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.1 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARMv7l

pyasn1_fasder-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

pyasn1_fasder-0.1.0-cp312-none-win_amd64.whl (143.7 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

pyasn1_fasder-0.1.0-cp312-none-win32.whl (138.6 kB view hashes)

Uploaded CPython 3.12 Windows x86

pyasn1_fasder-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pyasn1_fasder-0.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.2 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

pyasn1_fasder-0.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.2 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

pyasn1_fasder-0.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

pyasn1_fasder-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pyasn1_fasder-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (1.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.5+ i686

pyasn1_fasder-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (276.6 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pyasn1_fasder-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl (278.4 kB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

pyasn1_fasder-0.1.0-cp311-none-win_amd64.whl (143.6 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

pyasn1_fasder-0.1.0-cp311-none-win32.whl (139.1 kB view hashes)

Uploaded CPython 3.11 Windows x86

pyasn1_fasder-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pyasn1_fasder-0.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.3 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

pyasn1_fasder-0.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.2 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

pyasn1_fasder-0.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

pyasn1_fasder-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pyasn1_fasder-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (1.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.5+ i686

pyasn1_fasder-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (276.7 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pyasn1_fasder-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl (279.1 kB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

pyasn1_fasder-0.1.0-cp310-none-win_amd64.whl (143.6 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

pyasn1_fasder-0.1.0-cp310-none-win32.whl (139.1 kB view hashes)

Uploaded CPython 3.10 Windows x86

pyasn1_fasder-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyasn1_fasder-0.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.3 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

pyasn1_fasder-0.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.2 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

pyasn1_fasder-0.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

pyasn1_fasder-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pyasn1_fasder-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (1.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.5+ i686

pyasn1_fasder-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (276.7 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pyasn1_fasder-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl (279.1 kB view hashes)

Uploaded CPython 3.10 macOS 10.12+ x86-64

pyasn1_fasder-0.1.0-cp39-none-win_amd64.whl (143.6 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

pyasn1_fasder-0.1.0-cp39-none-win32.whl (139.4 kB view hashes)

Uploaded CPython 3.9 Windows x86

pyasn1_fasder-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyasn1_fasder-0.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.3 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

pyasn1_fasder-0.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.2 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

pyasn1_fasder-0.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

pyasn1_fasder-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pyasn1_fasder-0.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (1.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.5+ i686

pyasn1_fasder-0.1.0-cp38-none-win_amd64.whl (143.6 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

pyasn1_fasder-0.1.0-cp38-none-win32.whl (139.2 kB view hashes)

Uploaded CPython 3.8 Windows x86

pyasn1_fasder-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pyasn1_fasder-0.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.3 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

pyasn1_fasder-0.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.2 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

pyasn1_fasder-0.1.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

pyasn1_fasder-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

pyasn1_fasder-0.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl (1.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.5+ i686

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page