mirror of
				https://github.com/thelsing/knx.git
				synced 2025-10-26 10:26:25 +01:00 
			
		
		
		
	save work
This commit is contained in:
		
							parent
							
								
									c35c550bc2
								
							
						
					
					
						commit
						262842cea3
					
				| @ -32,7 +32,8 @@ add_executable(knx-linux | ||||
| 	../../src/knx/cemi_frame.h | ||||
| 	../../src/knx/cemi_server.cpp  | ||||
| 	../../src/knx/cemi_server_object.cpp  | ||||
| 	../../src/knx/data_link_layer.cpp  | ||||
|         ../../src/knx/cemi_server_object.h | ||||
|         ../../src/knx/data_link_layer.cpp | ||||
| 	../../src/knx/data_link_layer.h | ||||
| 	../../src/knx/data_property.cpp  | ||||
| 	../../src/knx/data_property.h | ||||
| @ -81,6 +82,8 @@ add_executable(knx-linux | ||||
| 	../../src/knx/rf_physical_layer.h | ||||
|         ../../src/knx/secure_application_layer.cpp | ||||
|         ../../src/knx/secure_application_layer.h | ||||
|         ../../src/knx/security_interface_object.cpp | ||||
|         ../../src/knx/security_interface_object.h | ||||
|         ../../src/knx/table_object.cpp | ||||
| 	../../src/knx/table_object.h | ||||
| 	../../src/knx/tpdu.cpp  | ||||
|  | ||||
| @ -158,6 +158,19 @@ enum PropertyID | ||||
|     PID_MAX_INTERFACE_APDU_LENGTH = 68, | ||||
|     PID_MAX_LOCAL_APDU_LENGTH = 69, | ||||
| 
 | ||||
|     /** Security Interface Object */ | ||||
|     PID_SECURITY_MODE = 51,                     // Enable and disable the Security Mode
 | ||||
|     PID_P2P_KEY_TABLE = 52,                     // Security keys used for securing point-to-point and broadcast communication
 | ||||
|     PID_GRP_KEY_TABLE = 53,                     // Security keys used for securing standard mode group communication
 | ||||
|     PID_SECURITY_INDIVIDUAL_ADDRESS_TABLE = 54, // IAs and last valid sequence numbers of communication partners with secure links
 | ||||
|     PID_SECURITY_FAILURES_LOG = 55,             // Provides security failure information
 | ||||
|     PID_TOOL_KEY = 56,                          // Stores the security information for the central MaC in S-Mode and Ctrl-Mode
 | ||||
|     PID_SECURITY_REPORT = 57,                   // KNX Data Security-related status and diagnostic information
 | ||||
|     PID_SECURITY_REPORT_CONTROL = 58,           // Control the spontaneous communication of the security report through DMP_InterfaceObject-InfoReport_RCl
 | ||||
|     PID_SEQUENCE_NUMBER_SENDING = 59,           // Sequence Number used for the next outgoing secure communication
 | ||||
|     PID_ZONE_KEY_TABLE = 60,                    // Security keys used for securing zone addressing communication
 | ||||
|     PID_GO_SECURITY_FLAGS = 61,                 // Defines the required security requirements for each group object
 | ||||
|     PID_ROLE_TABLE = 62,                        // Role table
 | ||||
| }; | ||||
| 
 | ||||
| enum LoadState | ||||
|  | ||||
							
								
								
									
										68
									
								
								src/knx/security_interface_object.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								src/knx/security_interface_object.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,68 @@ | ||||
| #include "config.h" | ||||
| #ifdef USE_DATASECURE | ||||
| 
 | ||||
| #include <cstring> | ||||
| #include "security_interface_object.h" | ||||
| #include "bits.h" | ||||
| #include "data_property.h" | ||||
| #include "callback_property.h" | ||||
| #include "function_property.h" | ||||
| 
 | ||||
| SecurityInterfaceObject::SecurityInterfaceObject() | ||||
| { | ||||
|     Property* properties[] = | ||||
|     { | ||||
|         new DataProperty( PID_OBJECT_TYPE, false, PDT_UNSIGNED_INT, 1, ReadLv3 | WriteLv0, (uint16_t)OT_SECURITY ), | ||||
|         new CallbackProperty<SecurityInterfaceObject>(this, PID_LOAD_STATE_CONTROL, true, PDT_CONTROL, 1, ReadLv3 | WriteLv3, | ||||
|             // ReadCallback of PID_LOAD_STATE_CONTROL
 | ||||
|             [](SecurityInterfaceObject* obj, uint16_t start, uint8_t count, uint8_t* data) -> uint8_t { | ||||
|                 if (start == 0) | ||||
|                     return 1; | ||||
| 
 | ||||
|                 // TODO: implement PID_LOAD_STATE_CONTROL for complete interface object
 | ||||
|                 //data[0] = obj->_state;
 | ||||
|                 return 1; | ||||
|             }, | ||||
|             // WriteCallback of PID_LOAD_STATE_CONTROL
 | ||||
|             [](SecurityInterfaceObject* obj, uint16_t start, uint8_t count, const uint8_t* data) -> uint8_t { | ||||
|                 // TODO: implement PID_LOAD_STATE_CONTROL for complete interface object
 | ||||
|                 //obj->loadEvent(data);
 | ||||
|                 return 1; | ||||
|             }), | ||||
|         new FunctionProperty<SecurityInterfaceObject>(this, PID_SECURITY_MODE, ReadLv3 | WriteLv0, | ||||
|             // Command Callback of PID_SECURITY_MODE
 | ||||
|             [](SecurityInterfaceObject* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> uint8_t { | ||||
|                 // TODO
 | ||||
|                 return 0; | ||||
|             }, | ||||
|             // State Callback of PID_SECURITY_MODE
 | ||||
|             [](SecurityInterfaceObject* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> uint8_t { | ||||
|                 // TODO
 | ||||
|                 return 0; | ||||
|             }), | ||||
|         new DataProperty( PID_P2P_KEY_TABLE, true, PDT_GENERIC_20, 1, ReadLv3 | WriteLv0, (uint16_t)0 ), // TODO: value
 | ||||
|         new DataProperty( PID_GRP_KEY_TABLE, true, PDT_GENERIC_18, 1, ReadLv3 | WriteLv0, (uint16_t)0 ), // TODO: value
 | ||||
|         new DataProperty( PID_SECURITY_INDIVIDUAL_ADDRESS_TABLE, true, PDT_GENERIC_08, 1, ReadLv3 | WriteLv0, (uint16_t)0 ), // TODO: value
 | ||||
|         new FunctionProperty<SecurityInterfaceObject>(this, PID_SECURITY_FAILURES_LOG, ReadLv3 | WriteLv0, | ||||
|             // Command Callback of PID_SECURITY_FAILURES_LOG
 | ||||
|             [](SecurityInterfaceObject* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> uint8_t { | ||||
|                 // TODO
 | ||||
|                 return 0; | ||||
|             }, | ||||
|             // State Callback of PID_SECURITY_FAILURES_LOG
 | ||||
|             [](SecurityInterfaceObject* obj, uint8_t* data, uint8_t length, uint8_t* resultData, uint8_t& resultLength) -> uint8_t { | ||||
|                 // TODO
 | ||||
|                 return 0; | ||||
|             }), | ||||
|         new DataProperty( PID_TOOL_KEY, true, PDT_GENERIC_16, 1, ReadLv3 | WriteLv0, (uint16_t)0 ), // TODO: value (default is FDSK)
 | ||||
|         new DataProperty( PID_SECURITY_REPORT, true, PDT_BITSET8, 1, ReadLv3 | WriteLv0, (uint16_t)0 ), // TODO: value
 | ||||
|         new DataProperty( PID_SECURITY_REPORT_CONTROL, true, PDT_BINARY_INFORMATION, 1, ReadLv3 | WriteLv0, (uint16_t)0 ), // TODO: value
 | ||||
|         new DataProperty( PID_SEQUENCE_NUMBER_SENDING, true, PDT_GENERIC_06, 1, ReadLv3 | WriteLv0, (uint16_t)0 ), // TODO: value
 | ||||
|         new DataProperty( PID_ZONE_KEY_TABLE, true, PDT_GENERIC_19, 1, ReadLv3 | WriteLv0, (uint16_t)0 ), // TODO: value
 | ||||
|         new DataProperty( PID_GO_SECURITY_FLAGS, true, PDT_GENERIC_01, 1, ReadLv3 | WriteLv0, (uint16_t)0 ), // TODO: value
 | ||||
|         new DataProperty( PID_ROLE_TABLE, true, PDT_GENERIC_01, 1, ReadLv3 | WriteLv0, (uint16_t)0 ), // TODO: value
 | ||||
|     }; | ||||
|     initializeProperties(sizeof(properties), properties); | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
							
								
								
									
										13
									
								
								src/knx/security_interface_object.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/knx/security_interface_object.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include "config.h" | ||||
| #ifdef USE_DATASECURE | ||||
| 
 | ||||
| #include "interface_object.h" | ||||
| 
 | ||||
| class SecurityInterfaceObject: public InterfaceObject | ||||
| { | ||||
| public: | ||||
|   SecurityInterfaceObject(); | ||||
| }; | ||||
| #endif | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user