1
2
3
4 """Handling of Diffie-Hellman parameter files."""
5
6 from .utils.asn1parser import ASN1Parser
7 from .utils.pem import dePem
8 from .utils.cryptomath import bytesToNumber
9
10
12 """
13 Parse DH parameters from ASN.1 DER encoded binary string.
14
15 @param data: DH parameters
16 @rtype: tuple of int
17 """
18 parser = ASN1Parser(data)
19
20 prime = parser.getChild(0)
21 gen = parser.getChild(1)
22
23 return (bytesToNumber(gen.value), bytesToNumber(prime.value))
24
25
27 """
28 Parses DH parameters from a binary string.
29
30 The string can either by PEM or DER encoded
31
32 @param data: DH parameters
33 @rtype: tuple of int
34 @return: generator and prime
35 """
36 try:
37 return parseBinary(data)
38 except (SyntaxError, TypeError):
39 pass
40
41 binData = dePem(data, "DH PARAMETERS")
42 return parseBinary(binData)
43