Protocol++® (Protocolpp®)
v5.7.0
|
#include "include/jstream.h"
JSTREAM is the object in Protocol++® (ProtocolPP®) that holds all information pertaining to a stream or flow of packets. When processing packets in a cryptographic context, the packets require a set a parameters to process the information. This includes keys, IVs, salts, sequence numbers, type of flow, and other parameters
In Protocol++®, the parameters for a flow are gathered together in a security association. The type identifies to the user what protocol is being used in order to cast the jprotocol object to the correct type as well as the direction of processing. Streams that have packets with random IVs may also set the postprocess flag to signify to the testbench it's need to decrypt and verify the payload and checksum of the packet
The different constructors are useful for different situations. At times it may be necessary to keep the processing engine with the stream. In this case, the first constructor should be used:
Engines update the security association with new sequence numbers and IV values during processing allowing the engine to be deleted after updating the security association in the jstream object. This reduces the memory footprint of the stream object to only the security association, a string for the name and an enumerator
The second constructor can be used to generate a stream object with all information necessary for processing data in the stream. Use of the second constructor is for these situations:
The final constructor can be used with a security engine that's already been created
Fields may be set using the accessor function "set". They are templated to access the type of field desired. STREAMSIZE is necessary to provide support for CAAM/SEC shared descriptor size (in 32-bit words)
The security association and engine for the stream can be set using the functions below Security associations and engines are required to be wrapped in a shared pointer
Fields may be retrieved using the accessor "get" funcion. They are templated to retrieve the type of field requested
The security association can be retrieved by passing a shared pointer of the correct type found by calling the get_field<protocol_t>(field_t::TYPE) function
The encryption engine for the stream can be retrieved by passing the correct shared pointer to the get_engine() function. The type can be found in the field_t::TYPE
The encryption engine if not needed can be deleted from the stream by using the following function
For API Documentation:
For Additional Documentation:
The source code contained or described herein and all documents related to the source code (herein called "Material") are owned by John Peter Greninger and Sheila Rocha Greninger. Title to the Material remains with John Peter Greninger and Sheila Rocha Greninger. The Material contains trade secrets and proprietary and confidential information of John Peter Greninger and Sheila Rocha Greninger. The Material is protected by worldwide copyright and trade secret laws and treaty provisions. No part of the Material may be used, copied, reproduced, modified, published, uploaded, posted, transmitted, distributed, or disclosed in any way without prior express written consent of John Peter Greninger and Sheila Rocha Greninger (both are required)
No license under any patent, copyright, trade secret, or other intellectual property right is granted to or conferred upon you by disclosure or delivery of the Materials, either expressly, by implication, inducement, estoppel, or otherwise. Any license under such intellectual property rights must be express and approved by John Peter Greninger and Sheila Rocha Greninger in writing
Licensing information can be found at www.protocolpp.com/license with use of the binary forms permitted provided that the following conditions are met:
Use of the source code requires purchase of the source code. Source code can be purchased at www.protocolpp.com/shop
The name of its contributor may not be used to endorse or promote products derived from this software without specific prior written permission and licensing
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE