@@ -44,6 +44,84 @@ TEST(basic, cipher_foreach) {
4444 foundCiphers.count (" AES-256-CBC" ));
4545}
4646
47+ TEST (BignumPointer, bitLength) {
48+ // Test empty/null BignumPointer
49+ BignumPointer empty;
50+ ASSERT_EQ (empty.bitLength (), 0 );
51+
52+ // Test zero value
53+ auto zero = BignumPointer::New ();
54+ ASSERT_TRUE (zero);
55+ ASSERT_TRUE (zero.setWord (0 ));
56+ ASSERT_EQ (zero.bitLength (), 0 );
57+
58+ // Test value 1 (1 bit)
59+ auto one = BignumPointer::New ();
60+ ASSERT_TRUE (one);
61+ ASSERT_TRUE (one.setWord (1 ));
62+ ASSERT_EQ (one.bitLength (), 1 );
63+
64+ // Test value 2 (2 bits: 10 in binary)
65+ auto two = BignumPointer::New ();
66+ ASSERT_TRUE (two);
67+ ASSERT_TRUE (two.setWord (2 ));
68+ ASSERT_EQ (two.bitLength (), 2 );
69+
70+ // Test value 255 (8 bits: 11111111 in binary)
71+ auto byte = BignumPointer::New ();
72+ ASSERT_TRUE (byte);
73+ ASSERT_TRUE (byte.setWord (255 ));
74+ ASSERT_EQ (byte.bitLength (), 8 );
75+
76+ // Test value 256 (9 bits: 100000000 in binary)
77+ auto nineBits = BignumPointer::New ();
78+ ASSERT_TRUE (nineBits);
79+ ASSERT_TRUE (nineBits.setWord (256 ));
80+ ASSERT_EQ (nineBits.bitLength (), 9 );
81+
82+ // Test larger value (0xFFFFFFFF = 32 bits)
83+ auto thirtyTwoBits = BignumPointer::New ();
84+ ASSERT_TRUE (thirtyTwoBits);
85+ ASSERT_TRUE (thirtyTwoBits.setWord (0xFFFFFFFF ));
86+ ASSERT_EQ (thirtyTwoBits.bitLength (), 32 );
87+ }
88+
89+ TEST (BignumPointer, byteLength) {
90+ // Test empty/null BignumPointer
91+ BignumPointer empty;
92+ ASSERT_EQ (empty.byteLength (), 0 );
93+
94+ // Test zero value
95+ auto zero = BignumPointer::New ();
96+ ASSERT_TRUE (zero);
97+ ASSERT_TRUE (zero.setWord (0 ));
98+ ASSERT_EQ (zero.byteLength (), 0 );
99+
100+ // Test value 1 (1 byte)
101+ auto one = BignumPointer::New ();
102+ ASSERT_TRUE (one);
103+ ASSERT_TRUE (one.setWord (1 ));
104+ ASSERT_EQ (one.byteLength (), 1 );
105+
106+ // Test value 255 (1 byte)
107+ auto byte = BignumPointer::New ();
108+ ASSERT_TRUE (byte);
109+ ASSERT_TRUE (byte.setWord (255 ));
110+ ASSERT_EQ (byte.byteLength (), 1 );
111+
112+ // Test value 256 (2 bytes)
113+ auto twoBytes = BignumPointer::New ();
114+ ASSERT_TRUE (twoBytes);
115+ ASSERT_TRUE (twoBytes.setWord (256 ));
116+ ASSERT_EQ (twoBytes.byteLength (), 2 );
117+
118+ // Test larger value (0xFFFFFFFF = 4 bytes)
119+ auto fourBytes = BignumPointer::New ();
120+ ASSERT_TRUE (fourBytes);
121+ ASSERT_TRUE (fourBytes.setWord (0xFFFFFFFF ));
122+ ASSERT_EQ (fourBytes.byteLength (), 4 );
123+ }
124+
47125#ifdef OPENSSL_IS_BORINGSSL
48126TEST (basic, chacha20_poly1305) {
49127 unsigned char key[] = {0xde , 0xad , 0xbe , 0xef , 0x00 , 0x01 , 0x02 , 0x03 ,
0 commit comments