70 lines
2.1 KiB
C++
70 lines
2.1 KiB
C++
|
//***************************************************************************
|
||
|
// 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 <stddef.h>
|
||
|
#include <stdint.h>
|
||
|
|
||
|
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
|