Connect to bluetooth le device that has pin code enabled

Hi,
Great work on the library, it has been a lifesaver,
How do I connect to a bluetooth le device that has a pin code enabled. I have used gatttool in linux and passed the security flag and the pin code on the command line. Is there a parameter on the connection to pass the pin code?
Thanks

@ozsaffer noble relies on BlueZ's bluetoothd for pairing and security, currently there is no API to pass in the pin code or security flag. To enable security, you must access a characteristic that requires security.
You could try using bluetoothctl to set the pairing pin code. See: http://permalink.gmane.org/gmane.linux.bluez.kernel/46033

Is there anyway to initiate SSP security? Is it done automatically if a characteristic requires Authorization?
I saw the "startLeEncryption", does that ever need to be called directly?

@robotastic yes, it's currently called automatically when a characteristic requires authorization.
noble 1.1.0 has a built-in minimal SMP layer now, that currently only supports "Just Works" auth: https://github.com/sandeepmistry/noble/blob/master/lib/hci-socket/smp.js

I turned on the debug messages to trace it while trying to setup an ANCS session. It looks like the SMP encryption attempt is failing though. After I do a service discovery from the non-iOS side, it find the characteristics that require auth and calls: https://github.com/sandeepmistry/noble/blob/master/lib/hci-socket/smp.js#L35
However it receives a Fail packet from iOS and goes to: handlePairingFailed. Have you successfully done a pairing with iOS? Are there some obvious things I should check?
The code I am working with is here: https://github.com/robotastic/noble and I redid the ancs-test.js language, along with messing with noble.js.
on -> stateChange: poweredOn
on -> advertisingStart: error Error: Command Disallowed
on -> accept: 67:0d:56:14:10:56
NOBLE: on -> discover: {"id":"670d56141056","address":"67:0d:56:14:10:56","addressType":"random","connectable":true,"advertisement":{"serviceData":[],"serviceUuids":[]},"rssi":127,"state":"disconnected"}
NonRandom localAddressType
Random remoteAddressType
  att 67:0d:56:14:10:56: write: 020001 +0ms
ancs - connected
CHARECTERISTIC
  att 67:0d:56:14:10:56: ignoring request/command ... +46ms
  att 67:0d:56:14:10:56: new MTU is 158 +1ms
  att 67:0d:56:14:10:56: write: 100100ffff0028 +0ms
  att 67:0d:56:14:10:56: write: 100a00ffff0028 +57ms
  att 67:0d:56:14:10:56: ignoring request/command ... +61ms
  att 67:0d:56:14:10:56: write: 100f00ffff0028 +0ms
  att 67:0d:56:14:10:56: write: 101900ffff0028 +58ms
  att 67:0d:56:14:10:56: write: 102f00ffff0028 +61ms
  att 67:0d:56:14:10:56: write:<PHONE_NUMBER>0328 +61ms
  att 67:0d:56:14:10:56: write:<PHONE_NUMBER>0328 +62ms
CHARECTERISTIC: {"uuid":"69d1d8f345e149a898219bbdfdaad9d9","name":null,"type":null,"properties":["write","extendedProperties"]}
CHARECTERISTIC: {"uuid":"9fbf120d630142d98c5825e699a21dbd","name":null,"type":null,"properties":["notify"]}
NOTIFICATION_SOURCE_UUID
CHARECTERISTIC: {"uuid":"22eac6e924d64bb5be44b36ace7c7bfb","name":null,"type":null,"properties":["notify"]}
DATA_SOURCE_UUID
ancs - services and characteristics discovered
  att 67:0d:56:14:10:56: write: 081d001f000229 +58ms
  att 67:0d:56:14:10:56: write:<PHONE_NUMBER>0229 +59ms
  att 67:0d:56:14:10:56: write: 121f000100 +59ms
  att Time to start encrypting +60ms
Sending sendPairingRequest
Pairing Code: 5
Pairing failed:
  att Encrypt failed! +61ms
  att 67:0d:56:14:10:56: ignoring request/command ... +1s

@robotastic yep, I've had it successfully pair with Linux for ANCS. A hcidump would be the best place to get more info.

@sandeepmistry Good to know that it can work. I am getting an Ubertooth so I can see how the Arduino ANCS I have is working and compare.
Here is the HCIDump. It is from running a branch of Noble I created: https://github.com/robotastic/noble
Any insight would be great. I am also working on a merge of Bleno and Noble to make role reversal a little easier.
HCI sniffer - Bluetooth packet analyzer ver 5.21
device: hci0 snap_len: 1500 filter: 0xffffffff
< HCI Command: Set Event Mask (0x03|0x0001) plen 8
Mask: 0xfffffbff07f8bf3d

