@@ -26,6 +26,7 @@ unsigned char const_Rb[16] = {
26
26
#define LEN_LTK 16
27
27
#define LEN_MAC_KEY 16
28
28
29
+ #ifdef _BLE_TRACE_
29
30
void BluetoothCryptoToolbox::printBytes (uint8_t bytes[], uint8_t length){
30
31
for (int i=0 ; i<length; i++){
31
32
if (i>0 ){
@@ -37,6 +38,8 @@ void BluetoothCryptoToolbox::printBytes(uint8_t bytes[], uint8_t length){
37
38
}
38
39
Serial.print (' \n ' );
39
40
}
41
+ #endif
42
+
40
43
int BluetoothCryptoToolbox::f5 (uint8_t DHKey[],uint8_t N_master[], uint8_t N_slave[],
41
44
uint8_t BD_ADDR_master[], uint8_t BD_ADDR_slave[], uint8_t MacKey[], uint8_t LTK[])
42
45
{
@@ -128,15 +131,15 @@ void BluetoothCryptoToolbox::testAh()
128
131
{
129
132
uint8_t irk[16 ] = {0xec ,0x02 ,0x34 ,0xa3 ,0x57 ,0xc8 ,0xad ,0x05 ,0x34 ,0x10 ,0x10 ,0xa6 ,0x0a ,0x39 ,0x7d ,0x9b };
130
133
uint8_t expected_final[3 ] = {0x0d ,0xfb ,0xaa };
131
-
132
134
uint8_t ourResult[3 ];
133
135
ah (irk, expected_final, ourResult);
134
136
135
-
137
+ # ifdef _BLE_TRACE_
136
138
Serial.print (" Expected : " );
137
139
printBytes (&expected_final[3 ], 3 );
138
140
Serial.print (" Actual : " );
139
141
printBytes (ourResult, 3 );
142
+ #endif
140
143
}
141
144
142
145
int BluetoothCryptoToolbox::g2 (uint8_t U[], uint8_t V[], uint8_t X[], uint8_t Y[], uint8_t out[4 ])
@@ -160,19 +163,19 @@ void BluetoothCryptoToolbox::testg2(){
160
163
uint8_t X[16 ] = {0xd5 ,0xcb ,0x84 ,0x54 ,0xd1 ,0x77 ,0x73 ,0x3e ,0xff ,0xff ,0xb2 ,0xec ,0x71 ,0x2b ,0xae ,0xab };
161
164
uint8_t Y[16 ] = {0xa6 ,0xe8 ,0xe7 ,0xcc ,0x25 ,0xa7 ,0x5f ,0x6e ,0x21 ,0x65 ,0x83 ,0xf7 ,0xff ,0x3d ,0xc4 ,0xcf };
162
165
uint8_t out[4 ];
163
-
164
-
166
+
165
167
uint32_t expected = 0 ;
166
168
g2 (U,V,X,Y,out);
167
169
uint32_t result = 0 ;
168
170
for (int i=0 ; i<4 ; i++) result += out[i] << 8 *i;
169
171
172
+ #ifdef _BLE_TRACE_
170
173
Serial.print (" Expected : " );
171
174
Serial.println (expected);
172
175
Serial.print (" Result : " );
173
176
Serial.println (result);
174
177
Serial.println ();
175
-
178
+ # endif
176
179
}
177
180
178
181
void BluetoothCryptoToolbox::AES_CMAC ( unsigned char *key, unsigned char *input, int length,
@@ -264,16 +267,20 @@ int BluetoothCryptoToolbox::AES_128(uint8_t* key, uint8_t* data_in, uint8_t* dat
264
267
int n = 0 ;
265
268
int tries = 30 ;
266
269
while (HCI.leEncrypt (key,data_in, &status, data_out)!=1 &&n<tries){
270
+ #ifdef _BLE_TRACE_
267
271
Serial.print (" AES failed... retrying: " );
268
272
Serial.println (n);
273
+ #endif
269
274
BLE.end ();
270
275
delay (200 );
271
276
BLE.begin ();
272
277
n++;
273
278
delay (100 *n);
274
279
}
275
280
if (n==tries){
281
+ #ifdef _BLE_TRACE_
276
282
Serial.println (" something went wrong with AES." );
283
+ #endif
277
284
return 0 ;
278
285
}
279
286
return 1 ;
@@ -288,7 +295,7 @@ void BluetoothCryptoToolbox::test(){
288
295
289
296
for ( i=0 ; i<16 ; i++ ) Z[i] = 0x00 ;
290
297
uint8_t k[16 ] = {0x2b , 0x7e , 0x15 , 0x16 , 0x28 , 0xae , 0xd2 , 0xa6 , 0xab , 0xf7 , 0x15 , 0x88 , 0x09 , 0xcf , 0x4f , 0x3c };
291
-
298
+
292
299
Serial.println (" AES Plaintext:" );
293
300
for (int i=0 ; i<16 ; i++){
294
301
Serial.print (" 0x" );
@@ -352,7 +359,7 @@ void BluetoothCryptoToolbox::test(){
352
359
}
353
360
Serial.println (" ." );
354
361
}
355
- #endif
362
+ #endif // _BLE_TRACE_
356
363
// From RFC
357
364
void BluetoothCryptoToolbox::leftshift_onebit (unsigned char *input,unsigned char *output)
358
365
{
0 commit comments