Sağlayıcı reklam sinyali

Reklamcılık: Keşfedilebilir olduğunda

Sağlayıcı cihazı BR/EDR bulunabilir olduğunda (yani eşleme modunda), BLE üzerinden Hızlı Eşleme Modeli Kimlik Verileri'nin tanıtımını yapamaz ve BLE adresi, döndürülmez.

Reklam aralığı: Bulunabilir olduğunda

Reklamlar arasındaki aralık 100 ms'den (10 Hz) fazla olmamalıdır. CEVAP Hızlı hız, Arayanın Sağlayıcı'yı hızlı bir şekilde bulmasına olanak sağlar. Bu sırada, düşük güç modunu kullanabilirsiniz.

Reklam yükü: Hızlı Eşleme Model Kimliği Verileri

Reklam, Hizmet Verileri veri türünü, a.g., Böl. 1.11. İlgili içeriği oluşturmak için kullanılan UUID, 0xFE2C öğesinin Hızlı Eşleme Hizmeti UUID'si olmalıdır. Hizmet verileri, şunları içerir:

Sekiz Veri türü Açıklama Değer
0-2 uint24 24 bit model kimliği değişiklik gösterir

Reklamcılık: Bulunabilir olmadığında

Bulunabilir değilken (yani eşleme modunda değilken), Sağlayıcı cihazı, aşağıdaki yönergeleri kullanarak Hızlı Eşleme Hesap Verileri'nin reklamını yapabilir.

Hesap verilerinin reklamını yapmak, yakın çevredeki kullanıcıların bir sağlayıcının ne zaman yapıldığını ayırt etmesini sağlar bir kullanıcının hesabına ait olur ve tekrar eşleme moduna geri döner. Bu da kullanıcının şikayetiniz. Arayanlar, kullanıcılara söz konusu içeriği göz ardı etme fırsatı verir. Bu yayını, sağlayıcıyla eşleşmeyi beklememeleri veya yayının alakalı olmaması (örneğin, zaten eşlenmişse). Arama yapanlar ayrıca açıkça kötü olan yayınları otomatik olarak filtreler. hesap verileri yanlış yapılandırıldığında olabilir.

Reklam aralığı: Bulunabilir olmadığında

Reklamlar arasındaki aralık en fazla 250 ms (4 Hz) olmalıdır.

Reklam yükü: Hızlı Eşleme Hesap Verileri

Reklam, Hizmet Verileri veri türünü, aynı zamanda Böl. 1.11. İlgili içeriği oluşturmak için kullanılan UUID, 0xFE2C öğesinin Hızlı Eşleme Hizmeti UUID'si olmalıdır. Hizmet verileri, şunları içerir:

Sekiz Veri türü Açıklama Değer
0 uint8 Sürüm ve işaretler
0bVVVVFFFF
  • V = sürüm
  • F = işaretler
0x00
(ileride kullanılmak üzere ayrılmıştır)
1 - değişiklik gösterir Hesap Önemli Verileri Hesap Anahtar Listesi boşsa
veya 0x00 değişir

Hesap Anahtar Verileri şunları içerir:

Sekiz Veri türü Açıklama Değer
0 uint8 Alan uzunluğu ve türü
0bLLTTTT
  • L = hesap anahtarı filtresinin bayt cinsinden uzunluğu
  • T = tür
0 MrLL0000
  • uzunluk = 0bLL = değişken
  • tür = 0b0000 (kullanıcı arayüzü göstergesini göster) veya 0b0010 (kullanıcı arayüzü göstergesini gizle), Hesap Anahtar Filtresi
1 - sn. Hesap Anahtarı Filtresi değişiklik gösterir
sn + 1 uint8 Alan uzunluğu ve türü
0bLLTTTT
  • L = bayt cinsinden uzunluk
  • T = tür
0b00100001
  • uzunluk = 0b0010 = 2
  • tür = 0b0001, Tuz
s + 2 - s + 3 uint16 Salt değişiklik gösterir

Hesap Anahtarı Filtresi

Reklamı yapılan Hesap Anahtarı Filtresi, arayanın Sağlayıcının sahip olduğu belirli bir hesap anahtarı (düşük yanlış pozitiflik oranıyla) %0,5'in çok altında bir olasılıkla) olduğunu tespit ettik. İlgili içeriği oluşturmak için kullanılan Arayan, otomatik olarak bağlantı kurabilir ve gördüğünde prosedürü başlatmaya çalışabilir. 0 türünde yayınlanan bir filtre, örneğin kullanıcı arayüzü göstergesini ve böylece yanlışlık oranını azaltmak için potansiyel olarak hesap anahtarlarından birini içerebilir. bir adım daha öteye gösterin. Bazı durumlarda, Sağlayıcı fark edilmek isteyebilir arayan tarafından gönderilen yeni bir e-posta alırsınız. Örneğin, kulaklıklar takıldığında sonraki eşleme bildirimini göstermeyi durdurmak istiyoruz. bu eşleme mikrofonlu kulaklık tarafından reddedilebilir.