HCI Event: Command Complete (0x0e) plen 4
Set Event Mask (0x03|0x0001) ncmd 1
status 0x00
< HCI Command: LE Set Event Mask (0x08|0x0001) plen 8
mask 0x1f00000000000000 (Reserved)
HCI Event: Command Complete (0x0e) plen 4
LE Set Event Mask (0x08|0x0001) ncmd 1
status 0x00
< HCI Command: Read Local Version Information (0x04|0x0001) plen 0
HCI Event: Command Complete (0x0e) plen 12
Read Local Version Information (0x04|0x0001) ncmd 1
status 0x00
HCI Version: 4.0 (0x6) HCI Revision: 0x1000
LMP Version: 4.0 (0x6) LMP Subversion: 0x220e
Manufacturer: Broadcom Corporation (15)
< HCI Command: Read BD ADDR (0x04|0x0009) plen 0
HCI Event: Command Complete (0x0e) plen 10
Read BD ADDR (0x04|0x0009) ncmd 1
status 0x00 bdaddr 5C:F3:70:60:EE:9F
< HCI Command: Set Event Mask (0x03|0x0001) plen 8
Mask: 0xfffffbff07f8bf3d
HCI Event: Command Complete (0x0e) plen 4
Set Event Mask (0x03|0x0001) ncmd 1
status 0x00
< HCI Command: LE Set Event Mask (0x08|0x0001) plen 8
mask 0x1f00000000000000 (Reserved)
HCI Event: Command Complete (0x0e) plen 4
LE Set Event Mask (0x08|0x0001) ncmd 1
status 0x00
< HCI Command: Read Local Version Information (0x04|0x0001) plen 0
HCI Event: Command Complete (0x0e) plen 12
Read Local Version Information (0x04|0x0001) ncmd 1
status 0x00
HCI Version: 4.0 (0x6) HCI Revision: 0x1000
LMP Version: 4.0 (0x6) LMP Subversion: 0x220e
Manufacturer: Broadcom Corporation (15)
< HCI Command: Read BD ADDR (0x04|0x0009) plen 0
HCI Event: Command Complete (0x0e) plen 10
Read BD ADDR (0x04|0x0009) ncmd 1
status 0x00 bdaddr 5C:F3:70:60:EE:9F
< HCI Command: LE Set Advertise Enable (0x08|0x000a) plen 1
HCI Event: Command Complete (0x0e) plen 4
LE Set Advertise Enable (0x08|0x000a) ncmd 1
status 0x00
< HCI Command: LE Set Advertising Parameters (0x08|0x0006) plen 15
min 100.000ms, max 100.000ms
type 0x00 (ADV_IND - Connectable undirected advertising) ownbdaddr 0x00 (Public)
directbdaddr 0x00 (Public) 00:00:00:00:00:00
channelmap 0x07 filterpolicy 0x00 (Allow scan from any, connection from any)
HCI Event: Command Complete (0x0e) plen 4
LE Set Advertising Parameters (0x08|0x0006) ncmd 1
status 0x00
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2
value 0x00 (scanning disabled)
filter duplicates 0x01 (enabled)
HCI Event: Command Complete (0x0e) plen 4
LE Set Scan Enable (0x08|0x000c) ncmd 1
status 0x0c
Error: Command Disallowed
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7
type 0x01 (active)
interval 10.000ms window 10.000ms
own address: 0x00 (Public) policy: All
HCI Event: Command Complete (0x0e) plen 4
LE Set Scan Parameters (0x08|0x000b) ncmd 1
status 0x00
< HCI Command: LE Set Advertise Enable (0x08|0x000a) plen 1
HCI Event: Command Complete (0x0e) plen 4
LE Set Advertise Enable (0x08|0x000a) ncmd 1
status 0x0c
Error: Command Disallowed
< HCI Command: LE Set Advertising Parameters (0x08|0x0006) plen 15
min 100.000ms, max 100.000ms
type 0x00 (ADV_IND - Connectable undirected advertising) ownbdaddr 0x00 (Public)
directbdaddr 0x00 (Public) 00:00:00:00:00:00
channelmap 0x07 filterpolicy 0x00 (Allow scan from any, connection from any)
HCI Event: Command Complete (0x0e) plen 4
LE Set Advertising Parameters (0x08|0x0006) ncmd 1
status 0x00
< HCI Command: LE Set Scan Response Data (0x08|0x0009) plen 32
HCI Event: Command Complete (0x0e) plen 4
LE Set Scan Response Data (0x08|0x0009) ncmd 1
status 0x00
< HCI Command: LE Set Advertising Data (0x08|0x0008) plen 32
HCI Event: Command Complete (0x0e) plen 4
LE Set Advertising Data (0x08|0x0008) ncmd 1
status 0x00
< HCI Command: LE Set Advertise Enable (0x08|0x000a) plen 1
HCI Event: Command Complete (0x0e) plen 4
LE Set Advertise Enable (0x08|0x000a) ncmd 1
status 0x00
< HCI Command: LE Set Scan Response Data (0x08|0x0009) plen 32
HCI Event: Command Complete (0x0e) plen 4
LE Set Scan Response Data (0x08|0x0009) ncmd 1
status 0x00
< HCI Command: LE Set Advertising Data (0x08|0x0008) plen 32
HCI Event: Command Complete (0x0e) plen 4
LE Set Advertising Data (0x08|0x0008) ncmd 1
status 0x00
HCI Event: LE Meta Event (0x3e) plen 19
LE Connection Complete
status 0x00 handle 64, role slave
bdaddr 60:5C:99:DC:C8:69 (Random)
< ACL data: handle 64 flags 0x00 dlen 7
ATT: MTU req (0x02)
client rx mtu 256
ACL data: handle 64 flags 0x02 dlen 27
ACL data: handle 64 flags 0x01 dlen 27
ACL data: handle 64 flags 0x01 dlen 9
L2CAP(d): cid 0x003a len 59 [psm 0]
ACL data: handle 64 flags 0x02 dlen 7
ATT: MTU req (0x02)
client rx mtu 158
< ACL data: handle 64 flags 0x00 dlen 7
ATT: MTU resp (0x03)
server rx mtu 672
< ACL data: handle 64 flags 0x00 dlen 7
ATT: MTU resp (0x03)
server rx mtu 158
ACL data: handle 64 flags 0x02 dlen 11
L2CAP(d): cid 0x003a len 7 [psm 0]
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
ACL data: handle 64 flags 0x02 dlen 7
ATT: MTU resp (0x03)
server rx mtu 158
ACL data: handle 64 flags 0x02 dlen 11
ATT: Read By Type req (0x08)
start 0x0010, end 0x0010
type-uuid 0x2803
< ACL data: handle 64 flags 0x00 dlen 11
ATT: Read By Group req (0x10)
start 0x0001, end 0xffff
type-uuid 0x2800
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Request not supported (6)
MTU resp (0x03) on handle 0x0000
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Attribute not found (10)
Read By Type req (0x08) on handle 0x0010
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Attribute not found (10)
Read By Type req (0x08) on handle 0x0010
ACL data: handle 64 flags 0x02 dlen 18
ATT: Read By Group resp (0x11)
attr handle 0x0001, end group handle 0x0005
value 0x00 0x18
attr handle 0x0006, end group handle 0x0009
value 0x01 0x18
< ACL data: handle 64 flags 0x00 dlen 11
ATT: Read By Group req (0x10)
start 0x000a, end 0xffff
type-uuid 0x2800
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Request not supported (6)
Read By Group resp (0x11) on handle 0x0000
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
ACL data: handle 64 flags 0x02 dlen 26
ATT: Read By Group resp (0x11)
attr handle 0x000a, end group handle 0x000e
value 0x66 0x43 0xae 0x10 0x79 0x48 0xf8 0xa5 0x91 0x45 0xb4 0xbb 0x78 0x1e 0x61 0xd0
< ACL data: handle 64 flags 0x00 dlen 11
ATT: Read By Group req (0x10)
start 0x000f, end 0xffff
type-uuid 0x2800
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Request not supported (6)
Read By Group resp (0x11) on handle 0x0000
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
ACL data: handle 64 flags 0x02 dlen 18
ATT: Read By Group resp (0x11)
attr handle 0x000f, end group handle 0x0012
value 0x0f 0x18
attr handle 0x0013, end group handle 0x0018
value 0x05 0x18
< ACL data: handle 64 flags 0x00 dlen 11
ATT: Read By Group req (0x10)
start 0x0019, end 0xffff
type-uuid 0x2800
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Request not supported (6)
Read By Group resp (0x11) on handle 0x0000
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
ACL data: handle 64 flags 0x02 dlen 27
ACL data: handle 64 flags 0x01 dlen 19
ATT: Read By Group resp (0x11)
attr handle 0x0019, end group handle 0x0022
value 0xd0 0x00 0x2d 0x12 0x1e 0x4b 0x0f 0xa4 0x99 0x4e 0xce 0xb5 0x31 0xf4 0x05 0x79
attr handle 0x0023, end group handle 0x002e
value 0xdc 0xf8 0x55 0xad 0x02 0xc5 0xf4 0x8e 0x3a 0x43 0x36 0x0f 0x2b 0x50 0xd3 0x89
< ACL data: handle 64 flags 0x00 dlen 11
ATT: Read By Group req (0x10)
start 0x002f, end 0xffff
type-uuid 0x2800
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Request not supported (6)
Read By Group resp (0x11) on handle 0x0000
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
ACL data: handle 64 flags 0x02 dlen 9
ATT: Error (0x01)
Error: Attribute not found (10)
Read By Group req (0x10) on handle 0x002f
< ACL data: handle 64 flags 0x00 dlen 11
ATT: Read By Type req (0x08)
start 0x0019, end 0x0022
type-uuid 0x2803
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Request not supported (6)
Error (0x01) on handle 0x0000
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
ACL data: handle 64 flags 0x02 dlen 27
ACL data: handle 64 flags 0x01 dlen 27
ACL data: handle 64 flags 0x01 dlen 15
ATT: Read By Type resp (0x09)
length: 21
handle 0x001a, value 0x88 0x1b 0x00 0xd9 0xd9 0xaa 0xfd 0xbd 0x9b 0x21 0x98 0xa8 0x49 0xe1 0x45 0xf3 0xd8 0xd1 0x69
handle 0x001d, value 0x10 0x1e 0x00 0xbd 0x1d 0xa2 0x99 0xe6 0x25 0x58 0x8c 0xd9 0x42 0x01 0x63 0x0d 0x12 0xbf 0x9f
handle 0x0020, value 0x10 0x21 0x00 0xfb 0x7b 0x7c 0xce 0x6a 0xb3 0x44 0xbe 0xb5 0x4b 0xd6 0x24 0xe9 0xc6 0xea 0x22
< ACL data: handle 64 flags 0x00 dlen 11
ATT: Read By Type req (0x08)
start 0x0022, end 0x0022
type-uuid 0x2803
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Request not supported (6)
Read By Type resp (0x09) on handle 0x0000
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
ACL data: handle 64 flags 0x02 dlen 9
ATT: Error (0x01)
Error: Attribute not found (10)
Read By Type req (0x08) on handle 0x0022
< ACL data: handle 64 flags 0x00 dlen 11
ATT: Read By Type req (0x08)
start 0x001d, end 0x001f
type-uuid 0x2902
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Request not supported (6)
Error (0x01) on handle 0x0000
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
ACL data: handle 64 flags 0x02 dlen 10
ATT: Read By Type resp (0x09)
length: 4
handle 0x001f, value 0x00 0x00
< ACL data: handle 64 flags 0x00 dlen 11
ATT: Read By Type req (0x08)
start 0x0020, end 0x0022
type-uuid 0x2902
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Request not supported (6)
Read By Type resp (0x09) on handle 0x0000
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
ACL data: handle 64 flags 0x02 dlen 10
ATT: Read By Type resp (0x09)
length: 4
handle 0x0022, value 0x00 0x00
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Write req (0x12)
handle 0x001f value  0x01 0x00
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Request not supported (6)
Read By Type resp (0x09) on handle 0x0000
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
ACL data: handle 64 flags 0x02 dlen 9
ATT: Error (0x01)
Error: Insufficient authentication (5)
Write req (0x12) on handle 0x001f
< ACL data: handle 64 flags 0x00 dlen 11
SMP: Pairing Request (0x01)
capability 0x03 oob 0x00 auth req 0x01
max key size 0x10 init key dist 0x00 resp key dist 0x01
Capability: NoInputNoOutput (OOB data not present)
Authentication: Bonding (No MITM Protection)
Initiator Key Distribution:
Responder Key Distribution:  LTK
< ACL data: handle 64 flags 0x00 dlen 9
ATT: Error (0x01)
Error: Request not supported (6)
Error (0x01) on handle 0x0000
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 2
ACL data: handle 64 flags 0x02 dlen 6
SMP: Pairing Failed (0x05)
reason 0x08
Reason Unspecified Reason
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 1
ACL data: handle 64 flags 0x02 dlen 11
ATT: Read By Type req (0x08)
start 0x0001, end 0x0008
type-uuid 0x2a00
< ACL data: handle 64 flags 0x00 dlen 14
ATT: Read By Type resp (0x09)
length: 8
handle 0x0003, value 0x75 0x62 0x75 0x6e 0x74 0x75
HCI Event: Number of Completed Packets (0x13) plen 5
handle 64 packets 1

