|
|
@@ -71,8 +71,6 @@ static const tSMP_ACT smp_encrypt_action[] = {
|
|
|
smp_generate_rand_cont /* SMP_GEN_SRAND_MRAND_CONT */
|
|
|
};
|
|
|
|
|
|
-#define SMP_PASSKEY_MASK 0xfff00000
|
|
|
-
|
|
|
void smp_debug_print_nbyte_little_endian(UINT8 *p, const UINT8 *key_name, UINT8 len)
|
|
|
{
|
|
|
#if SMP_DEBUG == TRUE
|
|
|
@@ -186,6 +184,29 @@ BOOLEAN smp_encrypt_data (UINT8 *key, UINT8 key_len,
|
|
|
return TRUE;
|
|
|
}
|
|
|
|
|
|
+void smp_use_static_passkey(void)
|
|
|
+{
|
|
|
+ tSMP_CB *p_cb = &smp_cb;
|
|
|
+ UINT8 *tt = p_cb->tk;
|
|
|
+ tSMP_KEY key;
|
|
|
+ UINT32 passkey = p_cb->static_passkey;
|
|
|
+ /* save the TK */
|
|
|
+ memset(p_cb->tk, 0, BT_OCTET16_LEN);
|
|
|
+ UINT32_TO_STREAM(tt, passkey);
|
|
|
+
|
|
|
+ key.key_type = SMP_KEY_TYPE_TK;
|
|
|
+ key.p_data = p_cb->tk;
|
|
|
+
|
|
|
+ if (p_cb->p_callback) {
|
|
|
+ (*p_cb->p_callback)(SMP_PASSKEY_NOTIF_EVT, p_cb->pairing_bda, (tSMP_EVT_DATA *)&passkey);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_PASSKEY_DISP) {
|
|
|
+ smp_sm_event(&smp_cb, SMP_KEY_READY_EVT, &passkey);
|
|
|
+ } else {
|
|
|
+ smp_sm_event(p_cb, SMP_KEY_READY_EVT, (tSMP_INT_DATA *)&key);
|
|
|
+ }
|
|
|
+}
|
|
|
/*******************************************************************************
|
|
|
**
|
|
|
** Function smp_generate_passkey
|
|
|
@@ -199,7 +220,12 @@ void smp_generate_passkey(tSMP_CB *p_cb, tSMP_INT_DATA *p_data)
|
|
|
{
|
|
|
UNUSED(p_data);
|
|
|
|
|
|
- SMP_TRACE_DEBUG ("%s", __func__);
|
|
|
+ if(p_cb->use_static_passkey) {
|
|
|
+ SMP_TRACE_DEBUG ("%s use static passkey %6d", __func__, p_cb->static_passkey);
|
|
|
+ smp_use_static_passkey();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ SMP_TRACE_DEBUG ("%s generate rand passkey", __func__);
|
|
|
p_cb->rand_enc_proc_state = SMP_GEN_TK;
|
|
|
|
|
|
/* generate MRand or SRand */
|