Summary¶
CryptoParser is a cryptographic protocol (IKE, SSL, TLS, SSH, DNSSEC) and security-related protocol piece (HTTP headers) parser and generator. It is neither a comprehensive nor a secure implementation of any cryptographic protocol. The goal is to support testing cryptographic libraries or analysing cryptography-related settings of application servers such as CryptoLyzer does.
Use CryptoParser when you need to parse handshake messages — it implements the wire format of ISAKMP, IKEv1, IKEv2, SSL 2.0, SSL 3.0, TLS 1.0 to TLS 1.3, and SSH 2.0, so a message can be read field by field instead of being handed to a connection-oriented library.
Use CryptoParser when you need to generate messages a library refuses to send — analysis means triggering special and corner cases, so messages can be composed with deprecated, experimental, or plainly invalid values that an implementation aiming for secure connections would reject.
Use CryptoParser when you need parsed HTTP security headers — beyond wire format parsing it parses individual headers, so directives are available as typed values rather than as strings.
Use CryptoParser when you need DNSSEC record parsing — DNSSEC records are parsed into the same kind of typed structures as the protocol messages.
The strength of CryptoParser is that it is backed by the most comprehensive algorithm identifier database available (CryptoDataHub). This makes it possible to recognize rarely used, deprecated, non-standard, or experimental algorithms that are not supported by any version of OpenSSL, GnuTLS, LibreSSL, or wolfSSL.
Why CryptoParser?¶
Analysis oriented — the library implements only the parts of a protocol that analysis needs, and deliberately keeps the parts that make a message invalid.
No OpenSSL dependency — the protocol implementation is its own, so what can be parsed or generated is not limited by what a cryptographic library is willing to do.
Typed values, not byte offsets — algorithm identifiers, protocol versions, and header directives are parsed into enumerations and attribute classes.
Symmetric parsing and composing — every parsable piece can also be composed back to its wire format.
Details¶
The main purpose of creating this library is the fact, that cryptography protocol analysis differs in many aspects from establishing a connection using a cryptographic protocol. Analysis is mostly testing where we trigger special and corner cases of the protocol and we also trying to establish connection with hardly supported, experimental, obsoleted or even deprecated mechanisms or algorithms which are may or may not supported by the latest or any version of an implementation of the cryptographic protocol.
On the one hand it is neither a comprehensive nor a secure implementation of any cryptographic protocol. On the one hand library implements only the absolutely necessary parts of the protocol. On the other it contains completely insecure algorithms and mechanisms. It is not designed and contraindicated to use this library establishing secure connections. If you are searching for cryptographic protocol implementation, there are several existing wrappers and native implementations for Python (eg: M2Crypto, pyOpenSSL, Paramiko, …).
History¶
- Changelog
- 1.5.0 - 2026-07-31
- 1.4.0 - 2026-07-17
- 1.3.0 - 2026-06-15
- 1.2.1 - 2026-06-02
- 1.2.0 - 2026-05-05
- 1.1.1 - 2026-05-03
- 1.1.0 - 2026-02-13
- 1.0.2 - 2025-12-30
- 1.0.1 - 2025-12-07
- 1.0.0 - 2025-01-05
- 0.12.6 - 2024-12-08
- 0.12.5 - 2024-05-25
- 0.12.4 - 2024-04-28
- 0.12.3 - 2024-03-05
- 0.12.2 - 2024-01-11
- 0.12.1 - 2023-12-13
- 0.12.0 - 2023-11-23
- 0.11.2 - 2023-11-13
- 0.11.1 - 2023-11-06
- 0.11.0 - 2023-10-28
- 0.10.3 - 2023-10-12
- 0.10.2 - 2023-08-28
- 0.10.1 - 2023-08-29
- 0.10.0 - 2023-08-03
- 0.9.1 - 2022-06-22
- 0.9.0 - 2023-04-29
- 0.8.5 - 2023-04-02
- 0.8.4 - 2023-01-22
- 0.8.2 - 2022-10-10
- 0.8.0 - 2022-01-18
- 0.7.3 - 2021-12-26
- 0.7.2 - 2021-10-07
- 0.7.1 - 2021-09-20
- 0.7.0 - 2021-09-02
- 0.6.0 - 2021-05-27
- 0.5.0 - 2021-04-08
- 0.4.0 - 2021-01-30
- 0.3.1 - 2020-09-15
- 0.3.0 - 2020-04-30
- 0.2.0 - 2019-12-02
- 0.1.0 - 2019-03-20