@robotastic please create a new issue to track this, the discussion is quite unrelated to the original issue topic now. Also, have you been able to get node-ancs + noble to pair without your changes?

Hey @sandeepmistry , related to the OP subject.
I've been able to connect and read data from a non-PIN protected device.
Now I am trying to connect to a PIN-protected device. I am able to "connect", discover the services and characteristics, but i need to enter a PIN in order to pair both devices and send information between them.
Do you have any other information in order to connect to a device that needs a PIN?

@pfelgaer are you using Linux?
I haven't tried it myself but you should be able to modify https://github.com/sandeepmistry/noble/blob/master/lib/hci-socket/smp.js with info from https://community.freescale.com/thread/332191
Please let me know how it goes.

@pfelgaer  Any progress on this matter ?
@sandeepmistry Any plans on releasing noble with "passkey entry" pairing method in SMP ?

I know it's an old thread but none of you seems to have resolved this use case.
@sandeepmistry Are PIN Code protected Device now supported by Noble ? Have someone successfully read and write informations with PIN Code protectd device with Noble ?

@Khalyss there is no change in the status of this feature.

@sandeepmistry Thx for your reply. So currently, with the last noble version, you confirme that it's not possible to communicate with PIN code protected devices ?
Had you personnaly tried this ?

Is there an update on this? Any way to enter a PIN?

Guys, any update on pin API ???!

I haven't tried it myself but you should be able to modify https://github.com/sandeepmistry/noble/blob/master/lib/hci-socket/smp.js with info from https://community.freescale.com/thread/332191

@sandeepmistry    any idea what was in that freescale link?   it's no longer available so can't use it as a reference for updating smp.js.        Would love to get noble connected to a pin enabled device.     thanks

any update on this issue?

@delphir-com if you're using linux, I'd strongly suggest switching to BlueZ. Just use DBUS

If you're happy with changing the code locally, try replacing lib/hci-socket/smp.js with the code below. Please update if you run into any issues. (For that matter, it would be great if someone could confirm that it works! I've tested it on my own machine successfully, but it would be good to have several independent tests).
/*jshint esversion: 6 */
var debug = require('debug')('smp');

var events = require('events');
var util = require('util');
var readline = require('readline'); // For getting PIN/passkey

var crypto = require('./crypto');

var SMP_CID = 0x0006;

var SMP_PAIRING_REQUEST = 0x01;
var SMP_PAIRING_RESPONSE = 0x02;
var SMP_PAIRING_CONFIRM = 0x03;
var SMP_PAIRING_RANDOM = 0x04;
var SMP_PAIRING_FAILED = 0x05;
var SMP_ENCRYPT_INFO = 0x06;
var SMP_MASTER_IDENT = 0x07;

// OOB
var SMP_OOB_NO = 0x00;
var SMP_OOB_YES = 0x01;

// IO Capabilities.
var SMP_IO_DISPLAYONLY = 0x00;
var SMP_IO_DISPLAYYESNO = 0x01;
var SMP_IO_KEYBOARDONLY = 0x02;
var SMP_IO_NOINPUTNOOUTPUT = 0x03;
var SMP_IO_KEYBOARDDISPLAY = 0x04;

// Authentication types.
var SMP_AUTH_LEGACY = 0x00;
var SMP_AUTH_LESC = 0x01;

// Association Models.
var SMP_MODEL_JUSTWORKS = 0x00;
var SMP_MODEL_PASSKEY = 0x01;
var SMP_MODEL_NUMERIC = 0x02;
var SMP_MODEL_OOB = 0x03;

var Smp = function(aclStream, localAddressType, localAddress, remoteAddressType, remoteAddress) {
  this._aclStream = aclStream;

  this._iat = new Buffer([(localAddressType === 'random') ? 0x01 : 0x00]);
  this._ia = new Buffer(localAddress.split(':').reverse().join(''), 'hex');
  this._rat = new Buffer([(remoteAddressType === 'random') ? 0x01 : 0x00]);
  this._ra = new Buffer(remoteAddress.split(':').reverse().join(''), 'hex');

  this.onAclStreamDataBinded = this.onAclStreamData.bind(this);
  this.onAclStreamEndBinded = this.onAclStreamEnd.bind(this);

  this._aclStream.on('data', this.onAclStreamDataBinded);
  this._aclStream.on('end', this.onAclStreamEndBinded);
};

util.inherits(Smp, events.EventEmitter);

Smp.prototype.sendPairingRequest = function() {
  // Pairing request params
  this._preqIo= null;      // IO capabilities
  this._preqLesc = null;   // LESC capable?
  this._preqMitm = null;   // MITM protection required?
  // Pairing response params
  this._presIo= null;      // IO capabilities
  this._presLesc = null;   // LESC capable?
  this._presMitm = null;   // MITM protection required?
  // Authentication type and association model.
  this._authType = null;
  this._assocModel = null;
  // Passkey
  this._inputPasskey = null;

  this._preq = new Buffer([
    SMP_PAIRING_REQUEST,
    0x02, // IO capability: KeyboardOnly
    0x00, // OOB data: Authentication data not present
    0x01, // Authentication requirement: Bonding - No MITM
    0x10, // Max encryption key size
    0x00, // Initiator key distribution: <none>
    0x01  // Responder key distribution: EncKey
  ]);

  this.write(this._preq);
};

Smp.prototype.onAclStreamData = function(cid, data) {
  if (cid !== SMP_CID) {
    return;
  }

  var code = data.readUInt8(0);

  if (SMP_PAIRING_RESPONSE === code) {
    this.handlePairingResponse(data);
  } else if (SMP_PAIRING_CONFIRM === code) {
    this.handlePairingConfirm(data);
  } else if (SMP_PAIRING_RANDOM === code) {
    this.handlePairingRandom(data);
  } else if (SMP_PAIRING_FAILED === code) {
    this.handlePairingFailed(data);
  } else if (SMP_ENCRYPT_INFO === code) {
    this.handleEncryptInfo(data);
  } else if (SMP_MASTER_IDENT === code) {
    this.handleMasterIdent(data);
  }
};

Smp.prototype.onAclStreamEnd = function() {
  this._aclStream.removeListener('data', this.onAclStreamDataBinded);
  this._aclStream.removeListener('end', this.onAclStreamEndBinded);

  this.emit('end');
};

Smp.prototype.handlePairingResponse = function(data) {
  this._pres = data;

  // Determine authentication type and assocation model.
  var authMethod = this.identifyAuthenticationMethod();
  this._authType = authMethod[0];
  this._assocModel = authMethod[1];

  if (this._authType === SMP_AUTH_LEGACY) {
    if (this._assocModel === SMP_MODEL_JUSTWORKS) {
      this.handleLegacyJustWorksPairing(data);
    } else if (this._assocModel === SMP_MODEL_PASSKEY) {
      this.handleLegacyPasskeyPairing(data);
    } else if (this._assocModel === SMP_MODEL_OOB) {
      console.error('OOB pairing not currently supported.');
    } else {
      console.error('Unexpected value for association model.');
    }
  } else if (this._authType === SMP_AUTH_LESC) {
    console.error('Support for LESC not available at present.');
  } else {
    console.error('Unexpected value for authentication type (must be either LE Legacy or LESC)');
  }
};

/* BLUETOOTH SPECIFICATION Version 5.0 | Vol 3, Part H, Section <IP_ADDRESS> */
Smp.prototype.identifyAuthenticationMethod = function () {
  if ((this._preq === null) || (this._pres === null)) {
    console.error('Either pairing request or pairing response is null. Cannot proceed...');
  }

  // Get field values from Pairing Request.
  this._preqIo = this._preq.readUInt8(1);
  this._preqOob = this._preq.readUInt8(2);
  var preqAuthReqHex = this._preq.readUInt8(3);
  this._preqMitm = (preqAuthReqHex >> 2) & 1;
  this._preqLesc = (preqAuthReqHex >> 3) & 1;

  // Get field values from Pairing Response.
  this._presIo = this._pres.readUInt8(1);
  this._presOob = this._pres.readUInt8(2);
  var presAuthReq = this._pres.readUInt8(3);
  this._presMitm = (presAuthReq >> 2) & 1;
  this._presLesc = (presAuthReq >> 3) & 1;

  var authType = null;
  if ((this._preqLesc === 1) && (this._presLesc === 1)) {
    authType = SMP_AUTH_LESC;
  } else {
    authType = SMP_AUTH_LEGACY;
  }

  var assocModel = null;
  if (authType === SMP_AUTH_LEGACY) {
    if ((this._preqOob === SMP_OOB_YES) && (this._presOob === SMP_OOB_YES)) {
      // If both devices have OOB set, then use OOB.
      assocModel = SMP_MODEL_OOB;
    } else if ((this._preqMitm === 0) && (this._presMitm === 0)) {
      // If neither device requires MITM protection, then use Just Works.
      assocModel = SMP_MODEL_JUSTWORKS;
    } else {
      // If either device requires MITM protection, then consider IO capabilities.
      assocModel = this.parseIoCapabilities(this._preqIo, this._presIo, authType);
    }
  } else {
    assocModel = null;
  }

  return [authType, assocModel];
};

