Return-Path: From: Szymon Janc To: Ankur Patel Cc: "linux-bluetooth@vger.kernel.org" Subject: Re: Issue: Sending ATT Signed Write Command via btgatt-client Date: Thu, 28 May 2015 11:15:22 +0200 Message-ID: <1611692.3irn0nrenv@leonov> In-Reply-To: References: <1831684.talzOfVBnx@leonov> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Sender: linux-bluetooth-owner@vger.kernel.org List-ID: Hi Ankur, On Thursday 28 of May 2015 18:07:48 Ankur Patel wrote: > > Hi Ankur, > > > > On Thursday 28 of May 2015 16:47:09 Ankur Patel wrote: > > > Hello Folks, > > > > > > I would like to Send Signed Write command to modify a characteristic > > > on the Host. It failed into the Error: Failed to initiate write > > > without response procedure > > > > > > Information on Controller (May be helpful): > > > root@imx28evk:~# cat /proc/crypto > > > name : ecb(aes) > > > driver : ecb-aes-dcp > > > module : kernel > > > priority : 400 > > > refcnt : 1 > > > selftest : passed > > > type : ablkcipher > > > async : yes > > > blocksize : 16 > > > min keysize : 16 > > > max keysize : 32 > > > ivsize : 0 > > > geniv : > > > > > > root@imx28evk:~# btmgmt info > > > Index list with 1 item > > > hci0: Primary controller > > > > > > addr 1C:BA:8C:86:81:21 version 6 manufacturer 13 class 0x000000 > > > supported settings: powered connectable fast-connectable > > > > > > discoverable bondable link-security ssp br/edr hs le advertising > > > debug-keys privacy current settings: powered connectable discoverable > > > bondable link-security br/edr le advertising name testbt > > > > > > short name > > > > > > root@imx28evk:~/tools# btgatt-client -d 00:1B:DC:07:2E:85 Connecting > > > to device... Done Service Added - UUID: > > > 00001800-0000-1000-8000-00805f9b34fb start: 0x0001 > > > end: 0x000d Service Added - UUID: 00001801-0000-1000-8000-00805f9b34fb > > > start: 0x0014 end: 0x0016 [GATT client]# GATT discovery procedures > > > complete [GATT client]# ... > > > [GATT client]# set-sign-key -c efcdab8967452301efcdab8967452301 [GATT > > > client]# write-value -s -w 0xd 01 Failed to initiate write without > > > response procedure > > > > > > I tried to trace the error as: > > > bt_gatt_client_write_without_response(..) -> bt_att_send(..) -> > > > create_att_send_op(..) -> encode_pdu(..) -> bt_crypto_sign_att(..) -> > > > As > > > att->crypto is NULL it returns false. > > > > > > I tried to check the reason for att->crypto to be NULL. Found that > > > while initialization of the btgatt-client, under bt_crypto_new() -> > > > crypto->ecb_aes = ecb_aes_setup();. It fails under ecb_aes_setup > > > > function. > > > > > From the output of /proc/crypto, the kernel has the support. I am > > > wondering how to enable the crypto? > > > > Most likely following options are missing in your kernel configuration: > > CONFIG_CRYPTO_CMAC > > CONFIG_CRYPTO_USER_API > > CONFIG_CRYPTO_USER_API_HASH > > CONFIG_CRYPTO_USER_API_SKCIPHER > > It Worked!!. Thank you Szymon for quick response. > > Now I am able to send the Signed Write Command but without Authentication > Signature. If I understood it correctly, 1) Set the Signature using [GATT > client]# set-sign-key -c efcdab8967452301efcdab8967452301 2) Execute > command: write-value -s -w 0xd 01 to send write command. > > I couldn't able to see the signature on the Sniffer. > In addition on the Controller I see below output of root@imx28evk:~#Btmon: > > < ACL Data TX: Handle 1025 flags 0x00 dlen 20 > > > [hci0] 2394.331806 ATT: Signed Write Command (0xd2) len 15 > 0d 00 01 03 00 00 00 47 8a ec df 50 fc a5 ba .......G...P... This looks OK to me. 0d 00 01 03 00 00 00 47 8a ec df 50 fc a5 ba handle data signature Check CoreSpec 4.2 Vol3, Part F, p. 3.4.5.4 (pdf page 2194) for details. -- BR Szymon Janc