aboutsummaryrefslogtreecommitdiff
path: root/frozen_deps/ecdsa/curves.py
diff options
context:
space:
mode:
Diffstat (limited to 'frozen_deps/ecdsa/curves.py')
-rw-r--r--frozen_deps/ecdsa/curves.py194
1 files changed, 194 insertions, 0 deletions
diff --git a/frozen_deps/ecdsa/curves.py b/frozen_deps/ecdsa/curves.py
new file mode 100644
index 0000000..9a10380
--- /dev/null
+++ b/frozen_deps/ecdsa/curves.py
@@ -0,0 +1,194 @@
+from __future__ import division
+
+from . import der, ecdsa
+from .util import orderlen
+
+
+# orderlen was defined in this module previously, so keep it in __all__,
+# will need to mark it as deprecated later
+__all__ = [
+ "UnknownCurveError",
+ "orderlen",
+ "Curve",
+ "NIST192p",
+ "NIST224p",
+ "NIST256p",
+ "NIST384p",
+ "NIST521p",
+ "curves",
+ "find_curve",
+ "SECP256k1",
+ "BRAINPOOLP160r1",
+ "BRAINPOOLP192r1",
+ "BRAINPOOLP224r1",
+ "BRAINPOOLP256r1",
+ "BRAINPOOLP320r1",
+ "BRAINPOOLP384r1",
+ "BRAINPOOLP512r1",
+]
+
+
+class UnknownCurveError(Exception):
+ pass
+
+
+class Curve:
+ def __init__(self, name, curve, generator, oid, openssl_name=None):
+ self.name = name
+ self.openssl_name = openssl_name # maybe None
+ self.curve = curve
+ self.generator = generator
+ self.order = generator.order()
+ self.baselen = orderlen(self.order)
+ self.verifying_key_length = 2 * self.baselen
+ self.signature_length = 2 * self.baselen
+ self.oid = oid
+ self.encoded_oid = der.encode_oid(*oid)
+
+ def __repr__(self):
+ return self.name
+
+
+# the NIST curves
+NIST192p = Curve(
+ "NIST192p",
+ ecdsa.curve_192,
+ ecdsa.generator_192,
+ (1, 2, 840, 10045, 3, 1, 1),
+ "prime192v1",
+)
+
+
+NIST224p = Curve(
+ "NIST224p",
+ ecdsa.curve_224,
+ ecdsa.generator_224,
+ (1, 3, 132, 0, 33),
+ "secp224r1",
+)
+
+
+NIST256p = Curve(
+ "NIST256p",
+ ecdsa.curve_256,
+ ecdsa.generator_256,
+ (1, 2, 840, 10045, 3, 1, 7),
+ "prime256v1",
+)
+
+
+NIST384p = Curve(
+ "NIST384p",
+ ecdsa.curve_384,
+ ecdsa.generator_384,
+ (1, 3, 132, 0, 34),
+ "secp384r1",
+)
+
+
+NIST521p = Curve(
+ "NIST521p",
+ ecdsa.curve_521,
+ ecdsa.generator_521,
+ (1, 3, 132, 0, 35),
+ "secp521r1",
+)
+
+
+SECP256k1 = Curve(
+ "SECP256k1",
+ ecdsa.curve_secp256k1,
+ ecdsa.generator_secp256k1,
+ (1, 3, 132, 0, 10),
+ "secp256k1",
+)
+
+
+BRAINPOOLP160r1 = Curve(
+ "BRAINPOOLP160r1",
+ ecdsa.curve_brainpoolp160r1,
+ ecdsa.generator_brainpoolp160r1,
+ (1, 3, 36, 3, 3, 2, 8, 1, 1, 1),
+ "brainpoolP160r1",
+)
+
+
+BRAINPOOLP192r1 = Curve(
+ "BRAINPOOLP192r1",
+ ecdsa.curve_brainpoolp192r1,
+ ecdsa.generator_brainpoolp192r1,
+ (1, 3, 36, 3, 3, 2, 8, 1, 1, 3),
+ "brainpoolP192r1",
+)
+
+
+BRAINPOOLP224r1 = Curve(
+ "BRAINPOOLP224r1",
+ ecdsa.curve_brainpoolp224r1,
+ ecdsa.generator_brainpoolp224r1,
+ (1, 3, 36, 3, 3, 2, 8, 1, 1, 5),
+ "brainpoolP224r1",
+)
+
+
+BRAINPOOLP256r1 = Curve(
+ "BRAINPOOLP256r1",
+ ecdsa.curve_brainpoolp256r1,
+ ecdsa.generator_brainpoolp256r1,
+ (1, 3, 36, 3, 3, 2, 8, 1, 1, 7),
+ "brainpoolP256r1",
+)
+
+
+BRAINPOOLP320r1 = Curve(
+ "BRAINPOOLP320r1",
+ ecdsa.curve_brainpoolp320r1,
+ ecdsa.generator_brainpoolp320r1,
+ (1, 3, 36, 3, 3, 2, 8, 1, 1, 9),
+ "brainpoolP320r1",
+)
+
+
+BRAINPOOLP384r1 = Curve(
+ "BRAINPOOLP384r1",
+ ecdsa.curve_brainpoolp384r1,
+ ecdsa.generator_brainpoolp384r1,
+ (1, 3, 36, 3, 3, 2, 8, 1, 1, 11),
+ "brainpoolP384r1",
+)
+
+
+BRAINPOOLP512r1 = Curve(
+ "BRAINPOOLP512r1",
+ ecdsa.curve_brainpoolp512r1,
+ ecdsa.generator_brainpoolp512r1,
+ (1, 3, 36, 3, 3, 2, 8, 1, 1, 13),
+ "brainpoolP512r1",
+)
+
+
+curves = [
+ NIST192p,
+ NIST224p,
+ NIST256p,
+ NIST384p,
+ NIST521p,
+ SECP256k1,
+ BRAINPOOLP160r1,
+ BRAINPOOLP192r1,
+ BRAINPOOLP224r1,
+ BRAINPOOLP256r1,
+ BRAINPOOLP320r1,
+ BRAINPOOLP384r1,
+ BRAINPOOLP512r1,
+]
+
+
+def find_curve(oid_curve):
+ for c in curves:
+ if c.oid == oid_curve:
+ return c
+ raise UnknownCurveError(
+ "I don't know about the curve with oid %s."
+ "I only know about these: %s" % (oid_curve, [c.name for c in curves])
+ )