Smp.prototype.parseIoCapabilities = function (reqIo, resIo, authType) {
  var ioAssocModel = null;
  if (authType === SMP_AUTH_LEGACY) {
    if ((reqIo === SMP_IO_NOINPUTNOOUTPUT) || (resIo === SMP_IO_NOINPUTNOOUTPUT)) {
      // Both devices are No Input No Output => Just Works.
      ioAssocModel = SMP_MODEL_JUSTWORKS;
    } else if ((reqIo === SMP_IO_DISPLAYONLY) && (resIO === SMP_IO_DISPLAYONLY)) {
      // Both devices are Display Only => Just Works.
      ioAssocModel = SMP_MODEL_JUSTWORKS;
    } else if ((reqIo === SMP_IO_DISPLAYYESNO) || (resIo === SMP_IO_DISPLAYYESNO)) {
      // At least one device is Display YesNo => Just Works.
      ioAssocModel = SMP_MODEL_JUSTWORKS;
    } else {
      // IO capabilities for LE Legacy result in Passkey Entry.
      ioAssocModel = SMP_MODEL_PASSKEY;
    }
  } else {
    // LESC not supported right now.
  }
  return ioAssocModel;
};

Smp.prototype.handleLegacyJustWorksPairing = function (data) {
  this._tk = new Buffer('00000000000000000000000000000000', 'hex');
  this._r = crypto.r();

  this.write(Buffer.concat([
    new Buffer([SMP_PAIRING_CONFIRM]),
    crypto.c1(this._tk, this._r, this._pres, this._preq, this._iat, this._ia, this._rat, this._ra)
  ]));
};

Smp.prototype.handleLegacyPasskeyPairing = function (data) {
  // Get PIN/passkey from user via terminal.
  const inputPasskeyTerminal = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    terminal: false
  });

  inputPasskeyTerminal.question('\nType in the device PIN/passkey (if one has not been provided by the device manufacturer, try 000000).\nPIN: ', (answer) => {
    this._inputPasskey = answer;
    // Convert passkey to hex.
    var passkeyBuffer = Buffer.alloc(16,0);
    passkeyBuffer.writeUInt32LE(Number(this._inputPasskey), 0);

    this._tk = Buffer.from(passkeyBuffer);
    this._r = crypto.r();

    this.write(Buffer.concat([
      new Buffer([SMP_PAIRING_CONFIRM]),
      crypto.c1(this._tk, this._r, this._pres, this._preq, this._iat, this._ia, this._rat, this._ra)
    ]));
  });
};

Smp.prototype.handlePairingConfirm = function(data) {
  this._pcnf = data;

  this.write(Buffer.concat([
    new Buffer([SMP_PAIRING_RANDOM]),
    this._r
  ]));
};

Smp.prototype.handlePairingRandom = function(data) {
  var r = data.slice(1);

  var pcnf = Buffer.concat([
    new Buffer([SMP_PAIRING_CONFIRM]),
    crypto.c1(this._tk, r, this._pres, this._preq, this._iat, this._ia, this._rat, this._ra)
  ]);

  if (this._pcnf.toString('hex') === pcnf.toString('hex')) {
    var stk = crypto.s1(this._tk, r, this._r);

    this.emit('stk', stk);
  } else {
    this.write(new Buffer([
      SMP_PAIRING_RANDOM,
      SMP_PAIRING_CONFIRM
    ]));

    this.emit('fail');
  }
};

Smp.prototype.handlePairingFailed = function(data) {
  this.emit('fail');
};

Smp.prototype.handleEncryptInfo = function(data) {
  var ltk = data.slice(1);

  this.emit('ltk', ltk);
};

Smp.prototype.handleMasterIdent = function(data) {
  var ediv = data.slice(1, 3);
  var rand = data.slice(3);

  this.emit('masterIdent', ediv, rand);
};

Smp.prototype.write = function(data) {
  this._aclStream.write(SMP_CID, data);
};

module.exports = Smp;

Thank you @projectbtle, it worked on Raspberry PI 4 and Raspberry PI ZeroW with custom BLE peripheral based on TI cc2541.
Note: on both RPis syslog contained the following messages (which did not prevent normal work); I do not know if it was related to the passKey or to the peripheral:
Mar 13 17:58:16 rp-doorlock kernel: [ 3720.545507] Bluetooth: hci0: unexpected SMP command 0x02 from 90:59:af:13:86:69
Mar 13 17:58:16 rp-doorlock kernel: [ 3720.575602] Bluetooth: hci0: unexpected SMP command 0x03 from 90:59:af:13:86:69
Mar 13 17:58:16 rp-doorlock kernel: [ 3720.605634] Bluetooth: hci0: unexpected SMP command 0x04 from 90:59:af:13:86:69
Mar 13 17:58:17 rp-doorlock kernel: [ 3720.710853] Bluetooth: hci0: unexpected SMP command 0x06 from 90:59:af:13:86:69
Mar 13 17:58:17 rp-doorlock kernel: [ 3720.726060] Bluetooth: hci0: unexpected SMP command 0x07 from 90:59:af:13:86:69

any update on this issue?

Relate-to: https://github.com/abandonware/noble/issues/2


py3 branch not working on linux

Hi,
I am very new to github, so I am not sure this is the correct way to report issues.
I am running Python 3.5 on a 64bit Arch Linux system. I installed ftd2xx via pip.
The correct sys.platform response for python 3 on Linux is 'linux' and not 'linux2' as written in file ftd2xx.py, line 12.
sys.platform.startswith('linux') could be a fix for py2 and py3.

I am sorry, Krishna (ctrl-shift-esc) has offered to take over maintenance. His repo is at https://github.com/ctrl-shift-esc/ftd2xx. If it's not too much trouble, would you mind opening this issue on his repo?

Closed for no further communication

I cannot open an issue in Krishna s repo :/


Typo in 4.1.0 docs

https://getbootstrap.com/docs/4.1/utilities/text/#monospace
I believe that class name of the  is ".text-monospace" instead of ".font-monospace" in the example.

It's already fixed in #26239


Compatibility with macOS

I use the plugin on Windows and it works fine, but when I open my vault on macOS, Obsidian is hidden without the possibility to make the window appear, since there is no menu bar icon.
Could you add compatibility with macOS, or if not possible, at least deactivate the plugin automatically when a vault is opened on macOS? Thanks!

@phlind have you tried using the hotkey to make the window appear on macOS? There should be a menu bar icon, though, that's quite odd that it's not there. I've used the same code to create a tray icon that has appeared for macOS users before. Is there any possibility you would be able to attempt to find a solution to the missing menu bar icon? I don't have a mac myself to do any testing on, unfortunately.
Changes needed to the auto-hiding behaviour of the app are tracked in #4 and #6, I'll update that soon.

So, I tried it again, and it worked partly, but not reliably. The menu bar icon did actually show, but not always. I'm not sure why, but it showed for me the first time I opened Obsidian. After quitting Obsidian totally and opening it again, it did not show anymore. (It is a little bit too big for the menu bar as well):

I could use the shortcut to bring back Obsidian, but that stopped working after closing the Obsidian window it with the red button on top. Maybe that has to be avoided on macOS?

@phlind do the latest changes to the default behaviour of windows on app launch make the app work more as you would expect on macOS?

@phlind I've made a few changes that I think should address all of this, let me know if you have any more problems:

16x16 icon instead of 32x32 icon so it should be the right size for the menu bar.
intercepting window close events at electron level instead of by overriding the button used by Obsidian on windows for non-native titlebars.
making hide on launch a separately configurable option that is disabled by default.


