-
-
Notifications
You must be signed in to change notification settings - Fork 74
/
CHANGELOG
829 lines (693 loc) · 32.3 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
v3.0.8
------
12 November 2024
A quick re-relase of v3.0.7 with 2 critical fixes needed for Rust and
PlatformIO. Refer to previous relase for actual change log.
Fixes:
- utils: Bump submodule to get __BARE_METAL__ target fix
- scripts: Fix make-release.sh after PlatformIO changes
v3.0.7
------
11 November 2024
This release has been long overdue, bringing in a lot of enhancements and
stability fixes. Most notable change include PlatformIO support.
Enhancements:
- CI: Fix PlatformIO publish workflow
- scripts: Add release hooks for platformio
- PlatformIO: check-in a cached copy of generated headers
- PlatformIO: Add initial port for PlatformIO
- doc: Split osdp_pd_into_t into it's own section
- cmake: Always export compile_commands.json
- ci: Move to actions/upload-artifact@v4 to fix CI builds
- build: Make changes to allow nix/nixos builds
- libosdp: Make a copy of PD name from pd_info_t
- file: Add support various flow control flags
- API: Add support for PD status change events.
- file: Add support for keep alive messages
- cp: Add support for delaying file transfer
- file: Switch to using to BYTES to/from unsigned types macros
- file: Fix multiple assumptions about target endianess
- crypto: Anotate panic method with 'noreturn' attribute
- cmake: Add more sanitizers and rename the config key for it
- scripts: run_tests.sh: Switch to cmake based build and run invocations
- cmake, make: generate osdp_config.h in build/include dir
- doc: Update packet and data trace documentation
- Rename osdp_pcap.* as osdp_diag.* to allow for future enhancements
- examples/python: PD: Add singal handler to exit the script
- python: Enable packet trace builds by default
- API: Add a flag to enable packet trace at runtime
- scripts: Update run_tests.sh to call functions for different test suites
- cp: phy: Allow plaintext NACKs when SC is active
- cp: Add a log line when retrying SC after timeout
- cp: keyset complete don't request SC restart if PD is not online
- Prefix CP/PD tags to setup log line
- cp: Add entry for handling OSDP_ERR_PKT_NACK to add comments
- cp: Set reply_id to REPLY_INVALID before sending a command
- cp: Introduce "probe" state for PDs that don't respond
- doc: Update cmake invocations for cross-platform builds
- api: Remove OSDP_EXPORT decorations in declarations
- cmake: Exclude targets that cannot be built when using MSVC
- doc: Add section about vcpkg usage
- API: Add new setup flag to guard notification events
- API: Add support notification events
- scripts: Add a tests runner scripts
- doc: Add deprecation notice for osdpctl
- pytest: Add tests for pd_id and pd_cap API
- test: Add some info message when invoked with -n flag
- python: osdp: Add method in KeyStore to persisting a key
- python: osdp: Consume and export pd_id and pd_cap getters
- python: osdp_sys: Enable pd_cap and pd_id getters
- phy: Lower log level for packet_scan_sckip reports
- phy: Allow multiple mark bytes before SOM
Fixes:
- Fix handling of empty SCS17/SCS18 messages
- Annotate osdp_millis_now definition with __weak atrribute
- python: Fix LED commands with temporary and permanent records
- Copied osdp_export.h from correct location on install
- cp: Fix 'REPLY_BUSY' handling logic
- pd: Don't discard SC before acknowledging keyset command
- cp: Move cp_cmd_free() out of cp_translate_cmd()
- cp: Fix typo in flag CP_REQ_OFFLINE value
- file: Fix bug in the exclusive flag collection
- libosdp: Fix memory leak when file ops is registered
- cp: Fix loss of tamper bit when saving power bit in status event
- utils: Pull in fixes for loging and make
- utils: Bump submodule for windows build fix
- cp: Fix segfault in osdp_cp_teardown()
- python: Fix broken build due to wrong return type
- python: Fix potential null-ptr-deref during event callback
- Bump utils and fix some typos in osdp.h
- examples: Fix makefile and some minor udpates
- pd: Fix firmware_version reports in PD_ID
v3.0.6
------
10 May 2024
Patch release to address rust build failure issue.
Fixes:
- examples: python: Fix pyserial read timeout
- Continue normally on successful command callback on status commands
- phy: Enhance package scan logging by printing mark-byte
- ci: Exclude cpp sample from all and build explicitly in build-ci
- ci: Fix broken release action
v3.0.5
------
23 March 2024
More vcpkg integration issue fixes. This relaese is also about more platform
suppport.
Enhancements:
- ci: Enhance to run on different platforms; start doc builds
- cmake: Add options to disable shared/static builds
Fixes:
- examples: cpp: Use std::this_thread::sleep_for instead of usleep
- doc: Fix doxygen build by copying and patching osdp.h
- api: Fix some more doxygen formatting issues
- doc: Remove deprecated doxygen config entries
- cmake: cpack: Fix package definitions
- crypto: openssl: Remove call to ERR_print_errors_fp()
- crypo: Add missing headers for openssl.c
- api: Add OSDP_EXPORT to exported methods in osdp.h
- python: example: Update README.md with socat link option
- ci: Fix cross-platform build and change cpack artifact path
- cmake: Fix MSVC OSDP_EXPORT macro issue
- cmake: Fix MSVC compiler flag issue
- CI: Add an on-demand cross platform build check runner
- cmake: Fix broken CI build due utils build
v3.0.4
------
19 March 2024
A release to patch cmkae issues found during vcpkg integration. This version
will be pegged to the first vcpkg release.
Fixes:
- cmake: Fix issues found when integrating with vcpkg
- Fix input_check() macros for windows builds
- api: Fixup comamnd queue flush function name
v3.0.3
------
13 March 2024
Minor release with a few fixes required for rust development to progress
Enhancements:
- make: Add support for make install
- api: cp: Add method to flush command queue
- python: osdp_sys: Add some error context for public API
- doc: Add libosdp/compatibility to top level index.rst
Fixes:
- doc: Fixup doc in multiple places
- api: More doxygen fixups
- cmake: Fix packet trace and data trace linkage
- api: Fix regression caused by doxygen formatting commit
- api: Fix doxygen comments style all over osdp.h
- Fix minor typos in the Wireshark payload dissector
- doc: More README updates
- doc: Update README; fix compatibility table
- libosdp: Fix issue with SC retry timer
- utils: Pull in fix for time usage on Windows
v3.0.2
------
09 March 2024
Yet another minor release to address some of the issues that were identified in
3.0.0 release. With this release, LibOSDP supports Windows as a first-class
citizen.
Enhancements:
- pytest: run.sh: Add an option to skip running the tests
- doc: Add LibOSDP compatibility table
- publish-pypi: Enable windows build/publish
- doc: Update security.md
- python: example: Add some CLI args and add a README.md
- pytest: Add some stage info for run.sh
- libosdp: phy: some minor houekeeping
- python: Deprecate master key based key derivation
- python: Remove concrete "channel" implementations
- libosdp: file: Make impossible conditions as BUG_ON()
- libosdp: file: Do not disrupt SC when file TX fails
- pcap: Replace ':' with '_' in pcap file name timestamp
- utils: bump submodule to fix __weak warning
Fixes:
- Fix bug in SC setup due to missing call to cp_keyset_complete
- python: Fix buggy call to PyArg_Parse due to type of len
- python: fix some minor issues for MSVC to build libosdp
- pcap: Fix file name character replacement bug
- dissector: Remove extra space in command ID text
- libosdp: Fix broken SC due to missing sc_init call
v3.0.1
------
20 February 2024
A quick follow up release adding a few key features that got left out in 3.0.0.
Most notably, packet trace and data trace infrastructure has been reworked and
a custom Wireshark protocol dissector for OSDP was added. Additionally, Some
efforts has been made to support Windows as a build platform.
Enhancements:
- libosdp: Add Packet scan skipped bytes instrumentation
- pcap: Move declarations to a separate header
- doc: Update info about dissector loading on windows
- libosdp: Add support for windows builds
- dissector: Append command/reply name to tree view for better analysis
- libosdp: Migrate rust code to a dedicated repo
- misc: dissector: Add support for data tracer
- libosdp: data_trace: Fix bug in packet length passed to tracer
- libosdp: pcap: Log the number of packets captured
- libosdp: pcap: Bump utils submodule to fix issues
- libosdp: Extend tracing infrastructure to DATA_TRACE
- libosdp: Add timestamp to trace files for uniqueness
- libosdp: Add a custom protocol disector for WireShark
- libosdp: Switch to pcap based packet tracing
Fixes:
- libosdp: Fix packet scan skipped bytes instrumentation
- Repaired references to osdp_millis_now()
- doc: Update debugging.rst and README.md with new tracing changes
- examples: python: Fixup some more minor issues
- libosdp: Rename samples/ as examples/ as it sounds better
- examples: python: Fix CP and PD examples for the higher level osdp module
- CI: Allow publish-pypi.yml to be activated on manual triggers
- CI: Update python publishing to multilinux
v3.0.0
------
14 February 2024
This Major release bring rust support, CP state machine cleanups, API cleanups,
and many other enhancemtns and fixes.
Enhancements:
- Add rust support (single entry for 80+ patches)
- Rewrite osdpctl in rust (single entry for many patches)
- chore: Update copyright year to 2024
- python: vendor LibOSDP sources when packaging
- python: Remove code referring to CMakeLists.txt version
- API, python: Add LED color constants from v2.2 of the spec
- doc: Update top-level README.md
- libosdp: cp: Move keyset completion handler to get_next_ok_state()
- tests: pytest: Add install_mode SCBK set test
- libosdp: Unify StatusReport query and event structs
- libosdp: cp: Move functionality away from command builders
- pytests: Remove timeout from CP status test
- python: Adapt to changes to status event/command handling
- libosdp: Rework status command and event handling
- libosdp: cp: Reword event callback mechanism to use requests
- libosdp: Permit REPLY_COM response for CMD_COMSET
- rust: Add method to make a pair of unix channels
- libosdp: Split events data maxlen macro as we have for commands
- libosdp: Reduce command/event pool size
- python: Add a get_file_tx_status() for PD
- test: unit-test: Add command and event callback logging for file tx command
- pyosdp: Move set_log_level() to be module method
- tests: unit-tests: Add initial skeleton for command test
- libosdp: cp: Rework CP state machine
- libosdp: cp: Remove some more master key related code
- libosdp: cp: Move call to cp_cmd_free into cp_translate_cmd
- libosdp: cp: Add BUG() macro and call for file TX cmd translate
- libosdp: cp: Decouple internal and external command queue
- cmake: utils,samples: Bump minimum required version
- libosdp: CP: Lower comeset reply log level to info
- libosdp: API: Do not indiate SC active when using SCBK-D
- libosdp: phy: Also ignore commands with PD address.MSB set
- libosdp: phy: Ignore reply with PD address.MSB cleared
- Increasing the max data contained in an OSDP enevt to 128bytes
- utils: Bump submodule to latest commit
- doc: Add some notes about make build
- libosdp: API: Remove osdp_set_command_complete_callback
- libosdp: Set PD address to 0x7F for broadcast packets
- libosdp: API: common: Increase PD offline status timeout to 600ms
- scripts: Unify release generation scripts into one place
- rust: Add workaround for osdp_config.h.in copy to OUT_DIR
- rust: cp: Add support for the new status command
- libosdp: cp: Add different query options for OSDP_CMD_STATUS
- libosdp: cp: Refactor API command handling (translating) logic
- python: Update README.me and samples after testing
- python: osdp: pd: Add support sc_wait() method
- python: osdp: Add support for non-blocking get_{command,event}
- cmake: Remove python/ subdirectory from chain
- python: Merge test/pytest/testlib as main python package
- libosdp: const-annotate some more public API
- libosdp: Const-ize parameters of exposed methods
- libosdp: Remove deprecated methods tree-wide
- libosdp: Add support for Magenta and Cyan LED colors
- libosdp: Demote osdp_logger_init to a macro alias
Fixes:
- utils: Bump submodule to fix build failure due to VLA
- Fix regression in Rust binding. Commit
51b626c94bc39242f9793c916471bdadafe24679 increased buffer size to 128
bytes. Adjust binding accordingly.
- make: Fix configure.sh for linux
- libosdp: Fix warnings that break rust build
- utils: Bump submodule to fix log line termination issue
- libosdp: phy: Fix PACKET_TRACE command byte offset
- libosdp: phy: Fix packet trace mark byte logging
- doc: security: Update doc to have latest info; fix a typo
- libosdp: cp: Fix broken keyset for an install_mode PD
- CP: API: Fix callback signature in cpp header
- python: osdp_sys: fix memory leak in pyosdp_add_pd_cap
- pytest: Fix run.sh to be invokable from other dirs
- python: Fix pd_info builder after const qualification of info->cap
- src/osdp_common.c: waring: _GNU_SOURCE redefined
- utils: version bump - pickup fixes for gcc warnings/errors
- unit-test: Fix broken build due to old API drop changes
- Fix potential null pointer deref at LOG_* call site
- cp: disallow unexpected SC responses
v2.4.0
------
28 October 2023
This release marks the end of 2.x version of libosdp. Bring some minor
updates and fixes.
Enhancements:
- libosdp: Add new API to set a log callback function
- unit-test: Add line noise simulation methods
- pytest: Add new test for CP/PD status reports
- pyosdp: pd: Expose a new API to check online status
- libosdp: Update to new logger API
- Expose new configure time macro REPO_ROOT
- configure: Add new option --debug to enable debug symbols
- make: Don't remove and rebuild unit-test target each time
- cmake: Add hook to checkout submodules
- pd: Use teardown in peripheral destructor only if context exists
- cp: Use teardown in control panel destructor only if context exists
Fixes:
- libosdp: Fix stable API change violation
- unit-tests: Fix warning due to change of fclose sinature
- libosdp: cmake: Fix static builds with local openssl
- c++: add header guards
- pytest: testlib: Fix bug in retry count
- pytest: Make CP and PD restart-able
- API: common: Fix osdp_get_status_mask for PD mode
- Fix null pointer deref issue osdp_reply_name
- doc: Update domain name to sidcha.dev as gotomain.io has expired
- Update copyright year to 2023
- Remove obsolete travis CI config file and it's refs
- check osdp close file status (according prototype function comments)
- save PD Local Status
v2.3.0
------
27 June 2023
A standard mid-year release with accumulated fixes and enhancements.
Interestingly, this release has a high number of community contributions :)
Enhancements:
- Add support for additional baud rate 57600
- Add deprecation notice for command_complete_callback API
- pyosdp: refactor make_(struct|dict) methods into translators
- pyosdp: Move similar methods closer for maintainability
- pyosdp: Refactor event handling method names
- pyosdp: refactor command handling method names
- pytest: Add tests for IO and status events
- pyosdp: export IO and status events to use in pytests
- libosdp: Add support for tamper and power status events
- phy: Allow sequence repeat packets
- libosdp: Limit max packet size to reported peer RX size
- pd: Add support for handling multiple records in output command
- pytest: More multidrop test related changes
- zephyr: Refactor command_callback into a method
- PD: Reset phy state when ignoring a packet
- libosdp: file: Promote to be a fist-class citizen
- libosdp: Allow file transfers to be aborted
- pd: Handle OSDP_EVENT_MFGREP case in pd_translate_event
- pyosdp, pytests: Add test case for mfgrep event
Fixes:
- pyosdp: Hoist cmd->id set in pyosdp_make_struct_cmd
- fix LED & Buzzer repeated command
- mbedtls: fix incorrect mode in ecb encryption
- fix: converts uint64 to uint32 for arm device capability.
- Disable FindMbedTLS.cmake to fix issue in #108
- Fix typos in secure channel docs
- Make installation with cmake happier
- pd: Fix CMD_ABORT length check
- cp: Add support for local status query command
- Fix sequence reversing issue during phy_reset()
- libosdp: Fix plethora of bugs in input/output events
- pyosdp: Drop Py_TPFLAGS_HAVE_GC flags on osdp class
- Fix issues in configure.sh
- corrected typo in doxygen documentation
- file: Fix bug in return value processing in build_command
- libosdp: raw loops to memcpy and other zephyr review fixes
- fixup! libosdp: file: Promote to be a fist-class citizen
- pytest: Add file transfer abort test
- unit-test: Fix test failure due to missing extern
- unit-test: Fix a use-after-free bug in test async runner
- fixup! pd: Handle OSDP_EVENT_MFGREP case in pd_translate_event
v2.2.0
------
01 December 2022
Yet another minor release with accumulated fixes and enhancements. Notable
changes since last release include,
Enhancements:
- pd: add method to flush event queue
- Enable REPLY_ISTATR and REPLY_OSTATR support
- libosdp: Added opaque argument to command_complete_callback
- pytest: Add events tests
- phy: Only flush channel on errors in osdp_phy_state_reset
- phy: Don't attempt to send a NACK for some early failures
- libosdp: Make osdp_cmd_mfg and osdp_mfgrep identical
- cp: Do not propagate PHY errors as-is
- libosdp: Add a ring buffer to store the RX data
- libosdp: Move channel read/writes into phy layer
- unit-tests: Resurrect the old unit-tests modules
- libosdp: Add a softname for PDs in the info struct
- Avoid one ifdef by reorg and static inline-ing
- libosdp: Add support for I/O status monitoring/reporting
- Enable address sanitizer enabled builds
Fixes:
- libosdp: Fix CMD_ABORT's assigned command code
- cp: Fix cardread and keypress event decode cases
- unit-tests: Add a test case to validate the mark-byte skip
- pytest: Fix is_sc_active() to return boolean
- fixup: libosdp: Add support for I/O status monitoring/reporting
- Fix build failure
- Fix OSDP_QUEUE_SLAB_SIZE defintion and some typos
- Fix a heap-buffer-overflow in __cp_setup()
v2.1.0
------
15 April 2022
This minor release puts together the enhancements and fixed accumulated over the
last year. No dramatic changes.
Enhancements:
- pytest: Remove master_key_workflow test case
- pyosdp: cp_init switch to osdp_cp_setup2()
- pytest: Add set/clear flags methods
- libosdp: Add new exported method: osdp_cp_modify_flag()
- libosdp: Add new flag OSDP_PD_FLAG_IGN_UNSOLICITED
- pd: Add check on the length field of osdp_MFGREP
- pytest: remove the need to install python module for tests
- cmake: replace FindPython{Interp,Libs} with FindPython3
- LibOSDP: Consume logger from utils so we don't own that module
- libosdp: Remove -Werror; seems a bit excessive :)
- libosdp: Set an example by not using osdp_cp_setup()
- PD: Prevent out of order CMD_SCRYPT for safety
- libosdp: Mark osdp_cp_setup() as deprecated
- CP: Expose new API osdp_cp_setup2() to discourage use of master_key
- Phy: Nack secure messages received without an active SC session
Fixes:
- Fix an overflow bug in osdp_phy_check_packet()
- Add null checks on struct osdp_file pointer
- pyosdp: Fix handling of temporary flag in LED command
- pytest: Add LED command temporary: False test
- pyosdp: Expose set/clear flags method in the python wrapper
- CP fixup needed when communicating with hardware PD
- Fixed wrong command ID while logging "REPLY_PDID" in OSDP_CP_STATE_IDREQ
- Fix copy-paste issue in cmake/FindMbedTLS.cmake
v2.0.0
------
19 September 2021
This major release brings support for new features added in IEC Edition 1.0 of
the OSDP specification and other bug fixes and API changes.
Enhancements:
- pytest: Add test coverage in pytest
- sc: Fix API inconsistency in compute_session_keys()
- libosdp: Deprecate ad-hoc unit testing
- libosdp: Document members of struct osdp and struct osdp_pd
- pyosdp: Add support for file transfer command
- CP: Add public method to get PD ID and capability
- Tiny-AES: Update source files to latest version
- libosdp: Add support for MbedTLS
- libosdp: Cleanup error handling between phy and CP/PD
- Deprecate Master key based key derivation
- Add support for OSDP File Transfer
- Advertise and decode peer_size capability
- Add support for CMD_ABORT, CMD_ACURXSIZE, CMD_KEEPACTIVE
- Add support for additional baud rates 19200 and 230400
Fixes:
- libosdp: Change API to handle any number PDs in get_(sc_)status_mask
- libosdp: Double SC timeout to be a bit more flexible
- PD: Fix bug when phy wants wait for more data by PD discards rx_buf
- PD: Fix packet trace logging of sent bytes
- libosdp: USE_SCBK-D has a higher precedence in choice of SCBK
- file_tx: Many fixes and enhancements
- libosdp: Fix slab_free() assertion bug in release builds
- SC: Fix SCBK clobber in osdp_compute_session_keys()
- libosdp: Discard Secure Channel if a KEYSET is ACKed in plaintext
- CP: Fix packet consumption from rx_buffer issue
- cp: Allow applications to KEYSET with SCBK or master_key
- Fix: Allow keyset with SCBK; guard master_key route with ENFORCE_SECURE
- Ignore reply packet coming from another PD.
- Fix the master key check in osdp_cp_setup()
v1.5.0
------
17 April 2021
This release marks the end of OSPD specification v2.1.6 support. Post this
release, LibOSDP would start supporting new features added in IEC Edition 1.0
specification.
Features:
- libosdp: Introduce a lean-build system
- tests: Add a command level unit test executor
- libosdp: Add new command complete callback
Enhancements:
- libosdp: Add cmake option CONFIG_OSDP_STATIC_PD (configure --static-pd)
- pd: Use better NAK error code when rejecting a command due to SC inactive
- LibOSDP: Split build/send and receive/decode methods
- Add new typedef and document osdp_log_fn_t
- Remove implicit logging via printf()
- Avoid allocs by switching log buf to static char[]
- Add compile time switch to disable colours in osdp logs
- Add Makefile target to clone utils submodules at init
- phy: Allow non-conformant, 0 length, encrypted data blocks
- cp: Add bounded exponential back-off for offline retries
- cp: Add detection of a busy reply with sequence number 0
- Mark some methods with __weak for portability
Fixes:
- Clean src/osdp_cp.o even if it is not built due to --single-pd
- Just fix the description comment for OSDP_PD_NAK_SEQ_NUM
- Call osdp_logger_init() before setting up CP/PD for early logging
- Fix off-by-one at vsnprintf()'s return value assertion
- Move osdp_millis_*() into utils::utils.c
- Move unistd.h into CONFIG_DISABLE_PRETTY_LOGGING guard
- Enable github workflows on lean build to keep them in sync
- Fix coverity identified off-by-one out-of-bound array access
- Fix coverity identified logical dead-code
- sc: Fix potential out-of-bound buffer access
- cp: Bypass unneeded packet decoding for a busy reply
- cp: Don't regenerate random numbers for the challenge command
- cp: Add the OSDP_ONLINE_RETRY_WAIT_MS timeout
- pd: Fix device capabilities report
- Call to osdp_dump was using incorrect length
v1.4.0
------
31 January 2021
This relase brings in a lot of bug fixes and some minor enhancements.
Enhancements:
- doc: Add Doxygen and breathe to talk with sphinx
- LibOSDP: Add osdp.hpp and cpp samples
- cp: Add new flag FLAG_SC_DISABLED when master_key == NULL
- Add support for adpative MARK bytes on packets
- libosdp: consume only processed bytes from rx_buf
- test: Get test log level from test context
- Add a toplevel cmake offload makefile
- PD: Add API osdp_pd_set_capabilities()
- PD: Add CAP validation on received commands
- PD: Allow only specific commands in plain text when ENFORCE_SECURE
- Consume new hexdump API; Modify packet_trace logs
- Move src/include/* to src/ for simplicity
- PD: Reset SC active status bit when there is a timeout
- pyosdp: promote set_loglevel() as osdp class static method
- libosdp: Add support for multiple PDs connected in a single channel
- Add compile time switch CONFIG_OSDP_SKIP_MARK_BYTE
- Allow LibOSDP to export its build rules to other modules
- libosdp: Optionally, find and use openssl if available
Fixes:
- pyosdp: cp: change type of master_key to python bytes
- cp: Fix master keyset functionality
- libosdp: cleanup logs and remove some duplicate code
- Fix python warnings -- bugs
- Disambiguate logging macro from the loglevel enum entry
- CP: Fix some ENFORCE_SECURE holes
- Reset seq_number before moving to ONLINE without SC
- fix: map the public osdp_cmd_e id codes when sending commands to the OSDP API
function osdp_cp_send_command()
- fix in using correct context pointer for PD (pd_ctx instead of cp_ctx)
- The PD address 0 is also a valid address!
- Fix the check of the checksum of received packets.
- Avoid receiving invalid data by flushing rx before each send.
- do not flush rx queue when skipping commands. when skipping commands addressed
to other nodes the rx queue should not be flushed. The complete command is
already received and flushing the rx queue only risks removing bytes in the
next command.
- PD: Discard SC flag on MAC verification and decryption errors
- Fix REPLY_RAW card data length bug - Related-To: #31
- Fix constant time compare in osdp_ct_compare()
- pyosdp: fix untested PD capabilities code flow
- Fix CONFIG_OSDP_PACKET_TRACE that was flooding logs with osdp_POLL
- cp: Fix unexpected reply condition missing break
- Fix osdp_event_cardread length bits/bytes mixup
v1.3.0
------
16 September 2020
With this release, LibOSDP now has python bindings. It is possible to setup a
device as a Control Panel or Peripheral Device through python. Also, PD now
supports alternate replies in the form of OSDP events.
Enhancements:
- libosdp: Add flag ENFORCE_SECURE to make secure assumptions
- libosdp: Resolve PD address / offset inconsistencies
- libosdp: Remove CONFIG_OSDP_SC_ENABLED macro switch
- libosdp: deprecate osdp_cp_send_cmd_*() methods in favour of osdp_cp_send_command()
- libosdp: add PD app command callback support
- Make OSDP_FLAG_INSTALL_MODE a setup time flag
- Add support for manufacturer specific commands
- Add support for osdp_FMT, osdp_RAW, osdp_KEYPAD and handle their osdp_events
- Move command alloc/queue API into CP region
- Add checks that a pd is online before queueing commands.
- osdpctl: consume utils/channel.c and remove native impl
- libosdp: Add support for callback data in notifiers
Fixes:
- Fix srand issue in tests, pyosdp, and osdpctl
- PD: Fix bug PD_FLAG_SC_ACTIVE not removed when PD goes offline
- PD: always check the timeout on receiving packets
- libosdp: Deprecate command queues for PD mode
- Add osdp_events and make changes globally
- Fix multiple checkpactch issues found in zephyr upstream
- Move PD offset validation above context dereference
- Move COMSET out of CONFIG_OSDP_SC_ENABLED macro guard
- libosdp: fix COMSET command regression
- Refactor some command struct members for consistency
- Fix python memory leak and python keyset error check.
- libosdp: Fix bug in PD_MASK() macro
- libosdp: fix missing cmd_dequeue return check
- Rebuild utils with -fPIC to fix gcc/linux build issues
- doc: Add protocol/faq update README.md
- Consume slab allocation from utils and remove native implementation
- Return aligned memory from slab allocator.
- Fix doc links in README.md
- Fix multiple broken links in doc/ after sphinx move
- Update AES to to latest kokke/tiny-AES-c
v1.2.0
------
15 August 2020
This release marks the first HEAD of initial PD support in Zephyr RTOS upstream
(https://github.com/zephyrproject-rtos/zephyr). Lot of changes to coding style
were made to upstream the PD sources without too much variation to the one here.
Enhancements:
- Add support for sphinx documentation builds see: https://libosdp.gotomain.io
- Add a macro switch to disable Secure Channel
- Add utils git-submodule and delete all copied ad-hoc utils from this repo
- Add pkg-config file for libosdp
- PD: When seq number 0 is received, invalidate SC status
- Add github actions workflows for tests and release
- Rewrite PD and CP fsm for zephyr integration
- osdpctl: rewrite rs232.c into utils/serial.c
- osdpctl: remove pid file in osdpctl stop. Also check return code of kill
- Produce source and binary tarballs with cPack
- Bring changes from zephyr PD, post review and apply it to CP as well
- Control the externally exposed library symbols using `EXPORT` macro
Fixes:
- Make all internal methods static; scope all globals with `osdp_`
- Add colors for various log levels of libosdp
- Refactor all reference to struct osdp_pd as 'pd' everywhere
- Fix static analysis issues identified by Xcode
- travis: switch to Ubuntu 18.04 bionic for testing
- osdpctl: Fix bug in `hex2int()`
- osdpctl: Fix bug in load_scbk(); test key_store feature
- osdpctl make config as the first argument for all commands
- Fix sequence number 0 sent by CP does not reset connection in PD
- osdpctl: Make PD message queue channel owner, responsible for cleanup
- osdpctl: Fix segfault on channel cleanup code
v1.1.0
------
28 June 2020
This release bumps up the minor number as the contract has changed. It
introduces 2 major changes (first 2 in enhancements). The rest is all
re-organization and fixes.
Enhancements:
- In PD Change app notification of incoming commands to polling to
simplify API
- Replace circular buffer command queue with linked list queue
- Add SC status and status query methods
- Add assert guards for exposed methods
- Cleanup osdp.h by splitting it into multiple files
- Split cmake rules into subdirectories
Fixes:
- Add PD address to REPLY_COM in pd_build_reply
- Fix fd leak in read_pid
- Fix missing null char at atohstr()
- Fix memory under-alloc due to operator precedence issues
v1.0.0
------
29 May 2020
This is the first release of libosdp. It has been in pre-release for a
long time now and has been tested sufficiently well for a first release.
Rate of bug fixes has gone down significantly.
As of this release, libosdp has the following high level feature:
- Supports OSDP CP mode of operation
- Supports OSDP PD mode of operation
- Supports Secure Channel for communication
- Ships a tool: osdpctl to consume and library and setup/manage osdp
devices
- Documents key areas in the protocol that are of interest for consumers
of this library.
So far, this library's CP implementation has been tested with multiple
OSDP PDs including HID's devices and found to be working as expected. The
PD implementation has been tested with it's own CP counterpart so this some
level of confidence on the that too.
v0.4 Beta - 3
-------------
17 Jan 2020
Fix multiple bugs found in LibOSDP:
- fix unhandled reply-code bug
- fix issue where reader goes permanent reader offline
- retry SC after OSDP_PD_SC_RETRY_SEC when possible
- fix USE_SCBKD inversion bug
- fix bug in MAC add/check for SCS_15
Note:
This tag has CP mode verified with HID RK40 readers. This can act as
reference point for all PD change validation hereafter.
v0.3 Beta - 2
-------------
15 Dec 2019
New Features:
- Added new tool osdpctl to create, manage and control osdp devices
- Add PD context to CP logs for clarity
Enhancements and bug fixes:
- Fix PD stale pointer issue in osdp_setup
- Fix MAC generation bug in Secure Channel
- Fix Data offset bug in Secure Channel
- Fix issues reported by -Wimplicit-fallthrough
- Fix memleak in PD command queue alloc
- Fix wrap around bug in cmd_queue
- Fix many clang static code analysis issues
v0.2 Beta - 1
-------------
29 Nov 2019
Features and Issue Fixes:
- Master key management in CP and PD
- Many small issue fixes
Known limitations:
- install mode stuffs need to be ironed out comset command needs to be
- handled correctly
v0.1 Alpha
----------
15 Nov 2019
libosdp has reached a point where all the primary featured are in place.
Known limitations:
- Master key management is missing
- Install mode stuffs need to be ironed out
- comset command needs to be handled correctly