Hesap Anahtarı Filtresi değişken uzunluktadır Oluşturulan çiçek filtresi şöyle olur:

  1. n değerinin kalıcı öğedeki hesap anahtarı sayısı (n >= 1) olmasına izin verin Hesap Anahtarı listesi.
  2. Filtrenin bayt cinsinden boyutu olan s değerinin (1,2*n + 3) kısaltılmasına izin verin. Örneğin, Örneğin, 1 anahtar kalıcı olursa s = 4 bayt olarak kabul edilir.
    uint8_t s = (((uint8_t)(( float )1.2 * n)) + 3);
  3. F filtresini s baytlık dizi olarak başlatın ve her biri 0 değerine ayarlayın.
    uint8_t F[s] = {0};
  4. Kalıcı Hesap Anahtarı listesindeki her bir hesap anahtarı K için:
    a. V'nin concat(K, Salt) olmasına izin verin.

    // In the sample code, the size of salt is 2 bytes.
    #define SALT_SIZE 2
    
    uint8_t V[FASTPAIR_ACCOUNT_KEY_SIZE + SALT_SIZE];
    for (uint8_t keyIndex = 0; keyIndex < n; keyIndex++)
      {
         // concat (K, Salt)
          fastpair_get_account_key_by_index(keyIndex, V);
    
          uint8_t randomSalt = (uint8_t)rand();
          V[FASTPAIR_ACCOUNT_KEY_SIZE] = randomSalt;
          ... }
    

    b. SHA256 kullanarak V'ye karma oluşturma işlemi uygulayarak 32 baytlık H değeri elde edin = {H0, ..., H31}.

    uint8_t H[32] = {0};
    SHA256_hash_function(V, H);
    

    c. H'yi 4 baytlık işaretsiz tam sayıya bölerek X = {X0; ..., X7}; burada X0 = 0xH0H1H2H3.

         uint32_t X[8];
         for (index = 0; index < 8; index++)
         {
            X[index] = (((uint32_t)(H[index * 4])) << 24) |
                        (((uint32_t)(H[index * 4 + 1])) << 16) |
                        (((uint32_t)(H[index * 4 + 2])) << 8) |
                        (((uint32_t)(H[index * 4 + 3])) << 0);
         }
    

    d. Her bir Xi için:
    i. M'nin, filtredeki bit sayısının Xi modülü olmasına izin verin. (s * 8).
    . ii. F biçiminde gösterilen baytı dizinde (M / 8) aşağı yuvarlayın.
    . iii. Baytın içinde, dizindeki biti (M % 8) 1 olarak ayarlayın.
    . iv. Başka bir deyişle:

        // M = Xi % (s * 8)
        // F[M/8] = F[M/8] | (1 << (M % 8))
        for (index = 0; index < 8; index++)
        {
            uint32_t M    = X[index] % (s * 8);
            F[M / 8] = F[M / 8] | (1 << (M % 8));
        }
    

Reklamcılık verilerine Hesap Anahtar Filtresi alanı olarak F filtresini ekleyin. "Endianness" diye bir şey olmadığını unutmayın daha fazla veya daha az değer olmadığı için büyük bayt sırasını değiştirmeyin.

Tuz alanı

takviye değer, oluşturulurken hesap anahtarlarına eklenen rastgele bir değerdir çiçek filtresi. Bu takviye değer, RPA her güncellendiğinde yeniden üretilmelidir. adres rotasyonu arasında izleme yapmaktan kaçınmalıdır.

takviye değeri kullanarak Hesap Anahtarı Filtresi oluşturmak için:

  1. Rastgele bir 2 baytlık S oluşturun. "Endianness" diye bir şey olmadığını unutmayın bu daha fazla veya daha az anlamlı bayt olmadığından değerini değiştirin; sipariş.
  2. Tuz olarak 2 baytlık S kullanın.
  3. Reklamı yapılan Hızlı Eşleme hesap verilerinde, oluşturulan filtreyi Hesap Anahtarı Filtresi alanına, Tuz alanında S'ye basın.