[Experimental] Add unfortunate hacks to get ember-sortable working :(

Ember-sortable is sadly not smart enough to deal with the idea of sorting elements that are not immediately adjacent. The change I had to make to get things working is to mixin sortable-item to columns/base. Not ideal, and a good example of why mixins are usually not the answer :/
Further, because columns/base has its own notion of width—which could be a string—I’ve had to clumsily subclass sortable-group to anticipate and parse such values.
All in all, ember-sortable has not proved a particularly elegants solution for this case. Honestly, I’m not surprised… it was written to deal with a very simple case and inevitably users of the addon have come up with much more ambitious solutions.
There is a rewrite underway on the jj-abrams branch of ember-sortable and I’ll definitely take this use case into consideration when designing the new APIs.
For now, I think you may be better served by another solution.

@jgwhite thanks for taking the time to put this together. I was hoping the solution wouldn't be as messy / hacky. I know @taras has some idea about an alternate route we can take so I will wait for him to proceed. In the mean time, Ill keep my eye out for the next major release of ember-sortable 😺


Allow access to the mongodb instance created

I really love this project so far, but I'm trying to use the node module connect-mongodb for session management, and it requires you to pass in a mongodb object when you create an instance of the session store.  I can see in your source that you are creating a mongodb instance in exports.connect (with the line, "new mongo.Db(...)"), but it doesn't appear that this value is available externally.
Would it be possible to expose this object so that we could access the mongodb instance directly?  Is it already possible, and I'm just not seeing how?  Thanks!

Hi
I exposes the native mongo object through a property called client now in v0.3.2.
var db = require('mongojs').connect(...);

var nativeMongoClient = db.client;

Let me know if that solves your problem


Missing source code for version 1.3.2

First of all thank you very much for the work on this repo. It has helped me greatly.
Over a year ago I had to create a fork of this library to add some additional functionality which I required and was missing from this version.
We received a security warning from Recurly informing us that we need to update our versions of the recurly-client-net api. For my situation I need to go from version 1.3.1 to 1.3.2. So I have come here looking for the source code for this release so that I can update my fork to the patched version, but can't find release/tag for 1.3.2 anywhere.
I know that we are pretty out of date with the recurly-client-net version, but currently don't have the resources to spend time bringing our application up to the latest version, but I do need to patch the forked version I currently have.
Could you please give me some information on how I would go about doing this.
Regards
Russell

Hi Russell,
You can find the code at https://www.nuget.org/packages/recurly-api-client/ Let us know if you have any trouble!

@sk8main The binaries are available on nuget, but not the source. We will be releasing the source to this repo soon but I'd suggest you contact support and they can get you a copy of the source you need.

@sk8main if you have not seen it yet, the release was pushed here:
https://github.com/recurly/recurly-client-net/releases/tag/1.3.2
The 1.3.X branch is here: https://github.com/recurly/recurly-client-net/tree/release_1_3


Improve build tools

Improve build tools in code documentation and comments
Rewrite build tools in TypeScript

@ailisp @volovyks I have added JSDoc comments to most of the exposed API. Some utility functions like sha256 I have not documented yet, but most of the other APIs are covered including:

High and low level promise API
Storage API
Collections
Decorators
Utils
Custom types

Some minor performance optimizations have also been added within log function.


Don't run in 64 bit

The example test1.c compiles and runs on 32 bits, but when using MingW TDM64 bit 5.1.0 it compiles but does not execute, error 0xc000007b appears.
https://drive.google.com/file/d/0B1VjaZ66WXekYm9XOXZlMGFjNkE/view?usp=sharing
Thanks for attention.

Hi,
It was tested with MinGW-w64 (not TDM though).
Can check test with gdb where exactly it crashes?
Regards
 Brecht

On 9/11/2016 6:33, joose2015 wrote:

The example test1.c compiles and runs on 32 bits, but when using MingW
TDM64 bit 5.1.0 it compiles but does not execute, error 0xc000007b
appears.
https://drive.google.com/file/d/0B1VjaZ66WXekYm9XOXZlMGFjNkE/view?usp=sharing
Thanks for attention.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/brechtsanders/xlsxio/issues/11, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AQ0-eVo3UV-PATuzP839iOzO-KKnVLP7ks5q8VtDgaJpZM4KtMlt.

Hello,
When running from the files you sent me it's saying zlib1.dll is missing.
Can you check if you have another zlib1.dll in your path that is not the
one TDM64 should be using?
I once had this issue because I had the Oracle client installed and this
was in my path. It took me quite a while to figure out it had it's own
zlib1.dll which cause many of my MinGW executables to crash...
Regards
 Brecht

On 9/11/2016 6:33, joose2015 wrote:

The example test1.c compiles and runs on 32 bits, but when using MingW
TDM64 bit 5.1.0 it compiles but does not execute, error 0xc000007b
appears.
https://drive.google.com/file/d/0B1VjaZ66WXekYm9XOXZlMGFjNkE/view?usp=sharing
Thanks for attention.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/brechtsanders/xlsxio/issues/11, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AQ0-eVo3UV-PATuzP839iOzO-KKnVLP7ks5q8VtDgaJpZM4KtMlt.

Well there was an error on my part, the 4 dll (libzip, zlib, xlsxio, expat) should be accessible, here is the configuration of codeblocks i use to work on my pc.
https://drive.google.com/file/d/0B1VjaZ66WXekQWdHMlgwWFRNMFU/view?usp=sharing
Thanks for attention.

Ok, glad I could help.
Tip: to eliminate these kind of issues you can always try a static build.
P.S.: I'm also using CodeBlocks a lot. Just a shame there is no 64-bit
Windows version yet.
On 9/11/2016 8:32, joose2015 wrote:

Well there was an error on my part, the 4 dll (libzip, zlib, xlsxio,
expat) should be accessible, here is the configuration of codeblocks i
use to work on my pc.
https://drive.google.com/file/d/0B1VjaZ66WXekQWdHMlgwWFRNMFU/view?usp=sharing
Thanks for attention.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/brechtsanders/xlsxio/issues/11#issuecomment-259350433,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AQ0-eZEIC4C-_pBlttQZ5M4n-CM1Zw6pks5q8XcLgaJpZM4KtMlt.


Fix concurrent sync dedup

Cherry pick of https://github.com/Alluxio/alluxio/pull/16717
What changes are proposed in this pull request?
The concurrent sync feature will throw exception if the locking scheme uses the constructor that takes a shouldSync boolean. This PR fixes it.
Does this PR introduce any user facing changes?
N/A
pr-link: Alluxio/alluxio#16717
change-id: cid-d1ab7d5aa81905bcb2d394b5e922a33cf747908b

alluxio-bot, merge this please


Docs: Team Permission: Add a note about the app rights

@gsmet much better :)

@radtriste I'm curious, what are you working on? :)

@radtriste I'm curious, what are you working on? :)

A bot for Kogito (and other KIE projects): https://github.com/kiegroup/kiebot


allow_encrypted_uploads_only overrides policy

If I create a new bucket and pass in a policy and setup allow_encrypted_uploads_only the policy is ignored and bucket policy only contains allow_encrypted_uploads_only  related statements.

One way to solve it: https://github.com/terraform-providers/terraform-provider-aws/pull/2890

Thanks @darend
I took a quick look at data source aws_iam_policy_document
It has 2 properties source_json and override_json
I am trying to figure out how to implement this.
If policy parameter is specified it will be used to set the soure_json.
Now if a user sets the property allow_encrypted_uploads_only I will set override_json.
If both source_json and override_json are set are their statements merged?
without reading the code or executing this I don't know if I have to set source_json, override_json and the final policy will combine the statements.
I will contribute the final solution back into the repo.

