//*************************************************************************** // apps/include/crypto/controlse/csan_builder.hxx // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. The // ASF licenses this file to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance with the // License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations // under the License. // //************************************************************************** // Copyright 2024 NXP #pragma once //*************************************************************************** // Included Files //*************************************************************************** #include #include namespace Controlse { //*************************************************************************** // Class definitions //*************************************************************************** class CSanBuilder; class CSanBuilder { public: CSanBuilder() = default; CSanBuilder(const CSanBuilder &) = delete; CSanBuilder(CSanBuilder &&) = default; ~CSanBuilder(); CSanBuilder &operator=(const CSanBuilder &other) = delete; CSanBuilder *AddSan(uint8_t type, const char *value, size_t value_size); // result: pointer to dynamically allocated san (to be deleted with delete[]) // or error when size == 0 size_t Build(uint8_t **san); uint32_t GetNumberOfSan(); private: struct List { char *p; size_t size; uint8_t type; List *next; }; size_t total_size = 0; List *entry = nullptr; }; } // namespace Controlse