@@ -26,6 +26,7 @@ unsigned char const_Rb[16] = {
2626#define LEN_LTK 16
2727#define LEN_MAC_KEY 16
2828
29+ #ifdef _BLE_TRACE_
2930void BluetoothCryptoToolbox::printBytes (uint8_t bytes[], uint8_t length){
3031 for (int i=0 ; i<length; i++){
3132 if (i>0 ){
@@ -37,6 +38,8 @@ void BluetoothCryptoToolbox::printBytes(uint8_t bytes[], uint8_t length){
3738 }
3839 Serial.print (' \n ' );
3940}
41+ #endif
42+
4043int BluetoothCryptoToolbox::f5 (uint8_t DHKey[],uint8_t N_master[], uint8_t N_slave[],
4144 uint8_t BD_ADDR_master[], uint8_t BD_ADDR_slave[], uint8_t MacKey[], uint8_t LTK[])
4245{
@@ -128,15 +131,15 @@ void BluetoothCryptoToolbox::testAh()
128131{
129132 uint8_t irk[16 ] = {0xec ,0x02 ,0x34 ,0xa3 ,0x57 ,0xc8 ,0xad ,0x05 ,0x34 ,0x10 ,0x10 ,0xa6 ,0x0a ,0x39 ,0x7d ,0x9b };
130133 uint8_t expected_final[3 ] = {0x0d ,0xfb ,0xaa };
131-
132134 uint8_t ourResult[3 ];
133135 ah (irk, expected_final, ourResult);
134136
135-
137+ # ifdef _BLE_TRACE_
136138 Serial.print (" Expected : " );
137139 printBytes (&expected_final[3 ], 3 );
138140 Serial.print (" Actual : " );
139141 printBytes (ourResult, 3 );
142+ #endif
140143}
141144
142145int 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(){
160163 uint8_t X[16 ] = {0xd5 ,0xcb ,0x84 ,0x54 ,0xd1 ,0x77 ,0x73 ,0x3e ,0xff ,0xff ,0xb2 ,0xec ,0x71 ,0x2b ,0xae ,0xab };
161164 uint8_t Y[16 ] = {0xa6 ,0xe8 ,0xe7 ,0xcc ,0x25 ,0xa7 ,0x5f ,0x6e ,0x21 ,0x65 ,0x83 ,0xf7 ,0xff ,0x3d ,0xc4 ,0xcf };
162165 uint8_t out[4 ];
163-
164-
166+
165167 uint32_t expected = 0 ;
166168 g2 (U,V,X,Y,out);
167169 uint32_t result = 0 ;
168170 for (int i=0 ; i<4 ; i++) result += out[i] << 8 *i;
169171
172+ #ifdef _BLE_TRACE_
170173 Serial.print (" Expected : " );
171174 Serial.println (expected);
172175 Serial.print (" Result : " );
173176 Serial.println (result);
174177 Serial.println ();
175-
178+ # endif
176179}
177180
178181void 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
264267 int n = 0 ;
265268 int tries = 30 ;
266269 while (HCI.leEncrypt (key,data_in, &status, data_out)!=1 &&n<tries){
270+ #ifdef _BLE_TRACE_
267271 Serial.print (" AES failed... retrying: " );
268272 Serial.println (n);
273+ #endif
269274 BLE.end ();
270275 delay (200 );
271276 BLE.begin ();
272277 n++;
273278 delay (100 *n);
274279 }
275280 if (n==tries){
281+ #ifdef _BLE_TRACE_
276282 Serial.println (" something went wrong with AES." );
283+ #endif
277284 return 0 ;
278285 }
279286 return 1 ;
@@ -288,7 +295,7 @@ void BluetoothCryptoToolbox::test(){
288295
289296 for ( i=0 ; i<16 ; i++ ) Z[i] = 0x00 ;
290297 uint8_t k[16 ] = {0x2b , 0x7e , 0x15 , 0x16 , 0x28 , 0xae , 0xd2 , 0xa6 , 0xab , 0xf7 , 0x15 , 0x88 , 0x09 , 0xcf , 0x4f , 0x3c };
291-
298+
292299 Serial.println (" AES Plaintext:" );
293300 for (int i=0 ; i<16 ; i++){
294301 Serial.print (" 0x" );
@@ -352,7 +359,7 @@ void BluetoothCryptoToolbox::test(){
352359 }
353360 Serial.println (" ." );
354361}
355- #endif
362+ #endif // _BLE_TRACE_
356363// From RFC
357364void BluetoothCryptoToolbox::leftshift_onebit (unsigned char *input,unsigned char *output)
358365{
0 commit comments