Off hand Im not sure how to do it in this repo because aws_iam_policy_document.bucket_policy is optional. If it was always enabled, then you would do:
data "aws_iam_policy_document" "bucket_policy" {
  count = "${var.enabled == "true" ? 1 : 0}"

  source_json = "${var.policy}"

  statement {
    sid       = "DenyIncorrectEncryptionHeader"
    effect    = "Deny"

....

Off hand Im not sure how to do it in this repo because aws_iam_policy_document.bucket_policy is optional. If it was always enabled, then you would do:
data "aws_iam_policy_document" "bucket_policy" {
  count = "${var.enabled == "true" ? 1 : 0}"

  source_json = "${var.policy}"

  statement {
    sid       = "DenyIncorrectEncryptionHeader"
    effect    = "Deny"

....

@darend Thanks for providing the clues for solving this issue. I've submitted a pull request (#49) which uses dynamic blocks to build out the aws_iam_policy_document.bucket_policy resource. The resource merges in the user policy via the source_json argument (as you mention above). I had to remove the s3_bucket policy argument to avoid conflicting updates to the bucket policy. The merged policy now provides both the user defined policy and the additional ssl/encryption policies.


Add my first file

you have: created a new branch, created a file, and made a commit!

After merging


Launch Berry?

Raspberry how lunges ?

I'm guessing this was a translation. Can you ask the question again?
I have found that the API does not need Raspberries to hit the Pokemon. It does a perfect job on its own.

ah ok, thanks!
sorry, my english is not very good.


Allow LUCI configs to depend on ios_signing on prod outside devicelab_machines

Flutter has build tests that require iOS provisioning profiles (bundling apps for distribution, then validating that the bundle was built correctly) that do not required attached devices.  Currently, the ios_signing dependency is only available on devicelab_machines.  Make that dependency available to non-devicelab_machines so these tests can run in prod and don't take up scarce devicelab resources.
See https://github.com/flutter/infra/pull/288#discussion_r539835815

This may not be possible as we can not provision certificates to the chromium provided machines.
Going forward we will provide a ios_signing capability to the bot that support signing and have the correct cerficates.


[CPDEV-93826] Inventory versioning support

This PR depends on and fully includes #521
Description

Need to introduce apiVersion properties for the cluster.yaml and other procedure inventory files.

Solution

Kubemarine supports only one version for each inventory (cluster.yaml, procedures).
apiVersion for cluster.yaml should be equal to the Kubemarine major version.
apiVersion for other procedure inventory files is independent on Kubemarine version.
All the properties are required.
Backup procedure no longer requires the procedure inventory file.

Developer Contract
If there are any breaking changes in any inventory file (change format, stop support of some properties / values), it is necessary:

Increment apiVersion in the corresponding schema.
Write patch if it is relevant that increments the apiVersion, patches the inventory sections, and performs other validations.
Refresh documentation, examples, fix unit, integration tests.
During release of new version, it is necessary to increment major version.

How to apply
Run kubemarine migrate_kubemarine --force-apply api_version
Test Cases
TestCase 1
Pass inventory with incorrect apiVersion.
Steps:

Run kubemarine install passing the cluster.yaml with either absent or incorrect apiVersion.

ER: pretty message about incorrect apiVersion is printed.
TestCase 2
Pass procedure inventory with incorrect apiVersion.
Steps:

Run any procedure supporting the procedure.yaml, passing the procedure.yaml with either absent or incorrect apiVersion.

ER: pretty message about incorrect apiVersion is printed.
TestCase 3
Skip procedure inventory.
Steps:

Run any procedure supporting the optional procedure.yaml, omitting the procedure.yaml.

ER: Procedure is run.
TestCase 4
Migration of old inventory.
Steps:

Install the cluster using old Kubemarine, and run kubemarine migrate_kubemarine --force-apply api_version.

ER: apiVersion is inserted into the inventory.
Checklist

[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] Integration CI passed
[x] Unit tests. If Yes list of new/changed tests with brief description
[x] There is no merge conflicts

Unit tests
test_inventory.py - added tests to cover apiVersion validation.
Fixed a lot of tests to support apiVersion.

Decided to reject this PR. Some minor fixes and refactoring to simplify possible future support of inventory versioning will be done in #526


List of to do for converting over to NF

Description of feature
Below is a list of things which need to get completed. This is not an exhaustive list but based on what I can anticipate for now.

[x]  Need to get Python and Mash to be included when running the pipeline. Mash Dist is included in the nf-core modules but it isn't recognized. Currently must module load python and mash on cluster
[x]  When I gunzip files, filenames are converted to generic (read 1 and read 2) and does not maintain unique read id's. These should be the unique file name so that you know which results match to with isolate
[x]  Need to append Results and Run.log together and provide one file for each in the results output directory
[x] Make sure email and template work
[x]  Remove any extra bits of code that is unnecessary from the template
[x] Make test-data available for usage

Below is a list of things which need to get completed. This is not an exhaustive list but based on what I can anticipate for now.

[ ] Remove any extra bits of code that is unnecessary from the template
[ ] Add four more Legionella subset data to test dataset
[ ] Add option from NCBI datasets (--assembly-level) to bash script and nextflow parameters


Hygieia Jenkins Plugin configuration failes

I have built the Hygieia Jenkins Plugin and when trying to configure in Jenkins>configure system it is getting failed .

@bseelam-hub Port looks wrong. Default for api is 8080, unless you changed it to 3000

Hi satish
Thanks for replying .
i am talking about Hygieia UI Port i.e., 3000
Not the api port 8080
Thanks
Thanks and Regards
Brahma
On Thu, Jul 20, 2017 at 12:11 AM, satishc1<EMAIL_ADDRESS>wrote:

@bseelam-hub https://github.com/bseelam-hub Port looks wrong. Default
for api is 8080, unless you changed it to 3000
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/capitalone/Hygieia/issues/1544#issuecomment-316479070,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AZLfNUqIhakfXkuGUbLEuSLTT5gpIr6xks5sPk3DgaJpZM4Ocw52
.

@bseelam-hub The jenkins plugin talks to the api .. and not the ui.  You have misconfigured the jenkins plugin to talk to the UI port. Change it to 8080 (or whatever port your api is running on)


🐞 - PromptDialog: buttons don't look good on mobile devices.

Playground Link

Description
When I open PromptDialog with long buttons text, it looks like that

Angular version
11
Taiga UI version
2
Which browsers have you used?

[X] Chrome
[ ] Firefox
[ ] Safari
[ ] Edge

Which operating systems have you used?

[X] macOS
[ ] Windows
[ ] Linux
[ ] iOS
[ ] Android

fixed in proprietary v2.x


window.getComputedStyle is not a function inside setInteval under heavy load

Describe the bug
We stumbled upon test flakiness caused by third party library.
I managed to make a minimum repro without third party but using same code pattern.
Sample Vue component that illustrate issue
<template>

Hello

</template>

Sample test file
describe('suite name ' + i,  () => {
    it('hello', () => {
      const wrapper = mount(Hello});
      expect(wrapper.text()).toBe('Hello');
    });
});

Executing this test along will not cause any errors.
But when there is a 10-100 files are executing in parallel, then sometime this error is produced:
(window is not defined inside the body of setInterval function)
node:internal/event_target:912
  process.nextTick(() => { throw err; });
                           ^
ReferenceError [Error]: window is not defined
    at Timeout._onTimeout (C:/src/exp/vitest-dev-vitest-mkcbtg/Hello.vue:13:19)
    at listOnTimeout (node:internal/timers:559:17)
    at processTimers (node:internal/timers:502:7)
Emitted 'error' event on Tinypool instance at:
    at EventEmitterReferencingAsyncResource.runInAsyncScope (node:async_hooks:202:9)
    at Tinypool.emit (file:///C:/src/exp/vitest-dev-vitest-mkcbtg/node_modules/tinypool/dist/esm/index.js:59:31)
    at Worker.<anonymous> (file:///C:/src/exp/vitest-dev-vitest-mkcbtg/node_modules/tinypool/dist/esm/index.js:543:30)
    at Worker.emit (node:events:527:28)
    at Worker.[kOnErrorMessage] (node:internal/worker:289:10)
    at Worker.[kOnMessage] (node:internal/worker:300:37)
    at MessagePort.<anonymous> (node:internal/worker:201:57)
    at MessagePort.[nodejs.internal.kHybridDispatch] (node:internal/event_target:643:20)
    at MessagePort.exports.emitMessage (node:internal/per_context/messageport:23:28)

Reproduction
For some reason StackBlitz is running fine - without errors. But on local Windows machine this fails almost every time. On our CI those tests are failing under Ubuntu system.
https://github.com/alfeg/vitest-dev-vitest-mkcbtg
May require multiple reruns to hit an error.
System Info
System:
    OS: Windows 10 10.0.22000
    CPU: (16) x64 AMD Ryzen 7 5800H with Radeon Graphics
    Memory: 2.85 GB / 15.41 GB
  Binaries:
    Node: 16.15.0 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.18 - ~\AppData\Roaming\npm\yarn.CMD
    npm: 8.10.0 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: Spartan (44.22000.120.0), Chromium (101.0.1210.53)
    Internet Explorer: 11.0.22000.120
  npmPackages:
    @vitejs/plugin-vue: ^2.3.3 => 2.3.3
    vite: ^2.9.9 => 2.9.9
    vitest: latest => 0.13.1

Used Package Manager
npm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

This is not an error on Vitest side. You need to clear side effects yourself. Vitest cannot do this for you.

I should've elaborated before closing issue:
Your code is running outside of test, hence why window is undefined (jsdom is destoyed after tests are run). Destoying might code before your setTimeout function run, or sometimes after. Whenever Node decides to run it.

Also running concurrent on anything dom-related is highly discouraged, because your tests compete of what comes first.

@sheremet-va
Thanks for reponse.
I've added concurrent only to make more flaky.
Issue here is that I cannot control 3rd party library https://github.com/DevExpress/DevExtreme/blob/6750b4ceb9f4c7fdab1143d5cc7495e9c12130b5/js/ui/themes.js#L91
setInterval is executed during import of the page
There is no way to prevent this setInterval execution in current Vitest implementation.


Fix issue with sample test case

Using the mock builder to validate the existence of the class doesn't work. In the current setting, the following code succeeds just as well:
<?php
$this->getMockBuilder('RandomClassThatDoesNotExist')->getMock();

This changes will ensure that the bootstrap actually loads the classes properly by counting the number of classes that match the specification and comparing against the number of files found with the Finder component.

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/NEXT-10792
Please use this issue to track the state of your pull request.

Is there anything missing in this Pull Request? Anything I can improve?

Thanks!


[change] Move i18n from Security to locale files

Description
Moving al language blocks from the Security page to there language files
The <!-- eslint-disable-next-line vue/no-v-html --> are there to suppress the warning from eslint.
https://eslint.vuejs.org/rules/no-v-html.html
https://kazupon.github.io/vue-i18n/guide/formatting.html#html-formatting
Also gathering feedback if this is the way to do it. Or maybe someone else has a genius idea!
The reason that i did not put the full English string in the language files is the lenght.
If this is not what we want, i'll change it any second :)
Type of change
Please delete any options that are not relevant.

User interface (UI)
New feature (non-breaking change which adds functionality)
Translation update

Checklist

[x] My code follows the style guidelines of this project
[x] I ran ESLint and other linters for modified files
[x] I have performed a self-review of my own code and tested it
[ ] I have commented my code, particularly in hard-to-understand areas
(including JSDoc for methods)
[x] My changes generate no new warnings
[ ] My code needed automated testing. I have added them (this is optional task)

Screenshots (if any)

Thanks! That was my misuse of vue-i18n.
It is allowed to use v-html in this case.


Recursive requests retrying

Requests retrier sometimes creates infinite recursion calls on failed requests. It could be caused by bad thread synchronisation in retrier. Happens randomly, mostly when several requests failed at the same time.

Hey @jakub-tucek, I didn't really found the cause, but I fixed a small issue in requests retrier. May you look at fix/request-retrier branch and test it out? I did not experienced this issue before so not that easy to debug.


Create Gallery From Flickr Maps

I would suggest to not auto-include maps from Flickr. We are not active enough in curating the group.

Ok I will comment it out (and for the screenshots from flickr)

I will keep the content I imported with it...


METRON-1626: Fix empty result returned when searching for a single alert contained in a metaalert

Contributor Comments
When a user tries to search for a single alert contained within a metaalert, an empty result set is returned from the API. Upon further inspection, it looks like this is because the query string is not updated to use metron_alert in place of alert.
To reproduce, create a metaalert in the UI. Then, search for one of the nested alerts by id in the search bar. Instead of seeing the metaalert and its nested alerts returned, an empty result is displayed (see screenshots below).

Pull Request Checklist
Thank you for submitting a contribution to Apache Metron.
Please refer to our Development Guidelines for the complete guide to follow for contributions.
Please refer also to our Build Verification Guidelines for complete smoke testing guides.
In order to streamline the review of the contribution we ask you follow these guidelines and ask you to double check the following:
For all changes:

[ ] Is there a JIRA ticket associated with this PR? If not one needs to be created at Metron Jira.
[ ] Does your PR title start with METRON-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
[ ] Has your PR been rebased against the latest commit within the target branch (typically master)?

For code changes:

[ ] Have you included steps to reproduce the behavior or problem that is being changed or addressed?

[ ] Have you included steps or a guide to how the change may be verified and tested manually?

[ ] Have you ensured that the full suite of tests and checks have been executed in the root metron folder via:
mvn -q clean integration-test install && dev-utilities/build-utils/verify_licenses.sh

[ ] Have you written or updated unit tests and or integration tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

[ ] Have you verified the basic functionality of the build by building and running locally with Vagrant full-dev environment or the equivalent?

For documentation related changes:

[ ] Have you ensured that format looks appropriate for the output in which it is rendered by building and verifying the site-book? If not then run the following commands and the verify changes via site-book/target/site/index.html:
cd site-book
mvn site

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible.
It is also recommended that travis-ci is set up for your personal repository such that your branches are built there before submitting a pull request.

+1 Spun this up in dev and it worked like a charm.  Thanks for the fix.
@sardell mentioned that this is covered in the e2e tests, which is how he discovered the problem.
This regression was caused by #1049, but since the e2e are not running reliably we probably did not attempt to run those before merging that one in.  Once we get #1004 merged, we should hopefully avoid regressions like this.


amend flow definitions to include return types from recipe

recipe can return a new object.  Add this definition to flowtype

Coverage remained the same at 96.296% when pulling 186c61cdf865dcdab5237a4243a364be52e6a12c on bugzpodder:master into 38ebb75084ef1417784c6fc869bc407485362d89 on mweststrate:master.

@bugzpodder the build fails on some flow errors, could you look into those?

The only way I managed to fix it was to upgrade flow to 0.68.0.  Any other version I tried (0.65-0.67.1) all had the same build error.

Cool, thanks!


Analyzer treats __PropertyName as contract property

Contact Details
No response
Version
8.x
On which operating system(s) are you experiencing the issue?
No response
Using which broker(s) did you encounter the issue?
No response
What are the steps required to reproduce the issue?
1. Use code similar to .Publish<SomeMessage>(new { __SomeHeader = "" })

What is the expected behavior?
No analyzer errors.
What actually happened?
Analyzer error saying that 'The following properties of anonymous type are incompatible: __SomeHeader'
Related log output, including any exceptions
No response
Link to repository that demonstrates/reproduces the issue
No response

The problem with analyzer itself and not with headers handling. Analyzer highlights such code as erroneous.

Seems like it is working as intended. ReponseAddress is not a valid header name.

Does analyzer know about about all predefined headers and handle them correctly? And for any custom header it shows a red mark by design?

Well, I linked the code in my previous comment. Yes, it does know about all of the built-in headers supported by the message initializer.

Somehow I missed that link. Sorry for bother and thank you!


[TUBEMQ-552] rebase master branch

create this pr to make TUBEMQ-421 keep up with master branch

This is a rebase pr
+1 and merge it.

This is a rebase pr
+1 and merge it.


chore(deps): update vaultwarden/server docker tag to v1.32.5

This PR contains the following updates:

Package
Update
Change

vaultwarden/server
patch
1.32.4 -> 1.32.5

Release Notes

dani-garcia/vaultwarden (vaultwarden/server)
v1.32.5
Compare Source
Security Fixes
This release further fixed some CVE Reports reported by a third party security auditor and we recommend everybody to update to the latest version as soon as possible. The contents of these reports will be disclosed publicly in the future.
Notable changes

Added SSH-Key storage support. Currently only usable with Bitwarden Desktop v2024.12.0 and newer.
You need to enable this feature by adding ssh-key-vault-item,ssh-agent to the EXPERIMENTAL_CLIENT_FEATURE_FLAGS config option. See .env.template

What's Changed

Fix if logic error by @BlackDex in https://github.com/dani-garcia/vaultwarden/pull/5171
More authrequest fixes by @dani-garcia in https://github.com/dani-garcia/vaultwarden/pull/5176
Add dynamic CSS support by @BlackDex in https://github.com/dani-garcia/vaultwarden/pull/4940
fix hibp username encoding and pw hint check by @BlackDex in https://github.com/dani-garcia/vaultwarden/pull/5180
Remove auth-request deletion by @BlackDex in https://github.com/dani-garcia/vaultwarden/pull/5184
fix password hint check by @stefan0xC in https://github.com/dani-garcia/vaultwarden/pull/5189
don't infer manage permission for groups by @stefan0xC in https://github.com/dani-garcia/vaultwarden/pull/5190
Some more authrequest changes by @dani-garcia in https://github.com/dani-garcia/vaultwarden/pull/5188
Support SSH keys on desktop 2024.12 by @dani-garcia in https://github.com/dani-garcia/vaultwarden/pull/5187
Fix Org Import duplicate collections by @BlackDex in https://github.com/dani-garcia/vaultwarden/pull/5200

Full Changelog: https://github.com/dani-garcia/vaultwarden/compare/1.32.4...1.32.5

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Renovate Ignore Notification
Because you closed this PR without merging, Renovate will ignore this update (1.32.5). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the ignoreDeps array of your Renovate config.
If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.


Update core.js types

Add PropertyDescriptor, update Object, Function, Proxy and setTimeout/setInterval

@calebmer Sorry for disturbing, but maybe you can help me with this PR.
I think that AppVeyor is wrong and this PR is ok to merge. What can I do to fix the build and merge the PR?

Yeah, AppVeyor has been a little flakey recently. I'll try and fix it soon. In the meantime, I'll get this PR tested and reviewed!

Just how annoying are "pings" (reminder comments with no new information — like this one)? On the other hand, I cannot use getters/setters at all right now?


Support competitions for dynamic predictions, via C2D asset & dynamic judging service. (Implement PE-Static C & PE-Dynamic A)

Motivation
Overall: get competitors to submit C2D-alg that gives predictions upon request; be able to measure results. In other words, implement PE-Static-C and PE-Dynamic-A. (PE = Predict-ETH)
Key details are in predict-eth planning slides. Please review slides on PE-Static C and PE-Dynamic A before proceeding.
TODOs for this issue
PE-Static C builds on PE-Dynamic A. So implement PE-Dynamic A first.
Specific TODOs:

[ ] Write README for "PE-Dynamic A" competition. It follows the setup in the GSlides. It should work end-to-end. This includes:

[ ] Create a super-basic C2D algorithm that predicts 10 minutes ahead. This will be helpful as the README is created.
[ ] Write the bulk of the README, in line with the setup in the Gslides
[ ] Ensure it includes a new "what judges do" section in the README. Why: so competitors know what judging looks like - and to test on their own C2D algs. And this will include: Set up a new OPF "dynamic judging" service that will run right after a competition deadline. It runs each of the C2D algs every ten minutes, for 12 hours, and then computes nmse. (Bolded because this work is not trivial.)

[ ] Once PE-Dynamic A README is ready, do PE-Static C. How: work backwards to inject in the C2D elements into PE-Static, by creating a README for PE-Static C. It can start with the most recent competition (mainx.md to submit static predictions), and add in C2D stuff of PE-Dynamic A.

UPDATE: I have devised a cleaner, simpler way to achieve the same goals of this ticket. I'm working on that elsewhere. Therefore, I will close this issue.


[@swc/core - @swc/jest] - Upgrading from @swc/core 1.3.4 to 1.3.5

Describe the bug
After upgrading @swc/core from 1.3.4 to 1.3.5, all of our tests fail with the same error:
  ● Test suite failed to run

    failed to process input file

    Caused by:
        cannot process file because it's ignored by .swcrc

      at Compiler.transformSync (../../../node_modules/.pnpm/@swc+core@1.3.5/node_modules/@swc/core/index.js:241:29)
      at transformSync (../../../node_modules/.pnpm/@swc+core@1.3.5/node_modules/@swc/core/index.js:348:21)
      at Object.process (../../../node_modules/.pnpm/@swc+jest@0.2.23_@swc+core@1.3.5/node_modules/@swc/jest/index.js:73:45)
      at ScriptTransformer.transformSource (../../../node_modules/.pnpm/@jest+transform@27.5.1/node_modules/@jest/transform/build/ScriptTransformer.js:619:31)
      at ScriptTransformer._transformAndBuildScript (../../../node_modules/.pnpm/@jest+transform@27.5.1/node_modules/@jest/transform/build/ScriptTransformer.js:765:40)
      at ScriptTransformer.transform (../../../node_modules/.pnpm/@jest+transform@27.5.1/node_modules/@jest/transform/build/ScriptTransformer.js:822:19)

Input code
No response
Config
No `.swcrc` file

Playground link
No response
Expected behavior
Passing tests, or at least the tests failing on execution and not initialization.
Actual behavior
No response
Version
1.3.5
Additional context
We're not fully converted over to swc at this time, ergo the lack of a .swcrc file. First step was migrating our tests and then circling back to update everything else from babel to `swc.
The only block of our jest.config that I had to update after switching to @swc/jest was the transform:
transform: {
    '^.+\\.(js|jsx)$': [
      '@swc/jest',
      {
        test: '.jsx?$',
        jsc: {
          parser: {
            jsx: true,
          },
        },
      },
    ],
    '^.+\\.(ts|tsx)$': [
      '@swc/jest',
      {
        test: '.tsx?$',
        jsc: {
          parser: {
            syntax: 'typescript',
            tsx: true,
          },
        },
      },
    ],
    '^.+\\.(ttf|svg|png|jpg|gif)$': `${__dirname}/staticAssetMock.js`,
  }

Please provide a repro


Fix error with inheritance of outer group's anonymous controller

This fixes an error raised with the following spec:
require 'rails_helper'

describe ApplicationController do
  controller do
    def index
      head status
    end
  end

  context 'when #status returns 200' do
    controller(controller_class) do # Inheriting the outer group's anonymous controller
      def status
        200
      end
    end

    it 'returns status 200' do
      expect(get(:index).status).to eq(200)
    end
  end
end

and run:
$ bundle exec rspec
F

Failures:

  1) ApplicationController when #status returns 200 returns status 200
     Failure/Error: Unable to find matching line from backtrace
     ArgumentError:
       '#<class:0x007fdad27a6340>' is not a supported controller name. This can lead to potential routing problems. See http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use
     # /Users/me/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/actionpack-4.1.8/lib/action_dispatch/routing/mapper.rb:249:in `default_controller_and_action'
     # /Users/me/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/actionpack-4.1.8/lib/action_dispatch/routing/mapper.rb:117:in `normalize_options!'
     # /Users/me/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/actionpack-4.1.8/lib/action_dispatch/routing/mapper.rb:65:in `initialize'

FYI the spec was passing on RSpec 2.14, though I'm not sure whether the support for inheritance of anonymous controller was intentional.

Shrug, your call.

Alright let's go for it.

I rebased against master and added a little more detail to the Changelog message. When this goes green I'll merge.

Thanks for the work @yujinakayama :heart:


Update SELinux to Permissive

Hello @dghubble. This PR is w.r.t the issue where we are not able to ship the logs from Worker Nodes using services such as FluentD, Datadog. The SELinux "enforcing" label was blocking these services to access /var/log location.
I understand the importance of SELinux to be existent on the instances to block apps from publishing confidential data. However, setting the selinux label to permissive will help everyone who is using the log shipping agents installed on the Typhoon Kubernetes Cluster until there is right support provided for Kubelet service from selinux.
Also, it is recommended by Kubernetes to set the selinux to either "permissive" or "disabled" label to enable kubernetes to overcome the issues in such scenarios as suggested here.
I have also enabled sysconfig for docker in this PR. This will allow us to deploy Elasticsearch on our Kubernetes cluster without the error Exception java.lang.RuntimeException: max file descriptors [65535] for elasticsearch process likely too low, increase to at least [65536].
We have been running our Production environment on the Kubernetes cluster built using the Typhoon module and thought these things bundled in the module will be fruitful to many others looking to deploy services similar to us on kubernetes.
Please let me know your thoughts on this and do let me know if you would like these to be implemented in any other way.
Looking forward for your reply 😄

Typhoon for Fedora CoreOS will continue to use SELinux enforcing mode. It is a key security property.
Pods run container processes with SELinux container_t and a random MCS pair. For unique workloads, you may adjust the securityContext of the pod. If you absolutely must, run special workloads as privileged for spc_t.
Security can require discipline. Even more so if you run components that access host data (like log aggregators for vendors). Make security-conscious choices in what you run (e.g. if a project tells you to first disable SELinux, reject that project), take the time to learn about SELinux to confine special workloads, or hire an expert. Organizations that drop enforcement usually lose it permanently (e.g. either understand 1 vendor product now or struggle to reign in a tangled lax ecosystem years from now). For the sake of your user's and your own organization, I'd suggest committing to remaining enforcing. If you still choose to drop enforcing, I'll ask that you do it privately on your own.
The linked kubeadm tutorial is incorrect (Kubelet does integrate with SELinux, plus the older CoreOS Container Linux (EOL) they're referring to ran permissive) and doesn't amount to a recommendation. Even if a Kubernetes community member made some statement to that effect, it wouldn't hold weight here.

The linked kubeadm tutorial is incorrect (Kubelet does integrate with SELinux, plus the older CoreOS Container Linux (EOL) they're referring to ran permissive) and doesn't amount to a recommendation. Even if a Kubernetes community member made some statement to that effect, it wouldn't hold weight here.
I didn't actually realize that. This will be something new I would be taking from here.
I will try out spc_t security context and will let you know how it goes. Thanks for the prompt response 😃

Glad to hear it, I hope choosing contexts for your workloads goes well.

@dghubble I now have the good news. I tried the below security context for my datadog agent and it is able to ship all the logs magically 😄
securityContext:
    seLinuxOptions:
      user: system_u
      role: system_r
      type: spc_t
      level: s0

I have logged into the node and checked ps -efZ | grep kubelet which gave me this output(system_u:system_r:container_runtime_t:s0). I then referred this link and created the above security context and deployed the agent. Please do let me know if I have taken any wrong approach as I'm still new to this set of configurations. :)
If you don't mind, I wanted to suggest to add this piece of info in your website in the addon section so that anyone new to this can make these changes without exploring everything else.
And, thanks a lot for pointing me in the right direction. Appreciate the thorough explanation on the security part.


Version 6.3.1 Link is broken

The link to V6.3.1 is broken (see attached image).
Tried to access the zip link from your installation page:
https://github.com/ppadovani/KibanaNestedSupportPlugin/releases/download/6.3.1-1.0.9/nested-fields-support-6.3.1-1.0.0.zip

Thanks for the heads up.. typo ... fixed now.


Camera Bug Full Revolution

Need to check the sign of the cross product check in order to prevent strange 'under aircraft' effect when cross product result is the zero vector (when the aircraft is facing the right vector)

Fixed. Camera has full axis of rotation now by getting the plane's relative up vector.


Define and provide an implementation of GroupKeyStore

Problem
No implementation was required by our stubs so far but as we're integrating other parts of the configuration system, one is needed.
Proposed Solution
Implement the GroupKeyStore abstraction. It is implemented on other platforms: example

The implementation is trivial but not all the headers are present in the source tree. The base class is from Weave: https://github.com/openweave/openweave-core/blob/5681a350aed5cc89eb8d358fb1db522ccde48af7/src/lib/profiles/security/WeaveApplicationKeys.h#L122 .
I would be in favor of waiting a complete integration upstream so we can at least compile the file.
That would move that issue out of Sprint 2.
Any opinion @lukgni @ATmobica ?

What headers are not implemented?

The missing headers are from the base class: ::chip::Profiles::Security::AppKeys::GroupKeyStoreBase. As linked above, they are present in the open weave repository.

Okay, now I understand. So we need to integrate Weave to mbed platform before -  next integration task. But I don't see the Wave source code inside the CHIP (even in third-party). Would it be available in platform-specific SDK?

Integration with Weave will be made upstream. I propose we wait for this integration to revisit this issue.

I think that's the right thing that we can do:)

Yeah, I agree that we should wait for upstream integration.