tlslite/dh.py
# Author:
# Hubert Kario
"""Handling of Diffie-Hellman parameter files."""
from .utils.asn1parser import ASN1Parser
from .utils.pem import dePem
from .utils.cryptomath import bytesToNumber
def parseBinary(data):
"""
Parse DH parameters from ASN.1 DER encoded binary string.
:param bytes data: DH parameters
:rtype: tuple of int
"""
parser = ASN1Parser(data)
prime = parser.getChild(0)
gen = parser.getChild(1)
return (bytesToNumber(gen.value), bytesToNumber(prime.value))
def parse(data):
"""
Parses DH parameters from a binary string.
The string can either by PEM or DER encoded
:param bytes data: DH parameters
:rtype: tuple of int
:returns: generator and prime
"""
try:
return parseBinary(data)
except (SyntaxError, TypeError):
pass
binData = dePem(data, "DH PARAMETERS")
return parseBinary(binData)