Coverage Report

Created: 2026-05-16 06:34

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/botan/build/include/public/botan/curve_gfp.h
Line
Count
Source
1
/*
2
* Elliptic curves over GF(p)
3
*
4
* (C) 2007 Martin Doering, Christoph Ludwig, Falko Strenzke
5
*     2010-2011,2012,2014,2024 Jack Lloyd
6
*
7
* Botan is released under the Simplified BSD License (see license.txt)
8
*/
9
10
#ifndef BOTAN_GFP_CURVE_H_
11
#define BOTAN_GFP_CURVE_H_
12
13
// TODO(Botan4) delete this header
14
15
#include <botan/bigint.h>
16
17
// Currently exposed in EC_Point
18
//BOTAN_FUTURE_INTERNAL_HEADER(curve_gfp.h)
19
20
namespace Botan {
21
22
class EC_Group_Data;
23
24
/**
25
* This is an internal type which is only exposed for accidental
26
* historical reasons. Do not use it in any way.
27
*
28
* This class will be removed in Botan4.
29
*/
30
class BOTAN_UNSTABLE_API CurveGFp final {
31
   public:
32
      /**
33
      * @return curve coefficient a
34
      */
35
      const BigInt& get_a() const;
36
37
      /**
38
      * @return curve coefficient b
39
      */
40
      const BigInt& get_b() const;
41
42
      /**
43
      * Get prime modulus of the field of the curve
44
      * @return prime modulus of the field of the curve
45
      */
46
      const BigInt& get_p() const;
47
48
      size_t get_p_words() const;
49
50
      CurveGFp(const CurveGFp&) = default;
51
      CurveGFp(CurveGFp&&) = default;
52
53
      ~CurveGFp() = default;
54
55
   private:
56
      friend class EC_Point;
57
      friend class EC_Group_Data;
58
59
      /**
60
      * Create an uninitialized CurveGFp
61
      */
62
515k
      CurveGFp() = default;
63
64
      BOTAN_FUTURE_EXPLICIT CurveGFp(const EC_Group_Data* group);
65
66
      CurveGFp& operator=(const CurveGFp&) = default;
67
      CurveGFp& operator=(CurveGFp&&) = default;
68
69
440k
      void swap(CurveGFp& other) noexcept { std::swap(m_group, other.m_group); }
70
71
281k
      bool operator==(const CurveGFp& other) const { return (m_group == other.m_group); }
72
73
   private:
74
      const EC_Group_Data& group() const;
75
76
      /**
77
      * Raw pointer
78
      *
79
      * This EC_Group_Data is not owned because instead the EC_Group_Data
80
      * owns this CurveGFp, so we can always access it safely. If it was
81
      * a shared_ptr this would cause a reference cycle.
82
      */
83
      const EC_Group_Data* m_group = nullptr;
84
};
85
86
}  // namespace Botan
87
88
#endif