setting up vs
This commit is contained in:
Binary file not shown.
Binary file not shown.
BIN
src/client_backend/.vs/client_backend/v17/.suo
Normal file
BIN
src/client_backend/.vs/client_backend/v17/.suo
Normal file
Binary file not shown.
BIN
src/client_backend/.vs/client_backend/v17/Browse.VC.db
Normal file
BIN
src/client_backend/.vs/client_backend/v17/Browse.VC.db
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
23
src/client_backend/client_backend.cpp
Normal file
23
src/client_backend/client_backend.cpp
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <openssl/md5.h>
|
||||||
|
#include "md5hash.h"
|
||||||
|
int main() {
|
||||||
|
char md5Hash[2 * MD5_DIGEST_LENGTH + 1]; // +1 for null-terminator
|
||||||
|
md5_file("C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\x64\\Debug\\client_backend.exe", md5Hash);
|
||||||
|
printf("%s", md5Hash);
|
||||||
|
|
||||||
|
CURL* curl = curl_easy_init();
|
||||||
|
|
||||||
|
if (!curl) {
|
||||||
|
std::cerr << "Failed to initialize libcurl." << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "libcurl is correctly installed and initialized." << std::endl;
|
||||||
|
|
||||||
|
// Clean up libcurl
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
31
src/client_backend/client_backend.sln
Normal file
31
src/client_backend/client_backend.sln
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.7.34024.191
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client_backend", "client_backend.vcxproj", "{56E65283-AAC9-43F6-9613-72BE8D648AC4}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{56E65283-AAC9-43F6-9613-72BE8D648AC4}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{56E65283-AAC9-43F6-9613-72BE8D648AC4}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{56E65283-AAC9-43F6-9613-72BE8D648AC4}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{56E65283-AAC9-43F6-9613-72BE8D648AC4}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{56E65283-AAC9-43F6-9613-72BE8D648AC4}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{56E65283-AAC9-43F6-9613-72BE8D648AC4}.Release|x64.Build.0 = Release|x64
|
||||||
|
{56E65283-AAC9-43F6-9613-72BE8D648AC4}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{56E65283-AAC9-43F6-9613-72BE8D648AC4}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {90996107-AC8C-483D-8F02-807E693EDDED}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
147
src/client_backend/client_backend.vcxproj
Normal file
147
src/client_backend/client_backend.vcxproj
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>17.0</VCProjectVersion>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<ProjectGuid>{56e65283-aac9-43f6-9613-72be8d648ac4}</ProjectGuid>
|
||||||
|
<RootNamespace>clientbackend</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<PublicIncludeDirectories>c:\Program Files\OpenSSL-Win64\include\;</PublicIncludeDirectories>
|
||||||
|
<LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);c:\vcpkg\vcpkg-2023.08.09\installed\x64-windows\lib</LibraryPath>
|
||||||
|
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);c:\vcpkg\vcpkg-2023.08.09\installed\x64-windows\include\</IncludePath>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions);CURL_STATICLIB</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>c:\Program Files\OpenSSL-Win64\include\;c:\vcpkg\vcpkg-2023.08.09\installed\x64-windows\include\</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>c:\Program Files\OpenSSL-Win64\lib\;c:\vcpkg\vcpkg-2023.08.09\installed\x64-windows\lib</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>$(CoreLibraryDependencies);%(AdditionalDependencies); libcrypto.lib;libcurl.lib;</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="client_backend.cpp" />
|
||||||
|
<ClCompile Include="md5hash.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="md5hash.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
30
src/client_backend/client_backend.vcxproj.filters
Normal file
30
src/client_backend/client_backend.vcxproj.filters
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Quelldateien">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Headerdateien">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Ressourcendateien">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="client_backend.cpp">
|
||||||
|
<Filter>Quelldateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="md5hash.cpp">
|
||||||
|
<Filter>Headerdateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="md5hash.h">
|
||||||
|
<Filter>Headerdateien</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
4
src/client_backend/client_backend.vcxproj.user
Normal file
4
src/client_backend/client_backend.vcxproj.user
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup />
|
||||||
|
</Project>
|
||||||
36
src/client_backend/md5hash.cpp
Normal file
36
src/client_backend/md5hash.cpp
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#pragma warning(disable:4996)
|
||||||
|
#include "md5hash.h"
|
||||||
|
|
||||||
|
int md5_file(const char*path,char*md5Hash) {
|
||||||
|
std::ifstream file(path, std::ios::binary);
|
||||||
|
|
||||||
|
if (!file) {
|
||||||
|
std::cerr << "Error opening file." << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize OpenSSL's MD5 context
|
||||||
|
MD5_CTX md5Context;
|
||||||
|
MD5_Init(&md5Context);
|
||||||
|
|
||||||
|
// Read and update the context with the file's content
|
||||||
|
char buffer[1024];
|
||||||
|
while (file.good()) {
|
||||||
|
file.read(buffer, sizeof(buffer));
|
||||||
|
MD5_Update(&md5Context, buffer, file.gcount());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Finalize the MD5 hash and store it in result
|
||||||
|
unsigned char result[MD5_DIGEST_LENGTH];
|
||||||
|
MD5_Final(result, &md5Context);
|
||||||
|
|
||||||
|
// Close the file
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
// Store the MD5 hash in a char array
|
||||||
|
//char md5Hash[2 * MD5_DIGEST_LENGTH + 1]; // +1 for null-terminator
|
||||||
|
|
||||||
|
for (int i = 0; i < MD5_DIGEST_LENGTH; i++) {
|
||||||
|
snprintf(&md5Hash[i * 2], 3, "%02x", result[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
7
src/client_backend/md5hash.h
Normal file
7
src/client_backend/md5hash.h
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#pragma warning(disable:4996)
|
||||||
|
#pragma once
|
||||||
|
#include <openssl/md5.h>
|
||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <string>
|
||||||
|
int md5_file(const char* path, char* md5Hash);
|
||||||
11
src/client_backend/x64/Debug/client_backend.exe.recipe
Normal file
11
src/client_backend/x64/Debug/client_backend.exe.recipe
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
<ProjectOutputs>
|
||||||
|
<ProjectOutput>
|
||||||
|
<FullPath>C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\client_backend.exe</FullPath>
|
||||||
|
</ProjectOutput>
|
||||||
|
</ProjectOutputs>
|
||||||
|
<ContentFiles />
|
||||||
|
<SatelliteDlls />
|
||||||
|
<NonRecipeFileRefs />
|
||||||
|
</Project>
|
||||||
BIN
src/client_backend/x64/Debug/client_backend.ilk
Normal file
BIN
src/client_backend/x64/Debug/client_backend.ilk
Normal file
Binary file not shown.
1
src/client_backend/x64/Debug/client_backend.log
Normal file
1
src/client_backend/x64/Debug/client_backend.log
Normal file
@@ -0,0 +1 @@
|
|||||||
|
client_backend.vcxproj -> C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\client_backend.exe
|
||||||
BIN
src/client_backend/x64/Debug/client_backend.pdb
Normal file
BIN
src/client_backend/x64/Debug/client_backend.pdb
Normal file
Binary file not shown.
Binary file not shown.
BIN
src/client_backend/x64/Debug/client_backend.tlog/CL.read.1.tlog
Normal file
BIN
src/client_backend/x64/Debug/client_backend.tlog/CL.read.1.tlog
Normal file
Binary file not shown.
BIN
src/client_backend/x64/Debug/client_backend.tlog/CL.write.1.tlog
Normal file
BIN
src/client_backend/x64/Debug/client_backend.tlog/CL.write.1.tlog
Normal file
Binary file not shown.
@@ -0,0 +1,2 @@
|
|||||||
|
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp;C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\client_backend.obj
|
||||||
|
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\md5hash.cpp;C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\md5hash.obj
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.37.32822:TargetPlatformVersion=10.0.22621.0:VcpkgTriplet=x64-windows:
|
||||||
|
Debug|x64|C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\client_backend.exe
|
||||||
BIN
src/client_backend/x64/Debug/vc143.idb
Normal file
BIN
src/client_backend/x64/Debug/vc143.idb
Normal file
Binary file not shown.
BIN
src/client_backend/x64/Debug/vc143.pdb
Normal file
BIN
src/client_backend/x64/Debug/vc143.pdb
Normal file
Binary file not shown.
1
src/client_backend/x64/Debug/vcpkg.applocal.log
Normal file
1
src/client_backend/x64/Debug/vcpkg.applocal.log
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
4
src/client_backend/x64/Release/client_backend.log
Normal file
4
src/client_backend/x64/Release/client_backend.log
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
client_backend.cpp
|
||||||
|
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(2,10): fatal error C1083: Datei (Include) kann nicht geöffnet werden: "openssl/md5.h": No such file or directory
|
||||||
|
md5hash.cpp
|
||||||
|
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\md5hash.h(3,10): fatal error C1083: Datei (Include) kann nicht geöffnet werden: "openssl/md5.h": No such file or directory
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<EFBFBD><EFBFBD>
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.37.32822:TargetPlatformVersion=10.0.22621.0:
|
||||||
|
Release|x64|C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\|
|
||||||
BIN
src/client_backend/x64/Release/vc143.pdb
Normal file
BIN
src/client_backend/x64/Release/vc143.pdb
Normal file
Binary file not shown.
22
src/openssl/__DECC_INCLUDE_EPILOGUE.H
Normal file
22
src/openssl/__DECC_INCLUDE_EPILOGUE.H
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is only used by HP C/C++ on VMS, and is included automatically
|
||||||
|
* after each header file from this directory
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The C++ compiler doesn't understand these pragmas, even though it
|
||||||
|
* understands the corresponding command line qualifier.
|
||||||
|
*/
|
||||||
|
#ifndef __cplusplus
|
||||||
|
/* restore state. Must correspond to the save in __decc_include_prologue.h */
|
||||||
|
# pragma names restore
|
||||||
|
#endif
|
||||||
26
src/openssl/__DECC_INCLUDE_PROLOGUE.H
Normal file
26
src/openssl/__DECC_INCLUDE_PROLOGUE.H
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is only used by HP C/C++ on VMS, and is included automatically
|
||||||
|
* after each header file from this directory
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The C++ compiler doesn't understand these pragmas, even though it
|
||||||
|
* understands the corresponding command line qualifier.
|
||||||
|
*/
|
||||||
|
#ifndef __cplusplus
|
||||||
|
/* save state */
|
||||||
|
# pragma names save
|
||||||
|
/* have the compiler shorten symbols larger than 31 chars to 23 chars
|
||||||
|
* followed by a 8 hex char CRC
|
||||||
|
*/
|
||||||
|
# pragma names as_is,shortened
|
||||||
|
#endif
|
||||||
111
src/openssl/aes.h
Normal file
111
src/openssl/aes.h
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_AES_H
|
||||||
|
# define OPENSSL_AES_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_AES_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# include <stddef.h>
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define AES_BLOCK_SIZE 16
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
|
||||||
|
# define AES_ENCRYPT 1
|
||||||
|
# define AES_DECRYPT 0
|
||||||
|
|
||||||
|
# define AES_MAXNR 14
|
||||||
|
|
||||||
|
|
||||||
|
/* This should be a hidden type, but EVP requires that the size be known */
|
||||||
|
struct aes_key_st {
|
||||||
|
# ifdef AES_LONG
|
||||||
|
unsigned long rd_key[4 * (AES_MAXNR + 1)];
|
||||||
|
# else
|
||||||
|
unsigned int rd_key[4 * (AES_MAXNR + 1)];
|
||||||
|
# endif
|
||||||
|
int rounds;
|
||||||
|
};
|
||||||
|
typedef struct aes_key_st AES_KEY;
|
||||||
|
|
||||||
|
# endif
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const char *AES_options(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
|
||||||
|
AES_KEY *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
|
||||||
|
AES_KEY *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void AES_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
const AES_KEY *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void AES_decrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
const AES_KEY *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
const AES_KEY *key, const int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
size_t length, const AES_KEY *key,
|
||||||
|
unsigned char *ivec, const int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
size_t length, const AES_KEY *key,
|
||||||
|
unsigned char *ivec, int *num, const int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
size_t length, const AES_KEY *key,
|
||||||
|
unsigned char *ivec, int *num, const int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
size_t length, const AES_KEY *key,
|
||||||
|
unsigned char *ivec, int *num, const int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
size_t length, const AES_KEY *key,
|
||||||
|
unsigned char *ivec, int *num);
|
||||||
|
|
||||||
|
/* NB: the IV is _two_ blocks long */
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
size_t length, const AES_KEY *key,
|
||||||
|
unsigned char *ivec, const int enc);
|
||||||
|
/* NB: the IV is _four_ blocks long */
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
size_t length, const AES_KEY *key, const AES_KEY *key2,
|
||||||
|
const unsigned char *ivec, const int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int AES_wrap_key(AES_KEY *key, const unsigned char *iv,
|
||||||
|
unsigned char *out, const unsigned char *in,
|
||||||
|
unsigned int inlen);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
|
||||||
|
unsigned char *out, const unsigned char *in,
|
||||||
|
unsigned int inlen);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
964
src/openssl/asn1.h.in
Normal file
964
src/openssl/asn1.h.in
Normal file
@@ -0,0 +1,964 @@
|
|||||||
|
/*
|
||||||
|
* {- join("\n * ", @autowarntext) -}
|
||||||
|
*
|
||||||
|
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
{-
|
||||||
|
use OpenSSL::stackhash qw(generate_stack_macros);
|
||||||
|
-}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ASN1_H
|
||||||
|
# define OPENSSL_ASN1_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_ASN1_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
# include <stdio.h>
|
||||||
|
# endif
|
||||||
|
# include <time.h>
|
||||||
|
# include <openssl/e_os2.h>
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/bio.h>
|
||||||
|
# include <openssl/safestack.h>
|
||||||
|
# include <openssl/asn1err.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# include <openssl/bn.h>
|
||||||
|
|
||||||
|
# ifdef OPENSSL_BUILD_SHLIBCRYPTO
|
||||||
|
# undef OPENSSL_EXTERN
|
||||||
|
# define OPENSSL_EXTERN OPENSSL_EXPORT
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# define V_ASN1_UNIVERSAL 0x00
|
||||||
|
# define V_ASN1_APPLICATION 0x40
|
||||||
|
# define V_ASN1_CONTEXT_SPECIFIC 0x80
|
||||||
|
# define V_ASN1_PRIVATE 0xc0
|
||||||
|
|
||||||
|
# define V_ASN1_CONSTRUCTED 0x20
|
||||||
|
# define V_ASN1_PRIMITIVE_TAG 0x1f
|
||||||
|
# define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG
|
||||||
|
|
||||||
|
# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */
|
||||||
|
# define V_ASN1_OTHER -3/* used in ASN1_TYPE */
|
||||||
|
# define V_ASN1_ANY -4/* used in ASN1 template code */
|
||||||
|
|
||||||
|
# define V_ASN1_UNDEF -1
|
||||||
|
/* ASN.1 tag values */
|
||||||
|
# define V_ASN1_EOC 0
|
||||||
|
# define V_ASN1_BOOLEAN 1 /**/
|
||||||
|
# define V_ASN1_INTEGER 2
|
||||||
|
# define V_ASN1_BIT_STRING 3
|
||||||
|
# define V_ASN1_OCTET_STRING 4
|
||||||
|
# define V_ASN1_NULL 5
|
||||||
|
# define V_ASN1_OBJECT 6
|
||||||
|
# define V_ASN1_OBJECT_DESCRIPTOR 7
|
||||||
|
# define V_ASN1_EXTERNAL 8
|
||||||
|
# define V_ASN1_REAL 9
|
||||||
|
# define V_ASN1_ENUMERATED 10
|
||||||
|
# define V_ASN1_UTF8STRING 12
|
||||||
|
# define V_ASN1_SEQUENCE 16
|
||||||
|
# define V_ASN1_SET 17
|
||||||
|
# define V_ASN1_NUMERICSTRING 18 /**/
|
||||||
|
# define V_ASN1_PRINTABLESTRING 19
|
||||||
|
# define V_ASN1_T61STRING 20
|
||||||
|
# define V_ASN1_TELETEXSTRING 20/* alias */
|
||||||
|
# define V_ASN1_VIDEOTEXSTRING 21 /**/
|
||||||
|
# define V_ASN1_IA5STRING 22
|
||||||
|
# define V_ASN1_UTCTIME 23
|
||||||
|
# define V_ASN1_GENERALIZEDTIME 24 /**/
|
||||||
|
# define V_ASN1_GRAPHICSTRING 25 /**/
|
||||||
|
# define V_ASN1_ISO64STRING 26 /**/
|
||||||
|
# define V_ASN1_VISIBLESTRING 26/* alias */
|
||||||
|
# define V_ASN1_GENERALSTRING 27 /**/
|
||||||
|
# define V_ASN1_UNIVERSALSTRING 28 /**/
|
||||||
|
# define V_ASN1_BMPSTRING 30
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NB the constants below are used internally by ASN1_INTEGER
|
||||||
|
* and ASN1_ENUMERATED to indicate the sign. They are *not* on
|
||||||
|
* the wire tag values.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define V_ASN1_NEG 0x100
|
||||||
|
# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG)
|
||||||
|
# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG)
|
||||||
|
|
||||||
|
/* For use with d2i_ASN1_type_bytes() */
|
||||||
|
# define B_ASN1_NUMERICSTRING 0x0001
|
||||||
|
# define B_ASN1_PRINTABLESTRING 0x0002
|
||||||
|
# define B_ASN1_T61STRING 0x0004
|
||||||
|
# define B_ASN1_TELETEXSTRING 0x0004
|
||||||
|
# define B_ASN1_VIDEOTEXSTRING 0x0008
|
||||||
|
# define B_ASN1_IA5STRING 0x0010
|
||||||
|
# define B_ASN1_GRAPHICSTRING 0x0020
|
||||||
|
# define B_ASN1_ISO64STRING 0x0040
|
||||||
|
# define B_ASN1_VISIBLESTRING 0x0040
|
||||||
|
# define B_ASN1_GENERALSTRING 0x0080
|
||||||
|
# define B_ASN1_UNIVERSALSTRING 0x0100
|
||||||
|
# define B_ASN1_OCTET_STRING 0x0200
|
||||||
|
# define B_ASN1_BIT_STRING 0x0400
|
||||||
|
# define B_ASN1_BMPSTRING 0x0800
|
||||||
|
# define B_ASN1_UNKNOWN 0x1000
|
||||||
|
# define B_ASN1_UTF8STRING 0x2000
|
||||||
|
# define B_ASN1_UTCTIME 0x4000
|
||||||
|
# define B_ASN1_GENERALIZEDTIME 0x8000
|
||||||
|
# define B_ASN1_SEQUENCE 0x10000
|
||||||
|
/* For use with ASN1_mbstring_copy() */
|
||||||
|
# define MBSTRING_FLAG 0x1000
|
||||||
|
# define MBSTRING_UTF8 (MBSTRING_FLAG)
|
||||||
|
# define MBSTRING_ASC (MBSTRING_FLAG|1)
|
||||||
|
# define MBSTRING_BMP (MBSTRING_FLAG|2)
|
||||||
|
# define MBSTRING_UNIV (MBSTRING_FLAG|4)
|
||||||
|
# define SMIME_OLDMIME 0x400
|
||||||
|
# define SMIME_CRLFEOL 0x800
|
||||||
|
# define SMIME_STREAM 0x1000
|
||||||
|
|
||||||
|
/* Stacks for types not otherwise defined in this header */
|
||||||
|
{-
|
||||||
|
generate_stack_macros("X509_ALGOR");
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */
|
||||||
|
/*
|
||||||
|
* This indicates that the ASN1_STRING is not a real value but just a place
|
||||||
|
* holder for the location where indefinite length constructed data should be
|
||||||
|
* inserted in the memory buffer
|
||||||
|
*/
|
||||||
|
# define ASN1_STRING_FLAG_NDEF 0x010
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This flag is used by the CMS code to indicate that a string is not
|
||||||
|
* complete and is a place holder for content when it had all been accessed.
|
||||||
|
* The flag will be reset when content has been written to it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_STRING_FLAG_CONT 0x020
|
||||||
|
/*
|
||||||
|
* This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING
|
||||||
|
* type.
|
||||||
|
*/
|
||||||
|
# define ASN1_STRING_FLAG_MSTRING 0x040
|
||||||
|
/* String is embedded and only content should be freed */
|
||||||
|
# define ASN1_STRING_FLAG_EMBED 0x080
|
||||||
|
/* String should be parsed in RFC 5280's time format */
|
||||||
|
# define ASN1_STRING_FLAG_X509_TIME 0x100
|
||||||
|
/* This is the base type that holds just about everything :-) */
|
||||||
|
struct asn1_string_st {
|
||||||
|
int length;
|
||||||
|
int type;
|
||||||
|
unsigned char *data;
|
||||||
|
/*
|
||||||
|
* The value of the following field depends on the type being held. It
|
||||||
|
* is mostly being used for BIT_STRING so if the input data has a
|
||||||
|
* non-zero 'unused bits' value, it will be handled correctly
|
||||||
|
*/
|
||||||
|
long flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ASN1_ENCODING structure: this is used to save the received encoding of an
|
||||||
|
* ASN1 type. This is useful to get round problems with invalid encodings
|
||||||
|
* which can break signatures.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct ASN1_ENCODING_st {
|
||||||
|
unsigned char *enc; /* DER encoding */
|
||||||
|
long len; /* Length of encoding */
|
||||||
|
int modified; /* set to 1 if 'enc' is invalid */
|
||||||
|
} ASN1_ENCODING;
|
||||||
|
|
||||||
|
/* Used with ASN1 LONG type: if a long is set to this it is omitted */
|
||||||
|
# define ASN1_LONG_UNDEF 0x7fffffffL
|
||||||
|
|
||||||
|
# define STABLE_FLAGS_MALLOC 0x01
|
||||||
|
/*
|
||||||
|
* A zero passed to ASN1_STRING_TABLE_new_add for the flags is interpreted
|
||||||
|
* as "don't change" and STABLE_FLAGS_MALLOC is always set. By setting
|
||||||
|
* STABLE_FLAGS_MALLOC only we can clear the existing value. Use the alias
|
||||||
|
* STABLE_FLAGS_CLEAR to reflect this.
|
||||||
|
*/
|
||||||
|
# define STABLE_FLAGS_CLEAR STABLE_FLAGS_MALLOC
|
||||||
|
# define STABLE_NO_MASK 0x02
|
||||||
|
# define DIRSTRING_TYPE \
|
||||||
|
(B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING)
|
||||||
|
# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING)
|
||||||
|
|
||||||
|
struct asn1_string_table_st {
|
||||||
|
int nid;
|
||||||
|
long minsize;
|
||||||
|
long maxsize;
|
||||||
|
unsigned long mask;
|
||||||
|
unsigned long flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("ASN1_STRING_TABLE");
|
||||||
|
-}
|
||||||
|
|
||||||
|
/* size limits: this stuff is taken straight from RFC2459 */
|
||||||
|
|
||||||
|
# define ub_name 32768
|
||||||
|
# define ub_common_name 64
|
||||||
|
# define ub_locality_name 128
|
||||||
|
# define ub_state_name 128
|
||||||
|
# define ub_organization_name 64
|
||||||
|
# define ub_organization_unit_name 64
|
||||||
|
# define ub_title 64
|
||||||
|
# define ub_email_address 128
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Declarations for template structures: for full definitions see asn1t.h
|
||||||
|
*/
|
||||||
|
typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE;
|
||||||
|
typedef struct ASN1_TLC_st ASN1_TLC;
|
||||||
|
/* This is just an opaque pointer */
|
||||||
|
typedef struct ASN1_VALUE_st ASN1_VALUE;
|
||||||
|
|
||||||
|
/* Declare ASN1 functions: the implement macro in in asn1t.h */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The mysterious 'extern' that's passed to some macros is innocuous,
|
||||||
|
* and is there to quiet pre-C99 compilers that may complain about empty
|
||||||
|
* arguments in macro calls.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_FUNCTIONS_attr(attr, type) \
|
||||||
|
DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, type)
|
||||||
|
# define DECLARE_ASN1_FUNCTIONS(type) \
|
||||||
|
DECLARE_ASN1_FUNCTIONS_attr(extern, type)
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_ALLOC_FUNCTIONS_attr(attr, type) \
|
||||||
|
DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, type)
|
||||||
|
# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \
|
||||||
|
DECLARE_ASN1_ALLOC_FUNCTIONS_attr(extern, type)
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, name) \
|
||||||
|
DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name)
|
||||||
|
# define DECLARE_ASN1_FUNCTIONS_name(type, name) \
|
||||||
|
DECLARE_ASN1_FUNCTIONS_name_attr(extern, type, name)
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, itname, name) \
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \
|
||||||
|
DECLARE_ASN1_ITEM_attr(attr, itname)
|
||||||
|
# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_attr(extern, type, itname, name)
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) \
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, name, name)
|
||||||
|
# define DECLARE_ASN1_ENCODE_FUNCTIONS_name(type, name) \
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(extern, type, name)
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \
|
||||||
|
attr type *d2i_##name(type **a, const unsigned char **in, long len); \
|
||||||
|
attr int i2d_##name(const type *a, unsigned char **out);
|
||||||
|
# define DECLARE_ASN1_ENCODE_FUNCTIONS_only(type, name) \
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(extern, type, name)
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_NDEF_FUNCTION_attr(attr, name) \
|
||||||
|
attr int i2d_##name##_NDEF(const name *a, unsigned char **out);
|
||||||
|
# define DECLARE_ASN1_NDEF_FUNCTION(name) \
|
||||||
|
DECLARE_ASN1_NDEF_FUNCTION_attr(extern, name)
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \
|
||||||
|
attr type *name##_new(void); \
|
||||||
|
attr void name##_free(type *a);
|
||||||
|
# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
|
||||||
|
DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(extern, type, name)
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_DUP_FUNCTION_attr(attr, type) \
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, type)
|
||||||
|
# define DECLARE_ASN1_DUP_FUNCTION(type) \
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION_attr(extern, type)
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, name) \
|
||||||
|
attr type *name##_dup(const type *a);
|
||||||
|
# define DECLARE_ASN1_DUP_FUNCTION_name(type, name) \
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION_name_attr(extern, type, name)
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_PRINT_FUNCTION_attr(attr, stname) \
|
||||||
|
DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, stname)
|
||||||
|
# define DECLARE_ASN1_PRINT_FUNCTION(stname) \
|
||||||
|
DECLARE_ASN1_PRINT_FUNCTION_attr(extern, stname)
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, fname) \
|
||||||
|
attr int fname##_print_ctx(BIO *out, const stname *x, int indent, \
|
||||||
|
const ASN1_PCTX *pctx);
|
||||||
|
# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \
|
||||||
|
DECLARE_ASN1_PRINT_FUNCTION_fname_attr(extern, stname, fname)
|
||||||
|
|
||||||
|
# define D2I_OF(type) type *(*)(type **,const unsigned char **,long)
|
||||||
|
# define I2D_OF(type) int (*)(const type *,unsigned char **)
|
||||||
|
|
||||||
|
# define CHECKED_D2I_OF(type, d2i) \
|
||||||
|
((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0)))
|
||||||
|
# define CHECKED_I2D_OF(type, i2d) \
|
||||||
|
((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0)))
|
||||||
|
# define CHECKED_NEW_OF(type, xnew) \
|
||||||
|
((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0)))
|
||||||
|
# define CHECKED_PTR_OF(type, p) \
|
||||||
|
((void*) (1 ? p : (type*)0))
|
||||||
|
# define CHECKED_PPTR_OF(type, p) \
|
||||||
|
((void**) (1 ? p : (type**)0))
|
||||||
|
|
||||||
|
# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long)
|
||||||
|
# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(const type *,unsigned char **)
|
||||||
|
# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type)
|
||||||
|
|
||||||
|
typedef void *d2i_of_void(void **, const unsigned char **, long);
|
||||||
|
typedef int i2d_of_void(const void *, unsigned char **);
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* The following macros and typedefs allow an ASN1_ITEM
|
||||||
|
* to be embedded in a structure and referenced. Since
|
||||||
|
* the ASN1_ITEM pointers need to be globally accessible
|
||||||
|
* (possibly from shared libraries) they may exist in
|
||||||
|
* different forms. On platforms that support it the
|
||||||
|
* ASN1_ITEM structure itself will be globally exported.
|
||||||
|
* Other platforms will export a function that returns
|
||||||
|
* an ASN1_ITEM pointer.
|
||||||
|
*
|
||||||
|
* To handle both cases transparently the macros below
|
||||||
|
* should be used instead of hard coding an ASN1_ITEM
|
||||||
|
* pointer in a structure.
|
||||||
|
*
|
||||||
|
* The structure will look like this:
|
||||||
|
*
|
||||||
|
* typedef struct SOMETHING_st {
|
||||||
|
* ...
|
||||||
|
* ASN1_ITEM_EXP *iptr;
|
||||||
|
* ...
|
||||||
|
* } SOMETHING;
|
||||||
|
*
|
||||||
|
* It would be initialised as e.g.:
|
||||||
|
*
|
||||||
|
* SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...};
|
||||||
|
*
|
||||||
|
* and the actual pointer extracted with:
|
||||||
|
*
|
||||||
|
* const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr);
|
||||||
|
*
|
||||||
|
* Finally an ASN1_ITEM pointer can be extracted from an
|
||||||
|
* appropriate reference with: ASN1_ITEM_rptr(X509). This
|
||||||
|
* would be used when a function takes an ASN1_ITEM * argument.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Platforms that can't easily handle shared global variables are declared as
|
||||||
|
* functions returning ASN1_ITEM pointers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ASN1_ITEM pointer exported type */
|
||||||
|
typedef const ASN1_ITEM *ASN1_ITEM_EXP (void);
|
||||||
|
|
||||||
|
/* Macro to obtain ASN1_ITEM pointer from exported type */
|
||||||
|
# define ASN1_ITEM_ptr(iptr) (iptr())
|
||||||
|
|
||||||
|
/* Macro to include ASN1_ITEM pointer from base type */
|
||||||
|
# define ASN1_ITEM_ref(iptr) (iptr##_it)
|
||||||
|
|
||||||
|
# define ASN1_ITEM_rptr(ref) (ref##_it())
|
||||||
|
|
||||||
|
# define DECLARE_ASN1_ITEM_attr(attr, name) \
|
||||||
|
attr const ASN1_ITEM * name##_it(void);
|
||||||
|
# define DECLARE_ASN1_ITEM(name) \
|
||||||
|
DECLARE_ASN1_ITEM_attr(extern, name)
|
||||||
|
|
||||||
|
/* Parameters used by ASN1_STRING_print_ex() */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These determine which characters to escape: RFC2253 special characters,
|
||||||
|
* control characters and MSB set characters
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_STRFLGS_ESC_2253 1
|
||||||
|
# define ASN1_STRFLGS_ESC_CTRL 2
|
||||||
|
# define ASN1_STRFLGS_ESC_MSB 4
|
||||||
|
|
||||||
|
/* Lower 8 bits are reserved as an output type specifier */
|
||||||
|
# define ASN1_DTFLGS_TYPE_MASK 0x0FUL
|
||||||
|
# define ASN1_DTFLGS_RFC822 0x00UL
|
||||||
|
# define ASN1_DTFLGS_ISO8601 0x01UL
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This flag determines how we do escaping: normally RC2253 backslash only,
|
||||||
|
* set this to use backslash and quote.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_STRFLGS_ESC_QUOTE 8
|
||||||
|
|
||||||
|
/* These three flags are internal use only. */
|
||||||
|
|
||||||
|
/* Character is a valid PrintableString character */
|
||||||
|
# define CHARTYPE_PRINTABLESTRING 0x10
|
||||||
|
/* Character needs escaping if it is the first character */
|
||||||
|
# define CHARTYPE_FIRST_ESC_2253 0x20
|
||||||
|
/* Character needs escaping if it is the last character */
|
||||||
|
# define CHARTYPE_LAST_ESC_2253 0x40
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NB the internal flags are safely reused below by flags handled at the top
|
||||||
|
* level.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If this is set we convert all character strings to UTF8 first
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_STRFLGS_UTF8_CONVERT 0x10
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If this is set we don't attempt to interpret content: just assume all
|
||||||
|
* strings are 1 byte per character. This will produce some pretty odd
|
||||||
|
* looking output!
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_STRFLGS_IGNORE_TYPE 0x20
|
||||||
|
|
||||||
|
/* If this is set we include the string type in the output */
|
||||||
|
# define ASN1_STRFLGS_SHOW_TYPE 0x40
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This determines which strings to display and which to 'dump' (hex dump of
|
||||||
|
* content octets or DER encoding). We can only dump non character strings or
|
||||||
|
* everything. If we don't dump 'unknown' they are interpreted as character
|
||||||
|
* strings with 1 octet per character and are subject to the usual escaping
|
||||||
|
* options.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_STRFLGS_DUMP_ALL 0x80
|
||||||
|
# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These determine what 'dumping' does, we can dump the content octets or the
|
||||||
|
* DER encoding: both use the RFC2253 #XXXXX notation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_STRFLGS_DUMP_DER 0x200
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This flag specifies that RC2254 escaping shall be performed.
|
||||||
|
*/
|
||||||
|
#define ASN1_STRFLGS_ESC_2254 0x400
|
||||||
|
|
||||||
|
/*
|
||||||
|
* All the string flags consistent with RFC2253, escaping control characters
|
||||||
|
* isn't essential in RFC2253 but it is advisable anyway.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \
|
||||||
|
ASN1_STRFLGS_ESC_CTRL | \
|
||||||
|
ASN1_STRFLGS_ESC_MSB | \
|
||||||
|
ASN1_STRFLGS_UTF8_CONVERT | \
|
||||||
|
ASN1_STRFLGS_DUMP_UNKNOWN | \
|
||||||
|
ASN1_STRFLGS_DUMP_DER)
|
||||||
|
|
||||||
|
|
||||||
|
struct asn1_type_st {
|
||||||
|
int type;
|
||||||
|
union {
|
||||||
|
char *ptr;
|
||||||
|
ASN1_BOOLEAN boolean;
|
||||||
|
ASN1_STRING *asn1_string;
|
||||||
|
ASN1_OBJECT *object;
|
||||||
|
ASN1_INTEGER *integer;
|
||||||
|
ASN1_ENUMERATED *enumerated;
|
||||||
|
ASN1_BIT_STRING *bit_string;
|
||||||
|
ASN1_OCTET_STRING *octet_string;
|
||||||
|
ASN1_PRINTABLESTRING *printablestring;
|
||||||
|
ASN1_T61STRING *t61string;
|
||||||
|
ASN1_IA5STRING *ia5string;
|
||||||
|
ASN1_GENERALSTRING *generalstring;
|
||||||
|
ASN1_BMPSTRING *bmpstring;
|
||||||
|
ASN1_UNIVERSALSTRING *universalstring;
|
||||||
|
ASN1_UTCTIME *utctime;
|
||||||
|
ASN1_GENERALIZEDTIME *generalizedtime;
|
||||||
|
ASN1_VISIBLESTRING *visiblestring;
|
||||||
|
ASN1_UTF8STRING *utf8string;
|
||||||
|
/*
|
||||||
|
* set and sequence are left complete and still contain the set or
|
||||||
|
* sequence bytes
|
||||||
|
*/
|
||||||
|
ASN1_STRING *set;
|
||||||
|
ASN1_STRING *sequence;
|
||||||
|
ASN1_VALUE *asn1_value;
|
||||||
|
} value;
|
||||||
|
};
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("ASN1_TYPE");
|
||||||
|
-}
|
||||||
|
|
||||||
|
typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY;
|
||||||
|
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY)
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SET_ANY)
|
||||||
|
|
||||||
|
/* This is used to contain a list of bit names */
|
||||||
|
typedef struct BIT_STRING_BITNAME_st {
|
||||||
|
int bitnum;
|
||||||
|
const char *lname;
|
||||||
|
const char *sname;
|
||||||
|
} BIT_STRING_BITNAME;
|
||||||
|
|
||||||
|
# define B_ASN1_TIME \
|
||||||
|
B_ASN1_UTCTIME | \
|
||||||
|
B_ASN1_GENERALIZEDTIME
|
||||||
|
|
||||||
|
# define B_ASN1_PRINTABLE \
|
||||||
|
B_ASN1_NUMERICSTRING| \
|
||||||
|
B_ASN1_PRINTABLESTRING| \
|
||||||
|
B_ASN1_T61STRING| \
|
||||||
|
B_ASN1_IA5STRING| \
|
||||||
|
B_ASN1_BIT_STRING| \
|
||||||
|
B_ASN1_UNIVERSALSTRING|\
|
||||||
|
B_ASN1_BMPSTRING|\
|
||||||
|
B_ASN1_UTF8STRING|\
|
||||||
|
B_ASN1_SEQUENCE|\
|
||||||
|
B_ASN1_UNKNOWN
|
||||||
|
|
||||||
|
# define B_ASN1_DIRECTORYSTRING \
|
||||||
|
B_ASN1_PRINTABLESTRING| \
|
||||||
|
B_ASN1_TELETEXSTRING|\
|
||||||
|
B_ASN1_BMPSTRING|\
|
||||||
|
B_ASN1_UNIVERSALSTRING|\
|
||||||
|
B_ASN1_UTF8STRING
|
||||||
|
|
||||||
|
# define B_ASN1_DISPLAYTEXT \
|
||||||
|
B_ASN1_IA5STRING| \
|
||||||
|
B_ASN1_VISIBLESTRING| \
|
||||||
|
B_ASN1_BMPSTRING|\
|
||||||
|
B_ASN1_UTF8STRING
|
||||||
|
|
||||||
|
DECLARE_ASN1_ALLOC_FUNCTIONS_name(ASN1_TYPE, ASN1_TYPE)
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)
|
||||||
|
|
||||||
|
int ASN1_TYPE_get(const ASN1_TYPE *a);
|
||||||
|
void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value);
|
||||||
|
int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value);
|
||||||
|
int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b);
|
||||||
|
|
||||||
|
ASN1_TYPE *ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t);
|
||||||
|
void *ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t);
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("ASN1_OBJECT");
|
||||||
|
-}
|
||||||
|
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_OBJECT)
|
||||||
|
|
||||||
|
ASN1_STRING *ASN1_STRING_new(void);
|
||||||
|
void ASN1_STRING_free(ASN1_STRING *a);
|
||||||
|
void ASN1_STRING_clear_free(ASN1_STRING *a);
|
||||||
|
int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str);
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(ASN1_STRING)
|
||||||
|
ASN1_STRING *ASN1_STRING_type_new(int type);
|
||||||
|
int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b);
|
||||||
|
/*
|
||||||
|
* Since this is used to store all sorts of things, via macros, for now,
|
||||||
|
* make its data void *
|
||||||
|
*/
|
||||||
|
int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
|
||||||
|
void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len);
|
||||||
|
int ASN1_STRING_length(const ASN1_STRING *x);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ASN1_STRING_length_set(ASN1_STRING *x, int n);
|
||||||
|
# endif
|
||||||
|
int ASN1_STRING_type(const ASN1_STRING *x);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
OSSL_DEPRECATEDIN_1_1_0 unsigned char *ASN1_STRING_data(ASN1_STRING *x);
|
||||||
|
# endif
|
||||||
|
const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x);
|
||||||
|
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING)
|
||||||
|
int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length);
|
||||||
|
int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value);
|
||||||
|
int ASN1_BIT_STRING_get_bit(const ASN1_BIT_STRING *a, int n);
|
||||||
|
int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a,
|
||||||
|
const unsigned char *flags, int flags_len);
|
||||||
|
|
||||||
|
int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs,
|
||||||
|
BIT_STRING_BITNAME *tbl, int indent);
|
||||||
|
int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl);
|
||||||
|
int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value,
|
||||||
|
BIT_STRING_BITNAME *tbl);
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("ASN1_INTEGER");
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER)
|
||||||
|
ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
|
||||||
|
long length);
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(ASN1_INTEGER)
|
||||||
|
int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y);
|
||||||
|
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED)
|
||||||
|
|
||||||
|
int ASN1_UTCTIME_check(const ASN1_UTCTIME *a);
|
||||||
|
ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t);
|
||||||
|
ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
|
||||||
|
int offset_day, long offset_sec);
|
||||||
|
int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str);
|
||||||
|
int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t);
|
||||||
|
|
||||||
|
int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a);
|
||||||
|
ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
|
||||||
|
time_t t);
|
||||||
|
ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
|
||||||
|
time_t t, int offset_day,
|
||||||
|
long offset_sec);
|
||||||
|
int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str);
|
||||||
|
|
||||||
|
int ASN1_TIME_diff(int *pday, int *psec,
|
||||||
|
const ASN1_TIME *from, const ASN1_TIME *to);
|
||||||
|
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING)
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(ASN1_OCTET_STRING)
|
||||||
|
int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a,
|
||||||
|
const ASN1_OCTET_STRING *b);
|
||||||
|
int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data,
|
||||||
|
int len);
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("ASN1_UTF8STRING");
|
||||||
|
-}
|
||||||
|
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_NULL)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING)
|
||||||
|
|
||||||
|
int UTF8_getc(const unsigned char *str, int len, unsigned long *val);
|
||||||
|
int UTF8_putc(unsigned char *str, int len, unsigned long value);
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("ASN1_GENERALSTRING");
|
||||||
|
-}
|
||||||
|
|
||||||
|
DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE)
|
||||||
|
|
||||||
|
DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING)
|
||||||
|
DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ASN1_TIME)
|
||||||
|
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(ASN1_TIME)
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(ASN1_UTCTIME)
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(ASN1_GENERALIZEDTIME)
|
||||||
|
|
||||||
|
DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF)
|
||||||
|
|
||||||
|
ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t);
|
||||||
|
ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t,
|
||||||
|
int offset_day, long offset_sec);
|
||||||
|
int ASN1_TIME_check(const ASN1_TIME *t);
|
||||||
|
ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t,
|
||||||
|
ASN1_GENERALIZEDTIME **out);
|
||||||
|
int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
|
||||||
|
int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str);
|
||||||
|
int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm);
|
||||||
|
int ASN1_TIME_normalize(ASN1_TIME *s);
|
||||||
|
int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t);
|
||||||
|
int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b);
|
||||||
|
|
||||||
|
int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a);
|
||||||
|
int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size);
|
||||||
|
int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a);
|
||||||
|
int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size);
|
||||||
|
int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a);
|
||||||
|
int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size);
|
||||||
|
int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type);
|
||||||
|
int i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a);
|
||||||
|
|
||||||
|
int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num);
|
||||||
|
ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len,
|
||||||
|
const char *sn, const char *ln);
|
||||||
|
|
||||||
|
int ASN1_INTEGER_get_int64(int64_t *pr, const ASN1_INTEGER *a);
|
||||||
|
int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r);
|
||||||
|
int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a);
|
||||||
|
int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r);
|
||||||
|
|
||||||
|
int ASN1_INTEGER_set(ASN1_INTEGER *a, long v);
|
||||||
|
long ASN1_INTEGER_get(const ASN1_INTEGER *a);
|
||||||
|
ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai);
|
||||||
|
BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn);
|
||||||
|
|
||||||
|
int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a);
|
||||||
|
int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r);
|
||||||
|
|
||||||
|
|
||||||
|
int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v);
|
||||||
|
long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a);
|
||||||
|
ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai);
|
||||||
|
BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai, BIGNUM *bn);
|
||||||
|
|
||||||
|
/* General */
|
||||||
|
/* given a string, return the correct type, max is the maximum length */
|
||||||
|
int ASN1_PRINTABLE_type(const unsigned char *s, int max);
|
||||||
|
|
||||||
|
unsigned long ASN1_tag2bit(int tag);
|
||||||
|
|
||||||
|
/* SPECIALS */
|
||||||
|
int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag,
|
||||||
|
int *pclass, long omax);
|
||||||
|
int ASN1_check_infinite_end(unsigned char **p, long len);
|
||||||
|
int ASN1_const_check_infinite_end(const unsigned char **p, long len);
|
||||||
|
void ASN1_put_object(unsigned char **pp, int constructed, int length,
|
||||||
|
int tag, int xclass);
|
||||||
|
int ASN1_put_eoc(unsigned char **pp);
|
||||||
|
int ASN1_object_size(int constructed, int length, int tag);
|
||||||
|
|
||||||
|
/* Used to implement other functions */
|
||||||
|
void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, const void *x);
|
||||||
|
|
||||||
|
# define ASN1_dup_of(type,i2d,d2i,x) \
|
||||||
|
((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \
|
||||||
|
CHECKED_D2I_OF(type, d2i), \
|
||||||
|
CHECKED_PTR_OF(const type, x)))
|
||||||
|
|
||||||
|
void *ASN1_item_dup(const ASN1_ITEM *it, const void *x);
|
||||||
|
int ASN1_item_sign_ex(const ASN1_ITEM *it, X509_ALGOR *algor1,
|
||||||
|
X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
|
||||||
|
const void *data, const ASN1_OCTET_STRING *id,
|
||||||
|
EVP_PKEY *pkey, const EVP_MD *md, OSSL_LIB_CTX *libctx,
|
||||||
|
const char *propq);
|
||||||
|
int ASN1_item_verify_ex(const ASN1_ITEM *it, const X509_ALGOR *alg,
|
||||||
|
const ASN1_BIT_STRING *signature, const void *data,
|
||||||
|
const ASN1_OCTET_STRING *id, EVP_PKEY *pkey,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
|
||||||
|
/* ASN1 alloc/free macros for when a type is only used internally */
|
||||||
|
|
||||||
|
# define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type))
|
||||||
|
# define M_ASN1_free_of(x, type) \
|
||||||
|
ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type))
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x);
|
||||||
|
|
||||||
|
# define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \
|
||||||
|
((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \
|
||||||
|
CHECKED_D2I_OF(type, d2i), \
|
||||||
|
in, \
|
||||||
|
CHECKED_PPTR_OF(type, x)))
|
||||||
|
|
||||||
|
void *ASN1_item_d2i_fp_ex(const ASN1_ITEM *it, FILE *in, void *x,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x);
|
||||||
|
int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, const void *x);
|
||||||
|
|
||||||
|
# define ASN1_i2d_fp_of(type,i2d,out,x) \
|
||||||
|
(ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \
|
||||||
|
out, \
|
||||||
|
CHECKED_PTR_OF(const type, x)))
|
||||||
|
|
||||||
|
int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, const void *x);
|
||||||
|
int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in);
|
||||||
|
|
||||||
|
void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x);
|
||||||
|
|
||||||
|
# define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \
|
||||||
|
((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \
|
||||||
|
CHECKED_D2I_OF(type, d2i), \
|
||||||
|
in, \
|
||||||
|
CHECKED_PPTR_OF(type, x)))
|
||||||
|
|
||||||
|
void *ASN1_item_d2i_bio_ex(const ASN1_ITEM *it, BIO *in, void *pval,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *pval);
|
||||||
|
int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, const void *x);
|
||||||
|
|
||||||
|
# define ASN1_i2d_bio_of(type,i2d,out,x) \
|
||||||
|
(ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \
|
||||||
|
out, \
|
||||||
|
CHECKED_PTR_OF(const type, x)))
|
||||||
|
|
||||||
|
int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, const void *x);
|
||||||
|
BIO *ASN1_item_i2d_mem_bio(const ASN1_ITEM *it, const ASN1_VALUE *val);
|
||||||
|
int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a);
|
||||||
|
int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a);
|
||||||
|
int ASN1_TIME_print(BIO *bp, const ASN1_TIME *tm);
|
||||||
|
int ASN1_TIME_print_ex(BIO *bp, const ASN1_TIME *tm, unsigned long flags);
|
||||||
|
int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v);
|
||||||
|
int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags);
|
||||||
|
int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off);
|
||||||
|
int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num,
|
||||||
|
unsigned char *buf, int off);
|
||||||
|
int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent);
|
||||||
|
int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent,
|
||||||
|
int dump);
|
||||||
|
const char *ASN1_tag2str(int tag);
|
||||||
|
|
||||||
|
/* Used to load and write Netscape format cert */
|
||||||
|
|
||||||
|
int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s);
|
||||||
|
|
||||||
|
int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len);
|
||||||
|
int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len);
|
||||||
|
int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num,
|
||||||
|
unsigned char *data, int len);
|
||||||
|
int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num,
|
||||||
|
unsigned char *data, int max_len);
|
||||||
|
|
||||||
|
void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it);
|
||||||
|
|
||||||
|
ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it,
|
||||||
|
ASN1_OCTET_STRING **oct);
|
||||||
|
|
||||||
|
void ASN1_STRING_set_default_mask(unsigned long mask);
|
||||||
|
int ASN1_STRING_set_default_mask_asc(const char *p);
|
||||||
|
unsigned long ASN1_STRING_get_default_mask(void);
|
||||||
|
int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len,
|
||||||
|
int inform, unsigned long mask);
|
||||||
|
int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
|
||||||
|
int inform, unsigned long mask,
|
||||||
|
long minsize, long maxsize);
|
||||||
|
|
||||||
|
ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out,
|
||||||
|
const unsigned char *in, int inlen,
|
||||||
|
int inform, int nid);
|
||||||
|
ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid);
|
||||||
|
int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long);
|
||||||
|
void ASN1_STRING_TABLE_cleanup(void);
|
||||||
|
|
||||||
|
/* ASN1 template functions */
|
||||||
|
|
||||||
|
/* Old API compatible functions */
|
||||||
|
ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it);
|
||||||
|
ASN1_VALUE *ASN1_item_new_ex(const ASN1_ITEM *it, OSSL_LIB_CTX *libctx,
|
||||||
|
const char *propq);
|
||||||
|
void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it);
|
||||||
|
ASN1_VALUE *ASN1_item_d2i_ex(ASN1_VALUE **val, const unsigned char **in,
|
||||||
|
long len, const ASN1_ITEM *it,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in,
|
||||||
|
long len, const ASN1_ITEM *it);
|
||||||
|
int ASN1_item_i2d(const ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it);
|
||||||
|
int ASN1_item_ndef_i2d(const ASN1_VALUE *val, unsigned char **out,
|
||||||
|
const ASN1_ITEM *it);
|
||||||
|
|
||||||
|
void ASN1_add_oid_module(void);
|
||||||
|
void ASN1_add_stable_module(void);
|
||||||
|
|
||||||
|
ASN1_TYPE *ASN1_generate_nconf(const char *str, CONF *nconf);
|
||||||
|
ASN1_TYPE *ASN1_generate_v3(const char *str, X509V3_CTX *cnf);
|
||||||
|
int ASN1_str2mask(const char *str, unsigned long *pmask);
|
||||||
|
|
||||||
|
/* ASN1 Print flags */
|
||||||
|
|
||||||
|
/* Indicate missing OPTIONAL fields */
|
||||||
|
# define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001
|
||||||
|
/* Mark start and end of SEQUENCE */
|
||||||
|
# define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002
|
||||||
|
/* Mark start and end of SEQUENCE/SET OF */
|
||||||
|
# define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004
|
||||||
|
/* Show the ASN1 type of primitives */
|
||||||
|
# define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008
|
||||||
|
/* Don't show ASN1 type of ANY */
|
||||||
|
# define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010
|
||||||
|
/* Don't show ASN1 type of MSTRINGs */
|
||||||
|
# define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020
|
||||||
|
/* Don't show field names in SEQUENCE */
|
||||||
|
# define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040
|
||||||
|
/* Show structure names of each SEQUENCE field */
|
||||||
|
# define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080
|
||||||
|
/* Don't show structure name even at top level */
|
||||||
|
# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100
|
||||||
|
|
||||||
|
int ASN1_item_print(BIO *out, const ASN1_VALUE *ifld, int indent,
|
||||||
|
const ASN1_ITEM *it, const ASN1_PCTX *pctx);
|
||||||
|
ASN1_PCTX *ASN1_PCTX_new(void);
|
||||||
|
void ASN1_PCTX_free(ASN1_PCTX *p);
|
||||||
|
unsigned long ASN1_PCTX_get_flags(const ASN1_PCTX *p);
|
||||||
|
void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags);
|
||||||
|
unsigned long ASN1_PCTX_get_nm_flags(const ASN1_PCTX *p);
|
||||||
|
void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags);
|
||||||
|
unsigned long ASN1_PCTX_get_cert_flags(const ASN1_PCTX *p);
|
||||||
|
void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags);
|
||||||
|
unsigned long ASN1_PCTX_get_oid_flags(const ASN1_PCTX *p);
|
||||||
|
void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags);
|
||||||
|
unsigned long ASN1_PCTX_get_str_flags(const ASN1_PCTX *p);
|
||||||
|
void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags);
|
||||||
|
|
||||||
|
ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb) (ASN1_SCTX *ctx));
|
||||||
|
void ASN1_SCTX_free(ASN1_SCTX *p);
|
||||||
|
const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p);
|
||||||
|
const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p);
|
||||||
|
unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p);
|
||||||
|
void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data);
|
||||||
|
void *ASN1_SCTX_get_app_data(ASN1_SCTX *p);
|
||||||
|
|
||||||
|
const BIO_METHOD *BIO_f_asn1(void);
|
||||||
|
|
||||||
|
/* cannot constify val because of CMS_stream() */
|
||||||
|
BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it);
|
||||||
|
|
||||||
|
int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
|
||||||
|
const ASN1_ITEM *it);
|
||||||
|
int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
|
||||||
|
const char *hdr, const ASN1_ITEM *it);
|
||||||
|
/* cannot constify val because of CMS_dataFinal() */
|
||||||
|
int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
|
||||||
|
int ctype_nid, int econt_nid,
|
||||||
|
STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it);
|
||||||
|
int SMIME_write_ASN1_ex(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
|
||||||
|
int ctype_nid, int econt_nid,
|
||||||
|
STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it);
|
||||||
|
ASN1_VALUE *SMIME_read_ASN1_ex(BIO *bio, int flags, BIO **bcont,
|
||||||
|
const ASN1_ITEM *it, ASN1_VALUE **x,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
int SMIME_crlf_copy(BIO *in, BIO *out, int flags);
|
||||||
|
int SMIME_text(BIO *in, BIO *out);
|
||||||
|
|
||||||
|
const ASN1_ITEM *ASN1_ITEM_lookup(const char *name);
|
||||||
|
const ASN1_ITEM *ASN1_ITEM_get(size_t i);
|
||||||
|
|
||||||
|
/* Legacy compatibility */
|
||||||
|
# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \
|
||||||
|
DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name)
|
||||||
|
# define DECLARE_ASN1_FUNCTIONS_const(type) DECLARE_ASN1_FUNCTIONS(type)
|
||||||
|
# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS(type, name)
|
||||||
|
# define I2D_OF_const(type) I2D_OF(type)
|
||||||
|
# define ASN1_dup_of_const(type,i2d,d2i,x) ASN1_dup_of(type,i2d,d2i,x)
|
||||||
|
# define ASN1_i2d_fp_of_const(type,i2d,out,x) ASN1_i2d_fp_of(type,i2d,out,x)
|
||||||
|
# define ASN1_i2d_bio_of_const(type,i2d,out,x) ASN1_i2d_bio_of(type,i2d,out,x)
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
10
src/openssl/asn1_mac.h
Normal file
10
src/openssl/asn1_mac.h
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#error "This file is obsolete; please update your software."
|
||||||
140
src/openssl/asn1err.h
Normal file
140
src/openssl/asn1err.h
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ASN1ERR_H
|
||||||
|
# define OPENSSL_ASN1ERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ASN1 reason codes.
|
||||||
|
*/
|
||||||
|
# define ASN1_R_ADDING_OBJECT 171
|
||||||
|
# define ASN1_R_ASN1_PARSE_ERROR 203
|
||||||
|
# define ASN1_R_ASN1_SIG_PARSE_ERROR 204
|
||||||
|
# define ASN1_R_AUX_ERROR 100
|
||||||
|
# define ASN1_R_BAD_OBJECT_HEADER 102
|
||||||
|
# define ASN1_R_BAD_TEMPLATE 230
|
||||||
|
# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214
|
||||||
|
# define ASN1_R_BN_LIB 105
|
||||||
|
# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106
|
||||||
|
# define ASN1_R_BUFFER_TOO_SMALL 107
|
||||||
|
# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108
|
||||||
|
# define ASN1_R_CONTEXT_NOT_INITIALISED 217
|
||||||
|
# define ASN1_R_DATA_IS_WRONG 109
|
||||||
|
# define ASN1_R_DECODE_ERROR 110
|
||||||
|
# define ASN1_R_DEPTH_EXCEEDED 174
|
||||||
|
# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198
|
||||||
|
# define ASN1_R_ENCODE_ERROR 112
|
||||||
|
# define ASN1_R_ERROR_GETTING_TIME 173
|
||||||
|
# define ASN1_R_ERROR_LOADING_SECTION 172
|
||||||
|
# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114
|
||||||
|
# define ASN1_R_EXPECTING_AN_INTEGER 115
|
||||||
|
# define ASN1_R_EXPECTING_AN_OBJECT 116
|
||||||
|
# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119
|
||||||
|
# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120
|
||||||
|
# define ASN1_R_FIELD_MISSING 121
|
||||||
|
# define ASN1_R_FIRST_NUM_TOO_LARGE 122
|
||||||
|
# define ASN1_R_HEADER_TOO_LONG 123
|
||||||
|
# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175
|
||||||
|
# define ASN1_R_ILLEGAL_BOOLEAN 176
|
||||||
|
# define ASN1_R_ILLEGAL_CHARACTERS 124
|
||||||
|
# define ASN1_R_ILLEGAL_FORMAT 177
|
||||||
|
# define ASN1_R_ILLEGAL_HEX 178
|
||||||
|
# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179
|
||||||
|
# define ASN1_R_ILLEGAL_INTEGER 180
|
||||||
|
# define ASN1_R_ILLEGAL_NEGATIVE_VALUE 226
|
||||||
|
# define ASN1_R_ILLEGAL_NESTED_TAGGING 181
|
||||||
|
# define ASN1_R_ILLEGAL_NULL 125
|
||||||
|
# define ASN1_R_ILLEGAL_NULL_VALUE 182
|
||||||
|
# define ASN1_R_ILLEGAL_OBJECT 183
|
||||||
|
# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126
|
||||||
|
# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170
|
||||||
|
# define ASN1_R_ILLEGAL_PADDING 221
|
||||||
|
# define ASN1_R_ILLEGAL_TAGGED_ANY 127
|
||||||
|
# define ASN1_R_ILLEGAL_TIME_VALUE 184
|
||||||
|
# define ASN1_R_ILLEGAL_ZERO_CONTENT 222
|
||||||
|
# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185
|
||||||
|
# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128
|
||||||
|
# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220
|
||||||
|
# define ASN1_R_INVALID_BMPSTRING_LENGTH 129
|
||||||
|
# define ASN1_R_INVALID_DIGIT 130
|
||||||
|
# define ASN1_R_INVALID_MIME_TYPE 205
|
||||||
|
# define ASN1_R_INVALID_MODIFIER 186
|
||||||
|
# define ASN1_R_INVALID_NUMBER 187
|
||||||
|
# define ASN1_R_INVALID_OBJECT_ENCODING 216
|
||||||
|
# define ASN1_R_INVALID_SCRYPT_PARAMETERS 227
|
||||||
|
# define ASN1_R_INVALID_SEPARATOR 131
|
||||||
|
# define ASN1_R_INVALID_STRING_TABLE_VALUE 218
|
||||||
|
# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133
|
||||||
|
# define ASN1_R_INVALID_UTF8STRING 134
|
||||||
|
# define ASN1_R_INVALID_VALUE 219
|
||||||
|
# define ASN1_R_LENGTH_TOO_LONG 231
|
||||||
|
# define ASN1_R_LIST_ERROR 188
|
||||||
|
# define ASN1_R_MIME_NO_CONTENT_TYPE 206
|
||||||
|
# define ASN1_R_MIME_PARSE_ERROR 207
|
||||||
|
# define ASN1_R_MIME_SIG_PARSE_ERROR 208
|
||||||
|
# define ASN1_R_MISSING_EOC 137
|
||||||
|
# define ASN1_R_MISSING_SECOND_NUMBER 138
|
||||||
|
# define ASN1_R_MISSING_VALUE 189
|
||||||
|
# define ASN1_R_MSTRING_NOT_UNIVERSAL 139
|
||||||
|
# define ASN1_R_MSTRING_WRONG_TAG 140
|
||||||
|
# define ASN1_R_NESTED_ASN1_STRING 197
|
||||||
|
# define ASN1_R_NESTED_TOO_DEEP 201
|
||||||
|
# define ASN1_R_NON_HEX_CHARACTERS 141
|
||||||
|
# define ASN1_R_NOT_ASCII_FORMAT 190
|
||||||
|
# define ASN1_R_NOT_ENOUGH_DATA 142
|
||||||
|
# define ASN1_R_NO_CONTENT_TYPE 209
|
||||||
|
# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143
|
||||||
|
# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210
|
||||||
|
# define ASN1_R_NO_MULTIPART_BOUNDARY 211
|
||||||
|
# define ASN1_R_NO_SIG_CONTENT_TYPE 212
|
||||||
|
# define ASN1_R_NULL_IS_WRONG_LENGTH 144
|
||||||
|
# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191
|
||||||
|
# define ASN1_R_ODD_NUMBER_OF_CHARS 145
|
||||||
|
# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147
|
||||||
|
# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148
|
||||||
|
# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149
|
||||||
|
# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192
|
||||||
|
# define ASN1_R_SHORT_LINE 150
|
||||||
|
# define ASN1_R_SIG_INVALID_MIME_TYPE 213
|
||||||
|
# define ASN1_R_STREAMING_NOT_SUPPORTED 202
|
||||||
|
# define ASN1_R_STRING_TOO_LONG 151
|
||||||
|
# define ASN1_R_STRING_TOO_SHORT 152
|
||||||
|
# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154
|
||||||
|
# define ASN1_R_TIME_NOT_ASCII_FORMAT 193
|
||||||
|
# define ASN1_R_TOO_LARGE 223
|
||||||
|
# define ASN1_R_TOO_LONG 155
|
||||||
|
# define ASN1_R_TOO_SMALL 224
|
||||||
|
# define ASN1_R_TYPE_NOT_CONSTRUCTED 156
|
||||||
|
# define ASN1_R_TYPE_NOT_PRIMITIVE 195
|
||||||
|
# define ASN1_R_UNEXPECTED_EOC 159
|
||||||
|
# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215
|
||||||
|
# define ASN1_R_UNKNOWN_DIGEST 229
|
||||||
|
# define ASN1_R_UNKNOWN_FORMAT 160
|
||||||
|
# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161
|
||||||
|
# define ASN1_R_UNKNOWN_OBJECT_TYPE 162
|
||||||
|
# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163
|
||||||
|
# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199
|
||||||
|
# define ASN1_R_UNKNOWN_TAG 194
|
||||||
|
# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164
|
||||||
|
# define ASN1_R_UNSUPPORTED_CIPHER 228
|
||||||
|
# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167
|
||||||
|
# define ASN1_R_UNSUPPORTED_TYPE 196
|
||||||
|
# define ASN1_R_WRONG_INTEGER_TYPE 225
|
||||||
|
# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200
|
||||||
|
# define ASN1_R_WRONG_TAG 168
|
||||||
|
|
||||||
|
#endif
|
||||||
923
src/openssl/asn1t.h.in
Normal file
923
src/openssl/asn1t.h.in
Normal file
@@ -0,0 +1,923 @@
|
|||||||
|
/*
|
||||||
|
* {- join("\n * ", @autowarntext) -}
|
||||||
|
*
|
||||||
|
* Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
{-
|
||||||
|
use OpenSSL::stackhash qw(generate_stack_macros);
|
||||||
|
-}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ASN1T_H
|
||||||
|
# define OPENSSL_ASN1T_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_ASN1T_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <stddef.h>
|
||||||
|
# include <openssl/e_os2.h>
|
||||||
|
# include <openssl/asn1.h>
|
||||||
|
|
||||||
|
# ifdef OPENSSL_BUILD_SHLIBCRYPTO
|
||||||
|
# undef OPENSSL_EXTERN
|
||||||
|
# define OPENSSL_EXTERN OPENSSL_EXPORT
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* ASN1 template defines, structures and functions */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* These are the possible values for the itype field of the
|
||||||
|
* ASN1_ITEM structure and determine how it is interpreted.
|
||||||
|
*
|
||||||
|
* For PRIMITIVE types the underlying type
|
||||||
|
* determines the behaviour if items is NULL.
|
||||||
|
*
|
||||||
|
* Otherwise templates must contain a single
|
||||||
|
* template and the type is treated in the
|
||||||
|
* same way as the type specified in the template.
|
||||||
|
*
|
||||||
|
* For SEQUENCE types the templates field points
|
||||||
|
* to the members, the size field is the
|
||||||
|
* structure size.
|
||||||
|
*
|
||||||
|
* For CHOICE types the templates field points
|
||||||
|
* to each possible member (typically a union)
|
||||||
|
* and the 'size' field is the offset of the
|
||||||
|
* selector.
|
||||||
|
*
|
||||||
|
* The 'funcs' field is used for application-specific
|
||||||
|
* data and functions.
|
||||||
|
*
|
||||||
|
* The EXTERN type uses a new style d2i/i2d.
|
||||||
|
* The new style should be used where possible
|
||||||
|
* because it avoids things like the d2i IMPLICIT
|
||||||
|
* hack.
|
||||||
|
*
|
||||||
|
* MSTRING is a multiple string type, it is used
|
||||||
|
* for a CHOICE of character strings where the
|
||||||
|
* actual strings all occupy an ASN1_STRING
|
||||||
|
* structure. In this case the 'utype' field
|
||||||
|
* has a special meaning, it is used as a mask
|
||||||
|
* of acceptable types using the B_ASN1 constants.
|
||||||
|
*
|
||||||
|
* NDEF_SEQUENCE is the same as SEQUENCE except
|
||||||
|
* that it will use indefinite length constructed
|
||||||
|
* encoding if requested.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_ITYPE_PRIMITIVE 0x0
|
||||||
|
# define ASN1_ITYPE_SEQUENCE 0x1
|
||||||
|
# define ASN1_ITYPE_CHOICE 0x2
|
||||||
|
/* unused value 0x3 */
|
||||||
|
# define ASN1_ITYPE_EXTERN 0x4
|
||||||
|
# define ASN1_ITYPE_MSTRING 0x5
|
||||||
|
# define ASN1_ITYPE_NDEF_SEQUENCE 0x6
|
||||||
|
|
||||||
|
/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */
|
||||||
|
# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)((iptr)()))
|
||||||
|
|
||||||
|
/* Macros for start and end of ASN1_ITEM definition */
|
||||||
|
|
||||||
|
# define ASN1_ITEM_start(itname) \
|
||||||
|
const ASN1_ITEM * itname##_it(void) \
|
||||||
|
{ \
|
||||||
|
static const ASN1_ITEM local_it = {
|
||||||
|
|
||||||
|
# define static_ASN1_ITEM_start(itname) \
|
||||||
|
static ASN1_ITEM_start(itname)
|
||||||
|
|
||||||
|
# define ASN1_ITEM_end(itname) \
|
||||||
|
}; \
|
||||||
|
return &local_it; \
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Macros to aid ASN1 template writing */
|
||||||
|
|
||||||
|
# define ASN1_ITEM_TEMPLATE(tname) \
|
||||||
|
static const ASN1_TEMPLATE tname##_item_tt
|
||||||
|
|
||||||
|
# define ASN1_ITEM_TEMPLATE_END(tname) \
|
||||||
|
;\
|
||||||
|
ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_PRIMITIVE,\
|
||||||
|
-1,\
|
||||||
|
&tname##_item_tt,\
|
||||||
|
0,\
|
||||||
|
NULL,\
|
||||||
|
0,\
|
||||||
|
#tname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
# define static_ASN1_ITEM_TEMPLATE_END(tname) \
|
||||||
|
;\
|
||||||
|
static_ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_PRIMITIVE,\
|
||||||
|
-1,\
|
||||||
|
&tname##_item_tt,\
|
||||||
|
0,\
|
||||||
|
NULL,\
|
||||||
|
0,\
|
||||||
|
#tname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
|
||||||
|
/* This is a ASN1 type which just embeds a template */
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* This pair helps declare a SEQUENCE. We can do:
|
||||||
|
*
|
||||||
|
* ASN1_SEQUENCE(stname) = {
|
||||||
|
* ... SEQUENCE components ...
|
||||||
|
* } ASN1_SEQUENCE_END(stname)
|
||||||
|
*
|
||||||
|
* This will produce an ASN1_ITEM called stname_it
|
||||||
|
* for a structure called stname.
|
||||||
|
*
|
||||||
|
* If you want the same structure but a different
|
||||||
|
* name then use:
|
||||||
|
*
|
||||||
|
* ASN1_SEQUENCE(itname) = {
|
||||||
|
* ... SEQUENCE components ...
|
||||||
|
* } ASN1_SEQUENCE_END_name(stname, itname)
|
||||||
|
*
|
||||||
|
* This will create an item called itname_it using
|
||||||
|
* a structure called stname.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_SEQUENCE(tname) \
|
||||||
|
static const ASN1_TEMPLATE tname##_seq_tt[]
|
||||||
|
|
||||||
|
# define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname)
|
||||||
|
|
||||||
|
# define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname)
|
||||||
|
|
||||||
|
# define ASN1_SEQUENCE_END_name(stname, tname) \
|
||||||
|
;\
|
||||||
|
ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_SEQUENCE,\
|
||||||
|
V_ASN1_SEQUENCE,\
|
||||||
|
tname##_seq_tt,\
|
||||||
|
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||||
|
NULL,\
|
||||||
|
sizeof(stname),\
|
||||||
|
#tname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
|
||||||
|
# define static_ASN1_SEQUENCE_END_name(stname, tname) \
|
||||||
|
;\
|
||||||
|
static_ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_SEQUENCE,\
|
||||||
|
V_ASN1_SEQUENCE,\
|
||||||
|
tname##_seq_tt,\
|
||||||
|
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||||
|
NULL,\
|
||||||
|
sizeof(stname),\
|
||||||
|
#stname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
|
||||||
|
# define ASN1_NDEF_SEQUENCE(tname) \
|
||||||
|
ASN1_SEQUENCE(tname)
|
||||||
|
|
||||||
|
# define ASN1_NDEF_SEQUENCE_cb(tname, cb) \
|
||||||
|
ASN1_SEQUENCE_cb(tname, cb)
|
||||||
|
|
||||||
|
# define ASN1_SEQUENCE_cb(tname, cb) \
|
||||||
|
static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \
|
||||||
|
ASN1_SEQUENCE(tname)
|
||||||
|
|
||||||
|
# define ASN1_SEQUENCE_const_cb(tname, const_cb) \
|
||||||
|
static const ASN1_AUX tname##_aux = \
|
||||||
|
{NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb}; \
|
||||||
|
ASN1_SEQUENCE(tname)
|
||||||
|
|
||||||
|
# define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \
|
||||||
|
static const ASN1_AUX tname##_aux = \
|
||||||
|
{NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb}; \
|
||||||
|
ASN1_SEQUENCE(tname)
|
||||||
|
|
||||||
|
# define ASN1_SEQUENCE_ref(tname, cb) \
|
||||||
|
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0, NULL}; \
|
||||||
|
ASN1_SEQUENCE(tname)
|
||||||
|
|
||||||
|
# define ASN1_SEQUENCE_enc(tname, enc, cb) \
|
||||||
|
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc), NULL}; \
|
||||||
|
ASN1_SEQUENCE(tname)
|
||||||
|
|
||||||
|
# define ASN1_NDEF_SEQUENCE_END(tname) \
|
||||||
|
;\
|
||||||
|
ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_NDEF_SEQUENCE,\
|
||||||
|
V_ASN1_SEQUENCE,\
|
||||||
|
tname##_seq_tt,\
|
||||||
|
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||||
|
NULL,\
|
||||||
|
sizeof(tname),\
|
||||||
|
#tname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
# define static_ASN1_NDEF_SEQUENCE_END(tname) \
|
||||||
|
;\
|
||||||
|
static_ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_NDEF_SEQUENCE,\
|
||||||
|
V_ASN1_SEQUENCE,\
|
||||||
|
tname##_seq_tt,\
|
||||||
|
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||||
|
NULL,\
|
||||||
|
sizeof(tname),\
|
||||||
|
#tname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
|
||||||
|
|
||||||
|
# define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
|
||||||
|
|
||||||
|
# define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
|
||||||
|
# define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname)
|
||||||
|
|
||||||
|
# define ASN1_SEQUENCE_END_ref(stname, tname) \
|
||||||
|
;\
|
||||||
|
ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_SEQUENCE,\
|
||||||
|
V_ASN1_SEQUENCE,\
|
||||||
|
tname##_seq_tt,\
|
||||||
|
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||||
|
&tname##_aux,\
|
||||||
|
sizeof(stname),\
|
||||||
|
#tname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
# define static_ASN1_SEQUENCE_END_ref(stname, tname) \
|
||||||
|
;\
|
||||||
|
static_ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_SEQUENCE,\
|
||||||
|
V_ASN1_SEQUENCE,\
|
||||||
|
tname##_seq_tt,\
|
||||||
|
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||||
|
&tname##_aux,\
|
||||||
|
sizeof(stname),\
|
||||||
|
#stname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
|
||||||
|
# define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \
|
||||||
|
;\
|
||||||
|
ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_NDEF_SEQUENCE,\
|
||||||
|
V_ASN1_SEQUENCE,\
|
||||||
|
tname##_seq_tt,\
|
||||||
|
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||||
|
&tname##_aux,\
|
||||||
|
sizeof(stname),\
|
||||||
|
#stname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* This pair helps declare a CHOICE type. We can do:
|
||||||
|
*
|
||||||
|
* ASN1_CHOICE(chname) = {
|
||||||
|
* ... CHOICE options ...
|
||||||
|
* ASN1_CHOICE_END(chname)
|
||||||
|
*
|
||||||
|
* This will produce an ASN1_ITEM called chname_it
|
||||||
|
* for a structure called chname. The structure
|
||||||
|
* definition must look like this:
|
||||||
|
* typedef struct {
|
||||||
|
* int type;
|
||||||
|
* union {
|
||||||
|
* ASN1_SOMETHING *opt1;
|
||||||
|
* ASN1_SOMEOTHER *opt2;
|
||||||
|
* } value;
|
||||||
|
* } chname;
|
||||||
|
*
|
||||||
|
* the name of the selector must be 'type'.
|
||||||
|
* to use an alternative selector name use the
|
||||||
|
* ASN1_CHOICE_END_selector() version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_CHOICE(tname) \
|
||||||
|
static const ASN1_TEMPLATE tname##_ch_tt[]
|
||||||
|
|
||||||
|
# define ASN1_CHOICE_cb(tname, cb) \
|
||||||
|
static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \
|
||||||
|
ASN1_CHOICE(tname)
|
||||||
|
|
||||||
|
# define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname)
|
||||||
|
|
||||||
|
# define static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname)
|
||||||
|
|
||||||
|
# define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type)
|
||||||
|
|
||||||
|
# define static_ASN1_CHOICE_END_name(stname, tname) static_ASN1_CHOICE_END_selector(stname, tname, type)
|
||||||
|
|
||||||
|
# define ASN1_CHOICE_END_selector(stname, tname, selname) \
|
||||||
|
;\
|
||||||
|
ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_CHOICE,\
|
||||||
|
offsetof(stname,selname) ,\
|
||||||
|
tname##_ch_tt,\
|
||||||
|
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
|
||||||
|
NULL,\
|
||||||
|
sizeof(stname),\
|
||||||
|
#stname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
|
||||||
|
# define static_ASN1_CHOICE_END_selector(stname, tname, selname) \
|
||||||
|
;\
|
||||||
|
static_ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_CHOICE,\
|
||||||
|
offsetof(stname,selname) ,\
|
||||||
|
tname##_ch_tt,\
|
||||||
|
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
|
||||||
|
NULL,\
|
||||||
|
sizeof(stname),\
|
||||||
|
#stname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
|
||||||
|
# define ASN1_CHOICE_END_cb(stname, tname, selname) \
|
||||||
|
;\
|
||||||
|
ASN1_ITEM_start(tname) \
|
||||||
|
ASN1_ITYPE_CHOICE,\
|
||||||
|
offsetof(stname,selname) ,\
|
||||||
|
tname##_ch_tt,\
|
||||||
|
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
|
||||||
|
&tname##_aux,\
|
||||||
|
sizeof(stname),\
|
||||||
|
#stname \
|
||||||
|
ASN1_ITEM_end(tname)
|
||||||
|
|
||||||
|
/* This helps with the template wrapper form of ASN1_ITEM */
|
||||||
|
|
||||||
|
# define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \
|
||||||
|
(flags), (tag), 0,\
|
||||||
|
#name, ASN1_ITEM_ref(type) }
|
||||||
|
|
||||||
|
/* These help with SEQUENCE or CHOICE components */
|
||||||
|
|
||||||
|
/* used to declare other types */
|
||||||
|
|
||||||
|
# define ASN1_EX_TYPE(flags, tag, stname, field, type) { \
|
||||||
|
(flags), (tag), offsetof(stname, field),\
|
||||||
|
#field, ASN1_ITEM_ref(type) }
|
||||||
|
|
||||||
|
/* implicit and explicit helper macros */
|
||||||
|
|
||||||
|
# define ASN1_IMP_EX(stname, field, type, tag, ex) \
|
||||||
|
ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | (ex), tag, stname, field, type)
|
||||||
|
|
||||||
|
# define ASN1_EXP_EX(stname, field, type, tag, ex) \
|
||||||
|
ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | (ex), tag, stname, field, type)
|
||||||
|
|
||||||
|
/* Any defined by macros: the field used is in the table itself */
|
||||||
|
|
||||||
|
# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb }
|
||||||
|
# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb }
|
||||||
|
|
||||||
|
/* Plain simple type */
|
||||||
|
# define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type)
|
||||||
|
/* Embedded simple type */
|
||||||
|
# define ASN1_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_EMBED,0, stname, field, type)
|
||||||
|
|
||||||
|
/* OPTIONAL simple type */
|
||||||
|
# define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type)
|
||||||
|
# define ASN1_OPT_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED, 0, stname, field, type)
|
||||||
|
|
||||||
|
/* IMPLICIT tagged simple type */
|
||||||
|
# define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0)
|
||||||
|
# define ASN1_IMP_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_EMBED)
|
||||||
|
|
||||||
|
/* IMPLICIT tagged OPTIONAL simple type */
|
||||||
|
# define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
|
||||||
|
# define ASN1_IMP_OPT_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED)
|
||||||
|
|
||||||
|
/* Same as above but EXPLICIT */
|
||||||
|
|
||||||
|
# define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0)
|
||||||
|
# define ASN1_EXP_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_EMBED)
|
||||||
|
# define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
|
||||||
|
# define ASN1_EXP_OPT_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED)
|
||||||
|
|
||||||
|
/* SEQUENCE OF type */
|
||||||
|
# define ASN1_SEQUENCE_OF(stname, field, type) \
|
||||||
|
ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type)
|
||||||
|
|
||||||
|
/* OPTIONAL SEQUENCE OF */
|
||||||
|
# define ASN1_SEQUENCE_OF_OPT(stname, field, type) \
|
||||||
|
ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)
|
||||||
|
|
||||||
|
/* Same as above but for SET OF */
|
||||||
|
|
||||||
|
# define ASN1_SET_OF(stname, field, type) \
|
||||||
|
ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type)
|
||||||
|
|
||||||
|
# define ASN1_SET_OF_OPT(stname, field, type) \
|
||||||
|
ASN1_EX_TYPE(ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)
|
||||||
|
|
||||||
|
/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */
|
||||||
|
|
||||||
|
# define ASN1_IMP_SET_OF(stname, field, type, tag) \
|
||||||
|
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
|
||||||
|
|
||||||
|
# define ASN1_EXP_SET_OF(stname, field, type, tag) \
|
||||||
|
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
|
||||||
|
|
||||||
|
# define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \
|
||||||
|
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)
|
||||||
|
|
||||||
|
# define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \
|
||||||
|
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)
|
||||||
|
|
||||||
|
# define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \
|
||||||
|
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
|
||||||
|
|
||||||
|
# define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \
|
||||||
|
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
|
||||||
|
|
||||||
|
# define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \
|
||||||
|
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
|
||||||
|
|
||||||
|
# define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \
|
||||||
|
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
|
||||||
|
|
||||||
|
/* EXPLICIT using indefinite length constructed form */
|
||||||
|
# define ASN1_NDEF_EXP(stname, field, type, tag) \
|
||||||
|
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF)
|
||||||
|
|
||||||
|
/* EXPLICIT OPTIONAL using indefinite length constructed form */
|
||||||
|
# define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \
|
||||||
|
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF)
|
||||||
|
|
||||||
|
/* Macros for the ASN1_ADB structure */
|
||||||
|
|
||||||
|
# define ASN1_ADB(name) \
|
||||||
|
static const ASN1_ADB_TABLE name##_adbtbl[]
|
||||||
|
|
||||||
|
# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \
|
||||||
|
;\
|
||||||
|
static const ASN1_ITEM *name##_adb(void) \
|
||||||
|
{ \
|
||||||
|
static const ASN1_ADB internal_adb = \
|
||||||
|
{\
|
||||||
|
flags,\
|
||||||
|
offsetof(name, field),\
|
||||||
|
adb_cb,\
|
||||||
|
name##_adbtbl,\
|
||||||
|
sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\
|
||||||
|
def,\
|
||||||
|
none\
|
||||||
|
}; \
|
||||||
|
return (const ASN1_ITEM *) &internal_adb; \
|
||||||
|
} \
|
||||||
|
void dummy_function(void)
|
||||||
|
|
||||||
|
# define ADB_ENTRY(val, template) {val, template}
|
||||||
|
|
||||||
|
# define ASN1_ADB_TEMPLATE(name) \
|
||||||
|
static const ASN1_TEMPLATE name##_tt
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is the ASN1 template structure that defines a wrapper round the
|
||||||
|
* actual type. It determines the actual position of the field in the value
|
||||||
|
* structure, various flags such as OPTIONAL and the field name.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct ASN1_TEMPLATE_st {
|
||||||
|
unsigned long flags; /* Various flags */
|
||||||
|
long tag; /* tag, not used if no tagging */
|
||||||
|
unsigned long offset; /* Offset of this field in structure */
|
||||||
|
const char *field_name; /* Field name */
|
||||||
|
ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */
|
||||||
|
|
||||||
|
# define ASN1_TEMPLATE_item(t) (t->item_ptr)
|
||||||
|
# define ASN1_TEMPLATE_adb(t) (t->item_ptr)
|
||||||
|
|
||||||
|
typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE;
|
||||||
|
typedef struct ASN1_ADB_st ASN1_ADB;
|
||||||
|
|
||||||
|
struct ASN1_ADB_st {
|
||||||
|
unsigned long flags; /* Various flags */
|
||||||
|
unsigned long offset; /* Offset of selector field */
|
||||||
|
int (*adb_cb)(long *psel); /* Application callback */
|
||||||
|
const ASN1_ADB_TABLE *tbl; /* Table of possible types */
|
||||||
|
long tblcount; /* Number of entries in tbl */
|
||||||
|
const ASN1_TEMPLATE *default_tt; /* Type to use if no match */
|
||||||
|
const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ASN1_ADB_TABLE_st {
|
||||||
|
long value; /* NID for an object or value for an int */
|
||||||
|
const ASN1_TEMPLATE tt; /* item for this value */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* template flags */
|
||||||
|
|
||||||
|
/* Field is optional */
|
||||||
|
# define ASN1_TFLG_OPTIONAL (0x1)
|
||||||
|
|
||||||
|
/* Field is a SET OF */
|
||||||
|
# define ASN1_TFLG_SET_OF (0x1 << 1)
|
||||||
|
|
||||||
|
/* Field is a SEQUENCE OF */
|
||||||
|
# define ASN1_TFLG_SEQUENCE_OF (0x2 << 1)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Special case: this refers to a SET OF that will be sorted into DER order
|
||||||
|
* when encoded *and* the corresponding STACK will be modified to match the
|
||||||
|
* new order.
|
||||||
|
*/
|
||||||
|
# define ASN1_TFLG_SET_ORDER (0x3 << 1)
|
||||||
|
|
||||||
|
/* Mask for SET OF or SEQUENCE OF */
|
||||||
|
# define ASN1_TFLG_SK_MASK (0x3 << 1)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These flags mean the tag should be taken from the tag field. If EXPLICIT
|
||||||
|
* then the underlying type is used for the inner tag.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* IMPLICIT tagging */
|
||||||
|
# define ASN1_TFLG_IMPTAG (0x1 << 3)
|
||||||
|
|
||||||
|
/* EXPLICIT tagging, inner tag from underlying type */
|
||||||
|
# define ASN1_TFLG_EXPTAG (0x2 << 3)
|
||||||
|
|
||||||
|
# define ASN1_TFLG_TAG_MASK (0x3 << 3)
|
||||||
|
|
||||||
|
/* context specific IMPLICIT */
|
||||||
|
# define ASN1_TFLG_IMPLICIT (ASN1_TFLG_IMPTAG|ASN1_TFLG_CONTEXT)
|
||||||
|
|
||||||
|
/* context specific EXPLICIT */
|
||||||
|
# define ASN1_TFLG_EXPLICIT (ASN1_TFLG_EXPTAG|ASN1_TFLG_CONTEXT)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If tagging is in force these determine the type of tag to use. Otherwise
|
||||||
|
* the tag is determined by the underlying type. These values reflect the
|
||||||
|
* actual octet format.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Universal tag */
|
||||||
|
# define ASN1_TFLG_UNIVERSAL (0x0<<6)
|
||||||
|
/* Application tag */
|
||||||
|
# define ASN1_TFLG_APPLICATION (0x1<<6)
|
||||||
|
/* Context specific tag */
|
||||||
|
# define ASN1_TFLG_CONTEXT (0x2<<6)
|
||||||
|
/* Private tag */
|
||||||
|
# define ASN1_TFLG_PRIVATE (0x3<<6)
|
||||||
|
|
||||||
|
# define ASN1_TFLG_TAG_CLASS (0x3<<6)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These are for ANY DEFINED BY type. In this case the 'item' field points to
|
||||||
|
* an ASN1_ADB structure which contains a table of values to decode the
|
||||||
|
* relevant type
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_TFLG_ADB_MASK (0x3<<8)
|
||||||
|
|
||||||
|
# define ASN1_TFLG_ADB_OID (0x1<<8)
|
||||||
|
|
||||||
|
# define ASN1_TFLG_ADB_INT (0x1<<9)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This flag when present in a SEQUENCE OF, SET OF or EXPLICIT causes
|
||||||
|
* indefinite length constructed encoding to be used if required.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ASN1_TFLG_NDEF (0x1<<11)
|
||||||
|
|
||||||
|
/* Field is embedded and not a pointer */
|
||||||
|
# define ASN1_TFLG_EMBED (0x1 << 12)
|
||||||
|
|
||||||
|
/* This is the actual ASN1 item itself */
|
||||||
|
|
||||||
|
struct ASN1_ITEM_st {
|
||||||
|
char itype; /* The item type, primitive, SEQUENCE, CHOICE
|
||||||
|
* or extern */
|
||||||
|
long utype; /* underlying type */
|
||||||
|
const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains
|
||||||
|
* the contents */
|
||||||
|
long tcount; /* Number of templates if SEQUENCE or CHOICE */
|
||||||
|
const void *funcs; /* further data and type-specific functions */
|
||||||
|
/* funcs can be ASN1_PRIMITIVE_FUNCS*, ASN1_EXTERN_FUNCS*, or ASN1_AUX* */
|
||||||
|
long size; /* Structure size (usually) */
|
||||||
|
const char *sname; /* Structure name */
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Cache for ASN1 tag and length, so we don't keep re-reading it for things
|
||||||
|
* like CHOICE
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct ASN1_TLC_st {
|
||||||
|
char valid; /* Values below are valid */
|
||||||
|
int ret; /* return value */
|
||||||
|
long plen; /* length */
|
||||||
|
int ptag; /* class value */
|
||||||
|
int pclass; /* class value */
|
||||||
|
int hdrlen; /* header length */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Typedefs for ASN1 function pointers */
|
||||||
|
typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||||
|
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
||||||
|
ASN1_TLC *ctx);
|
||||||
|
|
||||||
|
typedef int ASN1_ex_d2i_ex(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||||
|
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
||||||
|
ASN1_TLC *ctx, OSSL_LIB_CTX *libctx,
|
||||||
|
const char *propq);
|
||||||
|
typedef int ASN1_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
|
||||||
|
const ASN1_ITEM *it, int tag, int aclass);
|
||||||
|
typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||||
|
typedef int ASN1_ex_new_ex_func(ASN1_VALUE **pval, const ASN1_ITEM *it,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||||
|
|
||||||
|
typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval,
|
||||||
|
int indent, const char *fname,
|
||||||
|
const ASN1_PCTX *pctx);
|
||||||
|
|
||||||
|
typedef int ASN1_primitive_i2c(const ASN1_VALUE **pval, unsigned char *cont,
|
||||||
|
int *putype, const ASN1_ITEM *it);
|
||||||
|
typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont,
|
||||||
|
int len, int utype, char *free_cont,
|
||||||
|
const ASN1_ITEM *it);
|
||||||
|
typedef int ASN1_primitive_print(BIO *out, const ASN1_VALUE **pval,
|
||||||
|
const ASN1_ITEM *it, int indent,
|
||||||
|
const ASN1_PCTX *pctx);
|
||||||
|
|
||||||
|
typedef struct ASN1_EXTERN_FUNCS_st {
|
||||||
|
void *app_data;
|
||||||
|
ASN1_ex_new_func *asn1_ex_new;
|
||||||
|
ASN1_ex_free_func *asn1_ex_free;
|
||||||
|
ASN1_ex_free_func *asn1_ex_clear;
|
||||||
|
ASN1_ex_d2i *asn1_ex_d2i;
|
||||||
|
ASN1_ex_i2d *asn1_ex_i2d;
|
||||||
|
ASN1_ex_print_func *asn1_ex_print;
|
||||||
|
ASN1_ex_new_ex_func *asn1_ex_new_ex;
|
||||||
|
ASN1_ex_d2i_ex *asn1_ex_d2i_ex;
|
||||||
|
} ASN1_EXTERN_FUNCS;
|
||||||
|
|
||||||
|
typedef struct ASN1_PRIMITIVE_FUNCS_st {
|
||||||
|
void *app_data;
|
||||||
|
unsigned long flags;
|
||||||
|
ASN1_ex_new_func *prim_new;
|
||||||
|
ASN1_ex_free_func *prim_free;
|
||||||
|
ASN1_ex_free_func *prim_clear;
|
||||||
|
ASN1_primitive_c2i *prim_c2i;
|
||||||
|
ASN1_primitive_i2c *prim_i2c;
|
||||||
|
ASN1_primitive_print *prim_print;
|
||||||
|
} ASN1_PRIMITIVE_FUNCS;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is the ASN1_AUX structure: it handles various miscellaneous
|
||||||
|
* requirements. For example the use of reference counts and an informational
|
||||||
|
* callback. The "informational callback" is called at various points during
|
||||||
|
* the ASN1 encoding and decoding. It can be used to provide minor
|
||||||
|
* customisation of the structures used. This is most useful where the
|
||||||
|
* supplied routines *almost* do the right thing but need some extra help at
|
||||||
|
* a few points. If the callback returns zero then it is assumed a fatal
|
||||||
|
* error has occurred and the main operation should be abandoned. If major
|
||||||
|
* changes in the default behaviour are required then an external type is
|
||||||
|
* more appropriate.
|
||||||
|
* For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and
|
||||||
|
* ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter
|
||||||
|
* 'in' is provided to make clear statically that its input is not modified. If
|
||||||
|
* and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it,
|
||||||
|
void *exarg);
|
||||||
|
typedef int ASN1_aux_const_cb(int operation, const ASN1_VALUE **in,
|
||||||
|
const ASN1_ITEM *it, void *exarg);
|
||||||
|
|
||||||
|
typedef struct ASN1_AUX_st {
|
||||||
|
void *app_data;
|
||||||
|
int flags;
|
||||||
|
int ref_offset; /* Offset of reference value */
|
||||||
|
int ref_lock; /* Offset of lock value */
|
||||||
|
ASN1_aux_cb *asn1_cb;
|
||||||
|
int enc_offset; /* Offset of ASN1_ENCODING structure */
|
||||||
|
ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */
|
||||||
|
} ASN1_AUX;
|
||||||
|
|
||||||
|
/* For print related callbacks exarg points to this structure */
|
||||||
|
typedef struct ASN1_PRINT_ARG_st {
|
||||||
|
BIO *out;
|
||||||
|
int indent;
|
||||||
|
const ASN1_PCTX *pctx;
|
||||||
|
} ASN1_PRINT_ARG;
|
||||||
|
|
||||||
|
/* For streaming related callbacks exarg points to this structure */
|
||||||
|
typedef struct ASN1_STREAM_ARG_st {
|
||||||
|
/* BIO to stream through */
|
||||||
|
BIO *out;
|
||||||
|
/* BIO with filters appended */
|
||||||
|
BIO *ndef_bio;
|
||||||
|
/* Streaming I/O boundary */
|
||||||
|
unsigned char **boundary;
|
||||||
|
} ASN1_STREAM_ARG;
|
||||||
|
|
||||||
|
/* Flags in ASN1_AUX */
|
||||||
|
|
||||||
|
/* Use a reference count */
|
||||||
|
# define ASN1_AFLG_REFCOUNT 1
|
||||||
|
/* Save the encoding of structure (useful for signatures) */
|
||||||
|
# define ASN1_AFLG_ENCODING 2
|
||||||
|
/* The Sequence length is invalid */
|
||||||
|
# define ASN1_AFLG_BROKEN 4
|
||||||
|
/* Use the new asn1_const_cb */
|
||||||
|
# define ASN1_AFLG_CONST_CB 8
|
||||||
|
|
||||||
|
/* operation values for asn1_cb */
|
||||||
|
|
||||||
|
# define ASN1_OP_NEW_PRE 0
|
||||||
|
# define ASN1_OP_NEW_POST 1
|
||||||
|
# define ASN1_OP_FREE_PRE 2
|
||||||
|
# define ASN1_OP_FREE_POST 3
|
||||||
|
# define ASN1_OP_D2I_PRE 4
|
||||||
|
# define ASN1_OP_D2I_POST 5
|
||||||
|
# define ASN1_OP_I2D_PRE 6
|
||||||
|
# define ASN1_OP_I2D_POST 7
|
||||||
|
# define ASN1_OP_PRINT_PRE 8
|
||||||
|
# define ASN1_OP_PRINT_POST 9
|
||||||
|
# define ASN1_OP_STREAM_PRE 10
|
||||||
|
# define ASN1_OP_STREAM_POST 11
|
||||||
|
# define ASN1_OP_DETACHED_PRE 12
|
||||||
|
# define ASN1_OP_DETACHED_POST 13
|
||||||
|
# define ASN1_OP_DUP_PRE 14
|
||||||
|
# define ASN1_OP_DUP_POST 15
|
||||||
|
# define ASN1_OP_GET0_LIBCTX 16
|
||||||
|
# define ASN1_OP_GET0_PROPQ 17
|
||||||
|
|
||||||
|
/* Macro to implement a primitive type */
|
||||||
|
# define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0)
|
||||||
|
# define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \
|
||||||
|
ASN1_ITEM_start(itname) \
|
||||||
|
ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0, NULL, ex, #itname \
|
||||||
|
ASN1_ITEM_end(itname)
|
||||||
|
|
||||||
|
/* Macro to implement a multi string type */
|
||||||
|
# define IMPLEMENT_ASN1_MSTRING(itname, mask) \
|
||||||
|
ASN1_ITEM_start(itname) \
|
||||||
|
ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname \
|
||||||
|
ASN1_ITEM_end(itname)
|
||||||
|
|
||||||
|
# define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \
|
||||||
|
ASN1_ITEM_start(sname) \
|
||||||
|
ASN1_ITYPE_EXTERN, \
|
||||||
|
tag, \
|
||||||
|
NULL, \
|
||||||
|
0, \
|
||||||
|
&fptrs, \
|
||||||
|
0, \
|
||||||
|
#sname \
|
||||||
|
ASN1_ITEM_end(sname)
|
||||||
|
|
||||||
|
/* Macro to implement standard functions in terms of ASN1_ITEM structures */
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname)
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname)
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \
|
||||||
|
IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname)
|
||||||
|
|
||||||
|
# define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \
|
||||||
|
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname)
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \
|
||||||
|
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname)
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \
|
||||||
|
pre stname *fname##_new(void) \
|
||||||
|
{ \
|
||||||
|
return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
|
||||||
|
} \
|
||||||
|
pre void fname##_free(stname *a) \
|
||||||
|
{ \
|
||||||
|
ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
|
||||||
|
}
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \
|
||||||
|
stname *fname##_new(void) \
|
||||||
|
{ \
|
||||||
|
return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
|
||||||
|
} \
|
||||||
|
void fname##_free(stname *a) \
|
||||||
|
{ \
|
||||||
|
ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
|
||||||
|
}
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \
|
||||||
|
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
|
||||||
|
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname)
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
|
||||||
|
stname *d2i_##fname(stname **a, const unsigned char **in, long len) \
|
||||||
|
{ \
|
||||||
|
return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\
|
||||||
|
} \
|
||||||
|
int i2d_##fname(const stname *a, unsigned char **out) \
|
||||||
|
{ \
|
||||||
|
return ASN1_item_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\
|
||||||
|
}
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \
|
||||||
|
int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \
|
||||||
|
{ \
|
||||||
|
return ASN1_item_ndef_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname));\
|
||||||
|
}
|
||||||
|
|
||||||
|
# define IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(stname) \
|
||||||
|
static stname *d2i_##stname(stname **a, \
|
||||||
|
const unsigned char **in, long len) \
|
||||||
|
{ \
|
||||||
|
return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \
|
||||||
|
ASN1_ITEM_rptr(stname)); \
|
||||||
|
} \
|
||||||
|
static int i2d_##stname(const stname *a, unsigned char **out) \
|
||||||
|
{ \
|
||||||
|
return ASN1_item_i2d((const ASN1_VALUE *)a, out, \
|
||||||
|
ASN1_ITEM_rptr(stname)); \
|
||||||
|
}
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \
|
||||||
|
stname * stname##_dup(const stname *x) \
|
||||||
|
{ \
|
||||||
|
return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
|
||||||
|
}
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \
|
||||||
|
IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname)
|
||||||
|
|
||||||
|
# define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \
|
||||||
|
int fname##_print_ctx(BIO *out, const stname *x, int indent, \
|
||||||
|
const ASN1_PCTX *pctx) \
|
||||||
|
{ \
|
||||||
|
return ASN1_item_print(out, (const ASN1_VALUE *)x, indent, \
|
||||||
|
ASN1_ITEM_rptr(itname), pctx); \
|
||||||
|
}
|
||||||
|
|
||||||
|
/* external definitions for primitive types */
|
||||||
|
|
||||||
|
DECLARE_ASN1_ITEM(ASN1_BOOLEAN)
|
||||||
|
DECLARE_ASN1_ITEM(ASN1_TBOOLEAN)
|
||||||
|
DECLARE_ASN1_ITEM(ASN1_FBOOLEAN)
|
||||||
|
DECLARE_ASN1_ITEM(ASN1_SEQUENCE)
|
||||||
|
DECLARE_ASN1_ITEM(CBIGNUM)
|
||||||
|
DECLARE_ASN1_ITEM(BIGNUM)
|
||||||
|
DECLARE_ASN1_ITEM(INT32)
|
||||||
|
DECLARE_ASN1_ITEM(ZINT32)
|
||||||
|
DECLARE_ASN1_ITEM(UINT32)
|
||||||
|
DECLARE_ASN1_ITEM(ZUINT32)
|
||||||
|
DECLARE_ASN1_ITEM(INT64)
|
||||||
|
DECLARE_ASN1_ITEM(ZINT64)
|
||||||
|
DECLARE_ASN1_ITEM(UINT64)
|
||||||
|
DECLARE_ASN1_ITEM(ZUINT64)
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
/*
|
||||||
|
* LONG and ZLONG are strongly discouraged for use as stored data, as the
|
||||||
|
* underlying C type (long) differs in size depending on the architecture.
|
||||||
|
* They are designed with 32-bit longs in mind.
|
||||||
|
*/
|
||||||
|
DECLARE_ASN1_ITEM(LONG)
|
||||||
|
DECLARE_ASN1_ITEM(ZLONG)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("ASN1_VALUE");
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
/* Functions used internally by the ASN1 code */
|
||||||
|
|
||||||
|
int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||||
|
void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||||
|
|
||||||
|
int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||||
|
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
||||||
|
ASN1_TLC *ctx);
|
||||||
|
|
||||||
|
int ASN1_item_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
|
||||||
|
const ASN1_ITEM *it, int tag, int aclass);
|
||||||
|
|
||||||
|
/* Legacy compatibility */
|
||||||
|
# define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name)
|
||||||
|
# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
|
||||||
|
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname)
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
96
src/openssl/async.h
Normal file
96
src/openssl/async.h
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ASYNC_H
|
||||||
|
# define OPENSSL_ASYNC_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_ASYNC_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
# if defined(BASETYPES) || defined(_WINDEF_H)
|
||||||
|
/* application has to include <windows.h> to use this */
|
||||||
|
#define OSSL_ASYNC_FD HANDLE
|
||||||
|
#define OSSL_BAD_ASYNC_FD INVALID_HANDLE_VALUE
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
#define OSSL_ASYNC_FD int
|
||||||
|
#define OSSL_BAD_ASYNC_FD -1
|
||||||
|
#endif
|
||||||
|
# include <openssl/asyncerr.h>
|
||||||
|
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
typedef struct async_job_st ASYNC_JOB;
|
||||||
|
typedef struct async_wait_ctx_st ASYNC_WAIT_CTX;
|
||||||
|
typedef int (*ASYNC_callback_fn)(void *arg);
|
||||||
|
|
||||||
|
#define ASYNC_ERR 0
|
||||||
|
#define ASYNC_NO_JOBS 1
|
||||||
|
#define ASYNC_PAUSE 2
|
||||||
|
#define ASYNC_FINISH 3
|
||||||
|
|
||||||
|
#define ASYNC_STATUS_UNSUPPORTED 0
|
||||||
|
#define ASYNC_STATUS_ERR 1
|
||||||
|
#define ASYNC_STATUS_OK 2
|
||||||
|
#define ASYNC_STATUS_EAGAIN 3
|
||||||
|
|
||||||
|
int ASYNC_init_thread(size_t max_size, size_t init_size);
|
||||||
|
void ASYNC_cleanup_thread(void);
|
||||||
|
|
||||||
|
#ifdef OSSL_ASYNC_FD
|
||||||
|
ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void);
|
||||||
|
void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx);
|
||||||
|
int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key,
|
||||||
|
OSSL_ASYNC_FD fd,
|
||||||
|
void *custom_data,
|
||||||
|
void (*cleanup)(ASYNC_WAIT_CTX *, const void *,
|
||||||
|
OSSL_ASYNC_FD, void *));
|
||||||
|
int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key,
|
||||||
|
OSSL_ASYNC_FD *fd, void **custom_data);
|
||||||
|
int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *fd,
|
||||||
|
size_t *numfds);
|
||||||
|
int ASYNC_WAIT_CTX_get_callback(ASYNC_WAIT_CTX *ctx,
|
||||||
|
ASYNC_callback_fn *callback,
|
||||||
|
void **callback_arg);
|
||||||
|
int ASYNC_WAIT_CTX_set_callback(ASYNC_WAIT_CTX *ctx,
|
||||||
|
ASYNC_callback_fn callback,
|
||||||
|
void *callback_arg);
|
||||||
|
int ASYNC_WAIT_CTX_set_status(ASYNC_WAIT_CTX *ctx, int status);
|
||||||
|
int ASYNC_WAIT_CTX_get_status(ASYNC_WAIT_CTX *ctx);
|
||||||
|
int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd,
|
||||||
|
size_t *numaddfds, OSSL_ASYNC_FD *delfd,
|
||||||
|
size_t *numdelfds);
|
||||||
|
int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int ASYNC_is_capable(void);
|
||||||
|
|
||||||
|
int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret,
|
||||||
|
int (*func)(void *), void *args, size_t size);
|
||||||
|
int ASYNC_pause_job(void);
|
||||||
|
|
||||||
|
ASYNC_JOB *ASYNC_get_current_job(void);
|
||||||
|
ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job);
|
||||||
|
void ASYNC_block_pause(void);
|
||||||
|
void ASYNC_unblock_pause(void);
|
||||||
|
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
29
src/openssl/asyncerr.h
Normal file
29
src/openssl/asyncerr.h
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ASYNCERR_H
|
||||||
|
# define OPENSSL_ASYNCERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ASYNC reason codes.
|
||||||
|
*/
|
||||||
|
# define ASYNC_R_FAILED_TO_SET_POOL 101
|
||||||
|
# define ASYNC_R_FAILED_TO_SWAP_CONTEXT 102
|
||||||
|
# define ASYNC_R_INIT_FAILED 105
|
||||||
|
# define ASYNC_R_INVALID_POOL_SIZE 103
|
||||||
|
|
||||||
|
#endif
|
||||||
864
src/openssl/bio.h.in
Normal file
864
src/openssl/bio.h.in
Normal file
@@ -0,0 +1,864 @@
|
|||||||
|
/*
|
||||||
|
* {- join("\n * ", @autowarntext) -}
|
||||||
|
*
|
||||||
|
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
{-
|
||||||
|
use OpenSSL::stackhash qw(generate_stack_macros);
|
||||||
|
-}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_BIO_H
|
||||||
|
# define OPENSSL_BIO_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_BIO_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/e_os2.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
# include <stdio.h>
|
||||||
|
# endif
|
||||||
|
# include <stdarg.h>
|
||||||
|
|
||||||
|
# include <openssl/crypto.h>
|
||||||
|
# include <openssl/bioerr.h>
|
||||||
|
# include <openssl/core.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* There are the classes of BIOs */
|
||||||
|
# define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */
|
||||||
|
# define BIO_TYPE_FILTER 0x0200
|
||||||
|
# define BIO_TYPE_SOURCE_SINK 0x0400
|
||||||
|
|
||||||
|
/* These are the 'types' of BIOs */
|
||||||
|
# define BIO_TYPE_NONE 0
|
||||||
|
# define BIO_TYPE_MEM ( 1|BIO_TYPE_SOURCE_SINK)
|
||||||
|
# define BIO_TYPE_FILE ( 2|BIO_TYPE_SOURCE_SINK)
|
||||||
|
|
||||||
|
# define BIO_TYPE_FD ( 4|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||||
|
# define BIO_TYPE_SOCKET ( 5|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||||
|
# define BIO_TYPE_NULL ( 6|BIO_TYPE_SOURCE_SINK)
|
||||||
|
# define BIO_TYPE_SSL ( 7|BIO_TYPE_FILTER)
|
||||||
|
# define BIO_TYPE_MD ( 8|BIO_TYPE_FILTER)
|
||||||
|
# define BIO_TYPE_BUFFER ( 9|BIO_TYPE_FILTER)
|
||||||
|
# define BIO_TYPE_CIPHER (10|BIO_TYPE_FILTER)
|
||||||
|
# define BIO_TYPE_BASE64 (11|BIO_TYPE_FILTER)
|
||||||
|
# define BIO_TYPE_CONNECT (12|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||||
|
# define BIO_TYPE_ACCEPT (13|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||||
|
|
||||||
|
# define BIO_TYPE_NBIO_TEST (16|BIO_TYPE_FILTER)/* server proxy BIO */
|
||||||
|
# define BIO_TYPE_NULL_FILTER (17|BIO_TYPE_FILTER)
|
||||||
|
# define BIO_TYPE_BIO (19|BIO_TYPE_SOURCE_SINK)/* half a BIO pair */
|
||||||
|
# define BIO_TYPE_LINEBUFFER (20|BIO_TYPE_FILTER)
|
||||||
|
# define BIO_TYPE_DGRAM (21|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||||
|
# define BIO_TYPE_ASN1 (22|BIO_TYPE_FILTER)
|
||||||
|
# define BIO_TYPE_COMP (23|BIO_TYPE_FILTER)
|
||||||
|
# ifndef OPENSSL_NO_SCTP
|
||||||
|
# define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||||
|
# endif
|
||||||
|
# define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK)
|
||||||
|
|
||||||
|
#define BIO_TYPE_START 128
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BIO_FILENAME_READ|BIO_CLOSE to open or close on free.
|
||||||
|
* BIO_set_fp(in,stdin,BIO_NOCLOSE);
|
||||||
|
*/
|
||||||
|
# define BIO_NOCLOSE 0x00
|
||||||
|
# define BIO_CLOSE 0x01
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These are used in the following macros and are passed to BIO_ctrl()
|
||||||
|
*/
|
||||||
|
# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */
|
||||||
|
# define BIO_CTRL_EOF 2/* opt - are we at the eof */
|
||||||
|
# define BIO_CTRL_INFO 3/* opt - extra tit-bits */
|
||||||
|
# define BIO_CTRL_SET 4/* man - set the 'IO' type */
|
||||||
|
# define BIO_CTRL_GET 5/* man - get the 'IO' type */
|
||||||
|
# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */
|
||||||
|
# define BIO_CTRL_POP 7/* opt - internal, used to signify change */
|
||||||
|
# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */
|
||||||
|
# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */
|
||||||
|
# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */
|
||||||
|
# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */
|
||||||
|
# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */
|
||||||
|
# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */
|
||||||
|
# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */
|
||||||
|
# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */
|
||||||
|
|
||||||
|
# define BIO_CTRL_PEEK 29/* BIO_f_buffer special */
|
||||||
|
# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */
|
||||||
|
|
||||||
|
/* dgram BIO stuff */
|
||||||
|
# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */
|
||||||
|
# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected
|
||||||
|
* socket to be passed in */
|
||||||
|
# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */
|
||||||
|
# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */
|
||||||
|
# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */
|
||||||
|
# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */
|
||||||
|
|
||||||
|
# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */
|
||||||
|
# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation timed out */
|
||||||
|
|
||||||
|
/* #ifdef IP_MTU_DISCOVER */
|
||||||
|
# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */
|
||||||
|
/* #endif */
|
||||||
|
|
||||||
|
# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */
|
||||||
|
# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47
|
||||||
|
# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */
|
||||||
|
# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU.
|
||||||
|
* want to use this if asking
|
||||||
|
* the kernel fails */
|
||||||
|
|
||||||
|
# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was
|
||||||
|
* exceed in the previous write
|
||||||
|
* operation */
|
||||||
|
|
||||||
|
# define BIO_CTRL_DGRAM_GET_PEER 46
|
||||||
|
# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */
|
||||||
|
|
||||||
|
# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout
|
||||||
|
* to adjust socket timeouts */
|
||||||
|
# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48
|
||||||
|
|
||||||
|
# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49
|
||||||
|
|
||||||
|
/* Deliberately outside of OPENSSL_NO_SCTP - used in bss_dgram.c */
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50
|
||||||
|
# ifndef OPENSSL_NO_SCTP
|
||||||
|
/* SCTP stuff */
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define BIO_CTRL_DGRAM_SET_PEEK_MODE 71
|
||||||
|
|
||||||
|
/*
|
||||||
|
* internal BIO:
|
||||||
|
* # define BIO_CTRL_SET_KTLS_SEND 72
|
||||||
|
* # define BIO_CTRL_SET_KTLS_SEND_CTRL_MSG 74
|
||||||
|
* # define BIO_CTRL_CLEAR_KTLS_CTRL_MSG 75
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define BIO_CTRL_GET_KTLS_SEND 73
|
||||||
|
# define BIO_CTRL_GET_KTLS_RECV 76
|
||||||
|
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_WAIT_FOR_DRY 77
|
||||||
|
# define BIO_CTRL_DGRAM_SCTP_MSG_WAITING 78
|
||||||
|
|
||||||
|
/* BIO_f_prefix controls */
|
||||||
|
# define BIO_CTRL_SET_PREFIX 79
|
||||||
|
# define BIO_CTRL_SET_INDENT 80
|
||||||
|
# define BIO_CTRL_GET_INDENT 81
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_KTLS
|
||||||
|
# define BIO_get_ktls_send(b) \
|
||||||
|
(BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0)
|
||||||
|
# define BIO_get_ktls_recv(b) \
|
||||||
|
(BIO_ctrl(b, BIO_CTRL_GET_KTLS_RECV, 0, NULL) > 0)
|
||||||
|
# else
|
||||||
|
# define BIO_get_ktls_send(b) (0)
|
||||||
|
# define BIO_get_ktls_recv(b) (0)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* modifiers */
|
||||||
|
# define BIO_FP_READ 0x02
|
||||||
|
# define BIO_FP_WRITE 0x04
|
||||||
|
# define BIO_FP_APPEND 0x08
|
||||||
|
# define BIO_FP_TEXT 0x10
|
||||||
|
|
||||||
|
# define BIO_FLAGS_READ 0x01
|
||||||
|
# define BIO_FLAGS_WRITE 0x02
|
||||||
|
# define BIO_FLAGS_IO_SPECIAL 0x04
|
||||||
|
# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL)
|
||||||
|
# define BIO_FLAGS_SHOULD_RETRY 0x08
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
/* This #define was replaced by an internal constant and should not be used. */
|
||||||
|
# define BIO_FLAGS_UPLINK 0
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define BIO_FLAGS_BASE64_NO_NL 0x100
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is used with memory BIOs:
|
||||||
|
* BIO_FLAGS_MEM_RDONLY means we shouldn't free up or change the data in any way;
|
||||||
|
* BIO_FLAGS_NONCLEAR_RST means we shouldn't clear data on reset.
|
||||||
|
*/
|
||||||
|
# define BIO_FLAGS_MEM_RDONLY 0x200
|
||||||
|
# define BIO_FLAGS_NONCLEAR_RST 0x400
|
||||||
|
# define BIO_FLAGS_IN_EOF 0x800
|
||||||
|
|
||||||
|
/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */
|
||||||
|
|
||||||
|
typedef union bio_addr_st BIO_ADDR;
|
||||||
|
typedef struct bio_addrinfo_st BIO_ADDRINFO;
|
||||||
|
|
||||||
|
int BIO_get_new_index(void);
|
||||||
|
void BIO_set_flags(BIO *b, int flags);
|
||||||
|
int BIO_test_flags(const BIO *b, int flags);
|
||||||
|
void BIO_clear_flags(BIO *b, int flags);
|
||||||
|
|
||||||
|
# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0))
|
||||||
|
# define BIO_set_retry_special(b) \
|
||||||
|
BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY))
|
||||||
|
# define BIO_set_retry_read(b) \
|
||||||
|
BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY))
|
||||||
|
# define BIO_set_retry_write(b) \
|
||||||
|
BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY))
|
||||||
|
|
||||||
|
/* These are normally used internally in BIOs */
|
||||||
|
# define BIO_clear_retry_flags(b) \
|
||||||
|
BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
|
||||||
|
# define BIO_get_retry_flags(b) \
|
||||||
|
BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
|
||||||
|
|
||||||
|
/* These should be used by the application to tell why we should retry */
|
||||||
|
# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ)
|
||||||
|
# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE)
|
||||||
|
# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL)
|
||||||
|
# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS)
|
||||||
|
# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The next three are used in conjunction with the BIO_should_io_special()
|
||||||
|
* condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int
|
||||||
|
* *reason); will walk the BIO stack and return the 'reason' for the special
|
||||||
|
* and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return
|
||||||
|
* the code.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Returned from the SSL bio when the certificate retrieval code had an error
|
||||||
|
*/
|
||||||
|
# define BIO_RR_SSL_X509_LOOKUP 0x01
|
||||||
|
/* Returned from the connect BIO when a connect would have blocked */
|
||||||
|
# define BIO_RR_CONNECT 0x02
|
||||||
|
/* Returned from the accept BIO when an accept would have blocked */
|
||||||
|
# define BIO_RR_ACCEPT 0x03
|
||||||
|
|
||||||
|
/* These are passed by the BIO callback */
|
||||||
|
# define BIO_CB_FREE 0x01
|
||||||
|
# define BIO_CB_READ 0x02
|
||||||
|
# define BIO_CB_WRITE 0x03
|
||||||
|
# define BIO_CB_PUTS 0x04
|
||||||
|
# define BIO_CB_GETS 0x05
|
||||||
|
# define BIO_CB_CTRL 0x06
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The callback is called before and after the underling operation, The
|
||||||
|
* BIO_CB_RETURN flag indicates if it is after the call
|
||||||
|
*/
|
||||||
|
# define BIO_CB_RETURN 0x80
|
||||||
|
# define BIO_CB_return(a) ((a)|BIO_CB_RETURN)
|
||||||
|
# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN))
|
||||||
|
# define BIO_cb_post(a) ((a)&BIO_CB_RETURN)
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi,
|
||||||
|
long argl, long ret);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 BIO_callback_fn BIO_get_callback(const BIO *b);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void BIO_set_callback(BIO *b, BIO_callback_fn callback);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 long BIO_debug_callback(BIO *bio, int cmd,
|
||||||
|
const char *argp, int argi,
|
||||||
|
long argl, long ret);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp,
|
||||||
|
size_t len, int argi,
|
||||||
|
long argl, int ret, size_t *processed);
|
||||||
|
BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b);
|
||||||
|
void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback);
|
||||||
|
long BIO_debug_callback_ex(BIO *bio, int oper, const char *argp, size_t len,
|
||||||
|
int argi, long argl, int ret, size_t *processed);
|
||||||
|
|
||||||
|
char *BIO_get_callback_arg(const BIO *b);
|
||||||
|
void BIO_set_callback_arg(BIO *b, char *arg);
|
||||||
|
|
||||||
|
typedef struct bio_method_st BIO_METHOD;
|
||||||
|
|
||||||
|
const char *BIO_method_name(const BIO *b);
|
||||||
|
int BIO_method_type(const BIO *b);
|
||||||
|
|
||||||
|
typedef int BIO_info_cb(BIO *, int, int);
|
||||||
|
typedef BIO_info_cb bio_info_cb; /* backward compatibility */
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("BIO");
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
/* Prefix and suffix callback in ASN1 BIO */
|
||||||
|
typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen,
|
||||||
|
void *parg);
|
||||||
|
|
||||||
|
typedef void (*BIO_dgram_sctp_notification_handler_fn) (BIO *b,
|
||||||
|
void *context,
|
||||||
|
void *buf);
|
||||||
|
# ifndef OPENSSL_NO_SCTP
|
||||||
|
/* SCTP parameter structs */
|
||||||
|
struct bio_dgram_sctp_sndinfo {
|
||||||
|
uint16_t snd_sid;
|
||||||
|
uint16_t snd_flags;
|
||||||
|
uint32_t snd_ppid;
|
||||||
|
uint32_t snd_context;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct bio_dgram_sctp_rcvinfo {
|
||||||
|
uint16_t rcv_sid;
|
||||||
|
uint16_t rcv_ssn;
|
||||||
|
uint16_t rcv_flags;
|
||||||
|
uint32_t rcv_ppid;
|
||||||
|
uint32_t rcv_tsn;
|
||||||
|
uint32_t rcv_cumtsn;
|
||||||
|
uint32_t rcv_context;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct bio_dgram_sctp_prinfo {
|
||||||
|
uint16_t pr_policy;
|
||||||
|
uint32_t pr_value;
|
||||||
|
};
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* #define BIO_CONN_get_param_hostname BIO_ctrl
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define BIO_C_SET_CONNECT 100
|
||||||
|
# define BIO_C_DO_STATE_MACHINE 101
|
||||||
|
# define BIO_C_SET_NBIO 102
|
||||||
|
/* # define BIO_C_SET_PROXY_PARAM 103 */
|
||||||
|
# define BIO_C_SET_FD 104
|
||||||
|
# define BIO_C_GET_FD 105
|
||||||
|
# define BIO_C_SET_FILE_PTR 106
|
||||||
|
# define BIO_C_GET_FILE_PTR 107
|
||||||
|
# define BIO_C_SET_FILENAME 108
|
||||||
|
# define BIO_C_SET_SSL 109
|
||||||
|
# define BIO_C_GET_SSL 110
|
||||||
|
# define BIO_C_SET_MD 111
|
||||||
|
# define BIO_C_GET_MD 112
|
||||||
|
# define BIO_C_GET_CIPHER_STATUS 113
|
||||||
|
# define BIO_C_SET_BUF_MEM 114
|
||||||
|
# define BIO_C_GET_BUF_MEM_PTR 115
|
||||||
|
# define BIO_C_GET_BUFF_NUM_LINES 116
|
||||||
|
# define BIO_C_SET_BUFF_SIZE 117
|
||||||
|
# define BIO_C_SET_ACCEPT 118
|
||||||
|
# define BIO_C_SSL_MODE 119
|
||||||
|
# define BIO_C_GET_MD_CTX 120
|
||||||
|
/* # define BIO_C_GET_PROXY_PARAM 121 */
|
||||||
|
# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */
|
||||||
|
# define BIO_C_GET_CONNECT 123
|
||||||
|
# define BIO_C_GET_ACCEPT 124
|
||||||
|
# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125
|
||||||
|
# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126
|
||||||
|
# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127
|
||||||
|
# define BIO_C_FILE_SEEK 128
|
||||||
|
# define BIO_C_GET_CIPHER_CTX 129
|
||||||
|
# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input
|
||||||
|
* value */
|
||||||
|
# define BIO_C_SET_BIND_MODE 131
|
||||||
|
# define BIO_C_GET_BIND_MODE 132
|
||||||
|
# define BIO_C_FILE_TELL 133
|
||||||
|
# define BIO_C_GET_SOCKS 134
|
||||||
|
# define BIO_C_SET_SOCKS 135
|
||||||
|
|
||||||
|
# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */
|
||||||
|
# define BIO_C_GET_WRITE_BUF_SIZE 137
|
||||||
|
# define BIO_C_MAKE_BIO_PAIR 138
|
||||||
|
# define BIO_C_DESTROY_BIO_PAIR 139
|
||||||
|
# define BIO_C_GET_WRITE_GUARANTEE 140
|
||||||
|
# define BIO_C_GET_READ_REQUEST 141
|
||||||
|
# define BIO_C_SHUTDOWN_WR 142
|
||||||
|
# define BIO_C_NREAD0 143
|
||||||
|
# define BIO_C_NREAD 144
|
||||||
|
# define BIO_C_NWRITE0 145
|
||||||
|
# define BIO_C_NWRITE 146
|
||||||
|
# define BIO_C_RESET_READ_REQUEST 147
|
||||||
|
# define BIO_C_SET_MD_CTX 148
|
||||||
|
|
||||||
|
# define BIO_C_SET_PREFIX 149
|
||||||
|
# define BIO_C_GET_PREFIX 150
|
||||||
|
# define BIO_C_SET_SUFFIX 151
|
||||||
|
# define BIO_C_GET_SUFFIX 152
|
||||||
|
|
||||||
|
# define BIO_C_SET_EX_ARG 153
|
||||||
|
# define BIO_C_GET_EX_ARG 154
|
||||||
|
|
||||||
|
# define BIO_C_SET_CONNECT_MODE 155
|
||||||
|
|
||||||
|
# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg)
|
||||||
|
# define BIO_get_app_data(s) BIO_get_ex_data(s,0)
|
||||||
|
|
||||||
|
# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_SOCK
|
||||||
|
/* IP families we support, for BIO_s_connect() and BIO_s_accept() */
|
||||||
|
/* Note: the underlying operating system may not support some of them */
|
||||||
|
# define BIO_FAMILY_IPV4 4
|
||||||
|
# define BIO_FAMILY_IPV6 6
|
||||||
|
# define BIO_FAMILY_IPANY 256
|
||||||
|
|
||||||
|
/* BIO_s_connect() */
|
||||||
|
# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0, \
|
||||||
|
(char *)(name))
|
||||||
|
# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1, \
|
||||||
|
(char *)(port))
|
||||||
|
# define BIO_set_conn_address(b,addr) BIO_ctrl(b,BIO_C_SET_CONNECT,2, \
|
||||||
|
(char *)(addr))
|
||||||
|
# define BIO_set_conn_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_CONNECT,3,f)
|
||||||
|
# define BIO_get_conn_hostname(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0))
|
||||||
|
# define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1))
|
||||||
|
# define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2))
|
||||||
|
# define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL)
|
||||||
|
# define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL)
|
||||||
|
|
||||||
|
/* BIO_s_accept() */
|
||||||
|
# define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \
|
||||||
|
(char *)(name))
|
||||||
|
# define BIO_set_accept_port(b,port) BIO_ctrl(b,BIO_C_SET_ACCEPT,1, \
|
||||||
|
(char *)(port))
|
||||||
|
# define BIO_get_accept_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0))
|
||||||
|
# define BIO_get_accept_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,1))
|
||||||
|
# define BIO_get_peer_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,2))
|
||||||
|
# define BIO_get_peer_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,3))
|
||||||
|
/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */
|
||||||
|
# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(n)?(void *)"a":NULL)
|
||||||
|
# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,3, \
|
||||||
|
(char *)(bio))
|
||||||
|
# define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f)
|
||||||
|
# define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL)
|
||||||
|
|
||||||
|
/* Aliases kept for backward compatibility */
|
||||||
|
# define BIO_BIND_NORMAL 0
|
||||||
|
# define BIO_BIND_REUSEADDR BIO_SOCK_REUSEADDR
|
||||||
|
# define BIO_BIND_REUSEADDR_IF_UNUSED BIO_SOCK_REUSEADDR
|
||||||
|
# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL)
|
||||||
|
# define BIO_get_bind_mode(b) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL)
|
||||||
|
# endif /* OPENSSL_NO_SOCK */
|
||||||
|
|
||||||
|
# define BIO_do_connect(b) BIO_do_handshake(b)
|
||||||
|
# define BIO_do_accept(b) BIO_do_handshake(b)
|
||||||
|
|
||||||
|
# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)
|
||||||
|
|
||||||
|
/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */
|
||||||
|
# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd)
|
||||||
|
# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)(c))
|
||||||
|
|
||||||
|
/* BIO_s_file() */
|
||||||
|
# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)(fp))
|
||||||
|
# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)(fpp))
|
||||||
|
|
||||||
|
/* BIO_s_fd() and BIO_s_file() */
|
||||||
|
# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL)
|
||||||
|
# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* name is cast to lose const, but might be better to route through a
|
||||||
|
* function so we can do it safely
|
||||||
|
*/
|
||||||
|
# ifdef CONST_STRICT
|
||||||
|
/*
|
||||||
|
* If you are wondering why this isn't defined, its because CONST_STRICT is
|
||||||
|
* purely a compile-time kludge to allow const to be checked.
|
||||||
|
*/
|
||||||
|
int BIO_read_filename(BIO *b, const char *name);
|
||||||
|
# else
|
||||||
|
# define BIO_read_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
|
||||||
|
BIO_CLOSE|BIO_FP_READ,(char *)(name))
|
||||||
|
# endif
|
||||||
|
# define BIO_write_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
|
||||||
|
BIO_CLOSE|BIO_FP_WRITE,name)
|
||||||
|
# define BIO_append_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
|
||||||
|
BIO_CLOSE|BIO_FP_APPEND,name)
|
||||||
|
# define BIO_rw_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
|
||||||
|
BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* WARNING WARNING, this ups the reference count on the read bio of the SSL
|
||||||
|
* structure. This is because the ssl read BIO is now pointed to by the
|
||||||
|
* next_bio field in the bio. So when you free the BIO, make sure you are
|
||||||
|
* doing a BIO_free_all() to catch the underlying BIO.
|
||||||
|
*/
|
||||||
|
# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)(ssl))
|
||||||
|
# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)(sslp))
|
||||||
|
# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL)
|
||||||
|
# define BIO_set_ssl_renegotiate_bytes(b,num) \
|
||||||
|
BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL)
|
||||||
|
# define BIO_get_num_renegotiates(b) \
|
||||||
|
BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL)
|
||||||
|
# define BIO_set_ssl_renegotiate_timeout(b,seconds) \
|
||||||
|
BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL)
|
||||||
|
|
||||||
|
/* defined in evp.h */
|
||||||
|
/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)(md)) */
|
||||||
|
|
||||||
|
# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)(pp))
|
||||||
|
# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)(bm))
|
||||||
|
# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0, \
|
||||||
|
(char *)(pp))
|
||||||
|
# define BIO_set_mem_eof_return(b,v) \
|
||||||
|
BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL)
|
||||||
|
|
||||||
|
/* For the BIO_f_buffer() type */
|
||||||
|
# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL)
|
||||||
|
# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL)
|
||||||
|
# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0)
|
||||||
|
# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1)
|
||||||
|
# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf)
|
||||||
|
|
||||||
|
/* Don't use the next one unless you know what you are doing :-) */
|
||||||
|
# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret))
|
||||||
|
|
||||||
|
# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL)
|
||||||
|
# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL)
|
||||||
|
# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL)
|
||||||
|
# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL)
|
||||||
|
# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
|
||||||
|
# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL)
|
||||||
|
/* ...pending macros have inappropriate return type */
|
||||||
|
size_t BIO_ctrl_pending(BIO *b);
|
||||||
|
size_t BIO_ctrl_wpending(BIO *b);
|
||||||
|
# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL)
|
||||||
|
# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \
|
||||||
|
cbp)
|
||||||
|
# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb)
|
||||||
|
|
||||||
|
/* For the BIO_f_buffer() type */
|
||||||
|
# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL)
|
||||||
|
# define BIO_buffer_peek(b,s,l) BIO_ctrl(b,BIO_CTRL_PEEK,(l),(s))
|
||||||
|
|
||||||
|
/* For BIO_s_bio() */
|
||||||
|
# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL)
|
||||||
|
# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL)
|
||||||
|
# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2)
|
||||||
|
# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL)
|
||||||
|
# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL)
|
||||||
|
/* macros with inappropriate type -- but ...pending macros use int too: */
|
||||||
|
# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL)
|
||||||
|
# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL)
|
||||||
|
size_t BIO_ctrl_get_write_guarantee(BIO *b);
|
||||||
|
size_t BIO_ctrl_get_read_request(BIO *b);
|
||||||
|
int BIO_ctrl_reset_read_request(BIO *b);
|
||||||
|
|
||||||
|
/* ctrl macros for dgram */
|
||||||
|
# define BIO_ctrl_dgram_connect(b,peer) \
|
||||||
|
(int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)(peer))
|
||||||
|
# define BIO_ctrl_set_connected(b,peer) \
|
||||||
|
(int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (char *)(peer))
|
||||||
|
# define BIO_dgram_recv_timedout(b) \
|
||||||
|
(int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL)
|
||||||
|
# define BIO_dgram_send_timedout(b) \
|
||||||
|
(int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL)
|
||||||
|
# define BIO_dgram_get_peer(b,peer) \
|
||||||
|
(int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer))
|
||||||
|
# define BIO_dgram_set_peer(b,peer) \
|
||||||
|
(int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer))
|
||||||
|
# define BIO_dgram_get_mtu_overhead(b) \
|
||||||
|
(unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL)
|
||||||
|
|
||||||
|
/* ctrl macros for BIO_f_prefix */
|
||||||
|
# define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p))
|
||||||
|
# define BIO_set_indent(b,i) BIO_ctrl((b), BIO_CTRL_SET_INDENT, (i), NULL)
|
||||||
|
# define BIO_get_indent(b) BIO_ctrl((b), BIO_CTRL_GET_INDENT, 0, NULL)
|
||||||
|
|
||||||
|
#define BIO_get_ex_new_index(l, p, newf, dupf, freef) \
|
||||||
|
CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_BIO, l, p, newf, dupf, freef)
|
||||||
|
int BIO_set_ex_data(BIO *bio, int idx, void *data);
|
||||||
|
void *BIO_get_ex_data(const BIO *bio, int idx);
|
||||||
|
uint64_t BIO_number_read(BIO *bio);
|
||||||
|
uint64_t BIO_number_written(BIO *bio);
|
||||||
|
|
||||||
|
/* For BIO_f_asn1() */
|
||||||
|
int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix,
|
||||||
|
asn1_ps_func *prefix_free);
|
||||||
|
int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix,
|
||||||
|
asn1_ps_func **pprefix_free);
|
||||||
|
int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix,
|
||||||
|
asn1_ps_func *suffix_free);
|
||||||
|
int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix,
|
||||||
|
asn1_ps_func **psuffix_free);
|
||||||
|
|
||||||
|
const BIO_METHOD *BIO_s_file(void);
|
||||||
|
BIO *BIO_new_file(const char *filename, const char *mode);
|
||||||
|
BIO *BIO_new_from_core_bio(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio);
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
BIO *BIO_new_fp(FILE *stream, int close_flag);
|
||||||
|
# endif
|
||||||
|
BIO *BIO_new_ex(OSSL_LIB_CTX *libctx, const BIO_METHOD *method);
|
||||||
|
BIO *BIO_new(const BIO_METHOD *type);
|
||||||
|
int BIO_free(BIO *a);
|
||||||
|
void BIO_set_data(BIO *a, void *ptr);
|
||||||
|
void *BIO_get_data(BIO *a);
|
||||||
|
void BIO_set_init(BIO *a, int init);
|
||||||
|
int BIO_get_init(BIO *a);
|
||||||
|
void BIO_set_shutdown(BIO *a, int shut);
|
||||||
|
int BIO_get_shutdown(BIO *a);
|
||||||
|
void BIO_vfree(BIO *a);
|
||||||
|
int BIO_up_ref(BIO *a);
|
||||||
|
int BIO_read(BIO *b, void *data, int dlen);
|
||||||
|
int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes);
|
||||||
|
int BIO_gets(BIO *bp, char *buf, int size);
|
||||||
|
int BIO_get_line(BIO *bio, char *buf, int size);
|
||||||
|
int BIO_write(BIO *b, const void *data, int dlen);
|
||||||
|
int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written);
|
||||||
|
int BIO_puts(BIO *bp, const char *buf);
|
||||||
|
int BIO_indent(BIO *b, int indent, int max);
|
||||||
|
long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
|
||||||
|
long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp);
|
||||||
|
void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg);
|
||||||
|
long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
|
||||||
|
BIO *BIO_push(BIO *b, BIO *append);
|
||||||
|
BIO *BIO_pop(BIO *b);
|
||||||
|
void BIO_free_all(BIO *a);
|
||||||
|
BIO *BIO_find_type(BIO *b, int bio_type);
|
||||||
|
BIO *BIO_next(BIO *b);
|
||||||
|
void BIO_set_next(BIO *b, BIO *next);
|
||||||
|
BIO *BIO_get_retry_BIO(BIO *bio, int *reason);
|
||||||
|
int BIO_get_retry_reason(BIO *bio);
|
||||||
|
void BIO_set_retry_reason(BIO *bio, int reason);
|
||||||
|
BIO *BIO_dup_chain(BIO *in);
|
||||||
|
|
||||||
|
int BIO_nread0(BIO *bio, char **buf);
|
||||||
|
int BIO_nread(BIO *bio, char **buf, int num);
|
||||||
|
int BIO_nwrite0(BIO *bio, char **buf);
|
||||||
|
int BIO_nwrite(BIO *bio, char **buf, int num);
|
||||||
|
|
||||||
|
const BIO_METHOD *BIO_s_mem(void);
|
||||||
|
const BIO_METHOD *BIO_s_secmem(void);
|
||||||
|
BIO *BIO_new_mem_buf(const void *buf, int len);
|
||||||
|
# ifndef OPENSSL_NO_SOCK
|
||||||
|
const BIO_METHOD *BIO_s_socket(void);
|
||||||
|
const BIO_METHOD *BIO_s_connect(void);
|
||||||
|
const BIO_METHOD *BIO_s_accept(void);
|
||||||
|
# endif
|
||||||
|
const BIO_METHOD *BIO_s_fd(void);
|
||||||
|
const BIO_METHOD *BIO_s_log(void);
|
||||||
|
const BIO_METHOD *BIO_s_bio(void);
|
||||||
|
const BIO_METHOD *BIO_s_null(void);
|
||||||
|
const BIO_METHOD *BIO_f_null(void);
|
||||||
|
const BIO_METHOD *BIO_f_buffer(void);
|
||||||
|
const BIO_METHOD *BIO_f_readbuffer(void);
|
||||||
|
const BIO_METHOD *BIO_f_linebuffer(void);
|
||||||
|
const BIO_METHOD *BIO_f_nbio_test(void);
|
||||||
|
const BIO_METHOD *BIO_f_prefix(void);
|
||||||
|
const BIO_METHOD *BIO_s_core(void);
|
||||||
|
# ifndef OPENSSL_NO_DGRAM
|
||||||
|
const BIO_METHOD *BIO_s_datagram(void);
|
||||||
|
int BIO_dgram_non_fatal_error(int error);
|
||||||
|
BIO *BIO_new_dgram(int fd, int close_flag);
|
||||||
|
# ifndef OPENSSL_NO_SCTP
|
||||||
|
const BIO_METHOD *BIO_s_datagram_sctp(void);
|
||||||
|
BIO *BIO_new_dgram_sctp(int fd, int close_flag);
|
||||||
|
int BIO_dgram_is_sctp(BIO *bio);
|
||||||
|
int BIO_dgram_sctp_notification_cb(BIO *b,
|
||||||
|
BIO_dgram_sctp_notification_handler_fn handle_notifications,
|
||||||
|
void *context);
|
||||||
|
int BIO_dgram_sctp_wait_for_dry(BIO *b);
|
||||||
|
int BIO_dgram_sctp_msg_waiting(BIO *b);
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_SOCK
|
||||||
|
int BIO_sock_should_retry(int i);
|
||||||
|
int BIO_sock_non_fatal_error(int error);
|
||||||
|
int BIO_socket_wait(int fd, int for_read, time_t max_time);
|
||||||
|
# endif
|
||||||
|
int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds);
|
||||||
|
int BIO_do_connect_retry(BIO *bio, int timeout, int nap_milliseconds);
|
||||||
|
|
||||||
|
int BIO_fd_should_retry(int i);
|
||||||
|
int BIO_fd_non_fatal_error(int error);
|
||||||
|
int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u),
|
||||||
|
void *u, const void *s, int len);
|
||||||
|
int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u),
|
||||||
|
void *u, const void *s, int len, int indent);
|
||||||
|
int BIO_dump(BIO *b, const void *bytes, int len);
|
||||||
|
int BIO_dump_indent(BIO *b, const void *bytes, int len, int indent);
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
int BIO_dump_fp(FILE *fp, const void *s, int len);
|
||||||
|
int BIO_dump_indent_fp(FILE *fp, const void *s, int len, int indent);
|
||||||
|
# endif
|
||||||
|
int BIO_hex_string(BIO *out, int indent, int width, const void *data,
|
||||||
|
int datalen);
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_SOCK
|
||||||
|
BIO_ADDR *BIO_ADDR_new(void);
|
||||||
|
int BIO_ADDR_rawmake(BIO_ADDR *ap, int family,
|
||||||
|
const void *where, size_t wherelen, unsigned short port);
|
||||||
|
void BIO_ADDR_free(BIO_ADDR *);
|
||||||
|
void BIO_ADDR_clear(BIO_ADDR *ap);
|
||||||
|
int BIO_ADDR_family(const BIO_ADDR *ap);
|
||||||
|
int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l);
|
||||||
|
unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap);
|
||||||
|
char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric);
|
||||||
|
char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric);
|
||||||
|
char *BIO_ADDR_path_string(const BIO_ADDR *ap);
|
||||||
|
|
||||||
|
const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai);
|
||||||
|
int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai);
|
||||||
|
int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai);
|
||||||
|
int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai);
|
||||||
|
const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai);
|
||||||
|
void BIO_ADDRINFO_free(BIO_ADDRINFO *bai);
|
||||||
|
|
||||||
|
enum BIO_hostserv_priorities {
|
||||||
|
BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV
|
||||||
|
};
|
||||||
|
int BIO_parse_hostserv(const char *hostserv, char **host, char **service,
|
||||||
|
enum BIO_hostserv_priorities hostserv_prio);
|
||||||
|
enum BIO_lookup_type {
|
||||||
|
BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER
|
||||||
|
};
|
||||||
|
int BIO_lookup(const char *host, const char *service,
|
||||||
|
enum BIO_lookup_type lookup_type,
|
||||||
|
int family, int socktype, BIO_ADDRINFO **res);
|
||||||
|
int BIO_lookup_ex(const char *host, const char *service,
|
||||||
|
int lookup_type, int family, int socktype, int protocol,
|
||||||
|
BIO_ADDRINFO **res);
|
||||||
|
int BIO_sock_error(int sock);
|
||||||
|
int BIO_socket_ioctl(int fd, long type, void *arg);
|
||||||
|
int BIO_socket_nbio(int fd, int mode);
|
||||||
|
int BIO_sock_init(void);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# define BIO_sock_cleanup() while(0) continue
|
||||||
|
# endif
|
||||||
|
int BIO_set_tcp_ndelay(int sock, int turn_on);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
OSSL_DEPRECATEDIN_1_1_0 struct hostent *BIO_gethostbyname(const char *name);
|
||||||
|
OSSL_DEPRECATEDIN_1_1_0 int BIO_get_port(const char *str, unsigned short *port_ptr);
|
||||||
|
OSSL_DEPRECATEDIN_1_1_0 int BIO_get_host_ip(const char *str, unsigned char *ip);
|
||||||
|
OSSL_DEPRECATEDIN_1_1_0 int BIO_get_accept_socket(char *host_port, int mode);
|
||||||
|
OSSL_DEPRECATEDIN_1_1_0 int BIO_accept(int sock, char **ip_port);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
union BIO_sock_info_u {
|
||||||
|
BIO_ADDR *addr;
|
||||||
|
};
|
||||||
|
enum BIO_sock_info_type {
|
||||||
|
BIO_SOCK_INFO_ADDRESS
|
||||||
|
};
|
||||||
|
int BIO_sock_info(int sock,
|
||||||
|
enum BIO_sock_info_type type, union BIO_sock_info_u *info);
|
||||||
|
|
||||||
|
# define BIO_SOCK_REUSEADDR 0x01
|
||||||
|
# define BIO_SOCK_V6_ONLY 0x02
|
||||||
|
# define BIO_SOCK_KEEPALIVE 0x04
|
||||||
|
# define BIO_SOCK_NONBLOCK 0x08
|
||||||
|
# define BIO_SOCK_NODELAY 0x10
|
||||||
|
|
||||||
|
int BIO_socket(int domain, int socktype, int protocol, int options);
|
||||||
|
int BIO_connect(int sock, const BIO_ADDR *addr, int options);
|
||||||
|
int BIO_bind(int sock, const BIO_ADDR *addr, int options);
|
||||||
|
int BIO_listen(int sock, const BIO_ADDR *addr, int options);
|
||||||
|
int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options);
|
||||||
|
int BIO_closesocket(int sock);
|
||||||
|
|
||||||
|
BIO *BIO_new_socket(int sock, int close_flag);
|
||||||
|
BIO *BIO_new_connect(const char *host_port);
|
||||||
|
BIO *BIO_new_accept(const char *host_port);
|
||||||
|
# endif /* OPENSSL_NO_SOCK*/
|
||||||
|
|
||||||
|
BIO *BIO_new_fd(int fd, int close_flag);
|
||||||
|
|
||||||
|
int BIO_new_bio_pair(BIO **bio1, size_t writebuf1,
|
||||||
|
BIO **bio2, size_t writebuf2);
|
||||||
|
/*
|
||||||
|
* If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints.
|
||||||
|
* Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default
|
||||||
|
* value.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void BIO_copy_next_retry(BIO *b);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* long BIO_ghbn_ctrl(int cmd,int iarg,char *parg);
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ossl_bio__attr__(x)
|
||||||
|
# if defined(__GNUC__) && defined(__STDC_VERSION__) \
|
||||||
|
&& !defined(__MINGW32__) && !defined(__MINGW64__) \
|
||||||
|
&& !defined(__APPLE__)
|
||||||
|
/*
|
||||||
|
* Because we support the 'z' modifier, which made its appearance in C99,
|
||||||
|
* we can't use __attribute__ with pre C99 dialects.
|
||||||
|
*/
|
||||||
|
# if __STDC_VERSION__ >= 199901L
|
||||||
|
# undef ossl_bio__attr__
|
||||||
|
# define ossl_bio__attr__ __attribute__
|
||||||
|
# if __GNUC__*10 + __GNUC_MINOR__ >= 44
|
||||||
|
# define ossl_bio__printf__ __gnu_printf__
|
||||||
|
# else
|
||||||
|
# define ossl_bio__printf__ __printf__
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
int BIO_printf(BIO *bio, const char *format, ...)
|
||||||
|
ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3)));
|
||||||
|
int BIO_vprintf(BIO *bio, const char *format, va_list args)
|
||||||
|
ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0)));
|
||||||
|
int BIO_snprintf(char *buf, size_t n, const char *format, ...)
|
||||||
|
ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4)));
|
||||||
|
int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
|
||||||
|
ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0)));
|
||||||
|
# undef ossl_bio__attr__
|
||||||
|
# undef ossl_bio__printf__
|
||||||
|
|
||||||
|
|
||||||
|
BIO_METHOD *BIO_meth_new(int type, const char *name);
|
||||||
|
void BIO_meth_free(BIO_METHOD *biom);
|
||||||
|
int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int);
|
||||||
|
int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t,
|
||||||
|
size_t *);
|
||||||
|
int BIO_meth_set_write(BIO_METHOD *biom,
|
||||||
|
int (*write) (BIO *, const char *, int));
|
||||||
|
int BIO_meth_set_write_ex(BIO_METHOD *biom,
|
||||||
|
int (*bwrite) (BIO *, const char *, size_t, size_t *));
|
||||||
|
int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int);
|
||||||
|
int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *);
|
||||||
|
int BIO_meth_set_read(BIO_METHOD *biom,
|
||||||
|
int (*read) (BIO *, char *, int));
|
||||||
|
int BIO_meth_set_read_ex(BIO_METHOD *biom,
|
||||||
|
int (*bread) (BIO *, char *, size_t, size_t *));
|
||||||
|
int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *);
|
||||||
|
int BIO_meth_set_puts(BIO_METHOD *biom,
|
||||||
|
int (*puts) (BIO *, const char *));
|
||||||
|
int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int);
|
||||||
|
int BIO_meth_set_gets(BIO_METHOD *biom,
|
||||||
|
int (*gets) (BIO *, char *, int));
|
||||||
|
long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *);
|
||||||
|
int BIO_meth_set_ctrl(BIO_METHOD *biom,
|
||||||
|
long (*ctrl) (BIO *, int, long, void *));
|
||||||
|
int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *);
|
||||||
|
int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *));
|
||||||
|
int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *);
|
||||||
|
int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *));
|
||||||
|
long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom))
|
||||||
|
(BIO *, int, BIO_info_cb *);
|
||||||
|
int BIO_meth_set_callback_ctrl(BIO_METHOD *biom,
|
||||||
|
long (*callback_ctrl) (BIO *, int,
|
||||||
|
BIO_info_cb *));
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
65
src/openssl/bioerr.h
Normal file
65
src/openssl/bioerr.h
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_BIOERR_H
|
||||||
|
# define OPENSSL_BIOERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BIO reason codes.
|
||||||
|
*/
|
||||||
|
# define BIO_R_ACCEPT_ERROR 100
|
||||||
|
# define BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET 141
|
||||||
|
# define BIO_R_AMBIGUOUS_HOST_OR_SERVICE 129
|
||||||
|
# define BIO_R_BAD_FOPEN_MODE 101
|
||||||
|
# define BIO_R_BROKEN_PIPE 124
|
||||||
|
# define BIO_R_CONNECT_ERROR 103
|
||||||
|
# define BIO_R_CONNECT_TIMEOUT 147
|
||||||
|
# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107
|
||||||
|
# define BIO_R_GETSOCKNAME_ERROR 132
|
||||||
|
# define BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS 133
|
||||||
|
# define BIO_R_GETTING_SOCKTYPE 134
|
||||||
|
# define BIO_R_INVALID_ARGUMENT 125
|
||||||
|
# define BIO_R_INVALID_SOCKET 135
|
||||||
|
# define BIO_R_IN_USE 123
|
||||||
|
# define BIO_R_LENGTH_TOO_LONG 102
|
||||||
|
# define BIO_R_LISTEN_V6_ONLY 136
|
||||||
|
# define BIO_R_LOOKUP_RETURNED_NOTHING 142
|
||||||
|
# define BIO_R_MALFORMED_HOST_OR_SERVICE 130
|
||||||
|
# define BIO_R_NBIO_CONNECT_ERROR 110
|
||||||
|
# define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143
|
||||||
|
# define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144
|
||||||
|
# define BIO_R_NO_PORT_DEFINED 113
|
||||||
|
# define BIO_R_NO_SUCH_FILE 128
|
||||||
|
# define BIO_R_NULL_PARAMETER 115 /* unused */
|
||||||
|
# define BIO_R_TRANSFER_ERROR 104
|
||||||
|
# define BIO_R_TRANSFER_TIMEOUT 105
|
||||||
|
# define BIO_R_UNABLE_TO_BIND_SOCKET 117
|
||||||
|
# define BIO_R_UNABLE_TO_CREATE_SOCKET 118
|
||||||
|
# define BIO_R_UNABLE_TO_KEEPALIVE 137
|
||||||
|
# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119
|
||||||
|
# define BIO_R_UNABLE_TO_NODELAY 138
|
||||||
|
# define BIO_R_UNABLE_TO_REUSEADDR 139
|
||||||
|
# define BIO_R_UNAVAILABLE_IP_FAMILY 145
|
||||||
|
# define BIO_R_UNINITIALIZED 120
|
||||||
|
# define BIO_R_UNKNOWN_INFO_TYPE 140
|
||||||
|
# define BIO_R_UNSUPPORTED_IP_FAMILY 146
|
||||||
|
# define BIO_R_UNSUPPORTED_METHOD 121
|
||||||
|
# define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131
|
||||||
|
# define BIO_R_WRITE_TO_READ_ONLY_BIO 126
|
||||||
|
# define BIO_R_WSASTARTUP 122
|
||||||
|
|
||||||
|
#endif
|
||||||
78
src/openssl/blowfish.h
Normal file
78
src/openssl/blowfish.h
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_BLOWFISH_H
|
||||||
|
# define OPENSSL_BLOWFISH_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_BLOWFISH_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_BF
|
||||||
|
# include <openssl/e_os2.h>
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define BF_BLOCK 8
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
|
||||||
|
# define BF_ENCRYPT 1
|
||||||
|
# define BF_DECRYPT 0
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
* ! BF_LONG has to be at least 32 bits wide. !
|
||||||
|
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
*/
|
||||||
|
# define BF_LONG unsigned int
|
||||||
|
|
||||||
|
# define BF_ROUNDS 16
|
||||||
|
|
||||||
|
typedef struct bf_key_st {
|
||||||
|
BF_LONG P[BF_ROUNDS + 2];
|
||||||
|
BF_LONG S[4 * 256];
|
||||||
|
} BF_KEY;
|
||||||
|
|
||||||
|
# endif /* OPENSSL_NO_DEPRECATED_3_0 */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void BF_set_key(BF_KEY *key, int len,
|
||||||
|
const unsigned char *data);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void BF_encrypt(BF_LONG *data, const BF_KEY *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void BF_decrypt(BF_LONG *data, const BF_KEY *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void BF_ecb_encrypt(const unsigned char *in,
|
||||||
|
unsigned char *out, const BF_KEY *key,
|
||||||
|
int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void BF_cbc_encrypt(const unsigned char *in,
|
||||||
|
unsigned char *out, long length,
|
||||||
|
const BF_KEY *schedule,
|
||||||
|
unsigned char *ivec, int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void BF_cfb64_encrypt(const unsigned char *in,
|
||||||
|
unsigned char *out,
|
||||||
|
long length, const BF_KEY *schedule,
|
||||||
|
unsigned char *ivec, int *num,
|
||||||
|
int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void BF_ofb64_encrypt(const unsigned char *in,
|
||||||
|
unsigned char *out,
|
||||||
|
long length, const BF_KEY *schedule,
|
||||||
|
unsigned char *ivec, int *num);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const char *BF_options(void);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
584
src/openssl/bn.h
Normal file
584
src/openssl/bn.h
Normal file
@@ -0,0 +1,584 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_BN_H
|
||||||
|
# define OPENSSL_BN_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_BN_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/e_os2.h>
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
# include <stdio.h>
|
||||||
|
# endif
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# include <openssl/crypto.h>
|
||||||
|
# include <openssl/bnerr.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 64-bit processor with LP64 ABI
|
||||||
|
*/
|
||||||
|
# ifdef SIXTY_FOUR_BIT_LONG
|
||||||
|
# define BN_ULONG unsigned long
|
||||||
|
# define BN_BYTES 8
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 64-bit processor other than LP64 ABI
|
||||||
|
*/
|
||||||
|
# ifdef SIXTY_FOUR_BIT
|
||||||
|
# define BN_ULONG unsigned long long
|
||||||
|
# define BN_BYTES 8
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef THIRTY_TWO_BIT
|
||||||
|
# define BN_ULONG unsigned int
|
||||||
|
# define BN_BYTES 4
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define BN_BITS2 (BN_BYTES * 8)
|
||||||
|
# define BN_BITS (BN_BITS2 * 2)
|
||||||
|
# define BN_TBIT ((BN_ULONG)1 << (BN_BITS2 - 1))
|
||||||
|
|
||||||
|
# define BN_FLG_MALLOCED 0x01
|
||||||
|
# define BN_FLG_STATIC_DATA 0x02
|
||||||
|
|
||||||
|
/*
|
||||||
|
* avoid leaking exponent information through timing,
|
||||||
|
* BN_mod_exp_mont() will call BN_mod_exp_mont_consttime,
|
||||||
|
* BN_div() will call BN_div_no_branch,
|
||||||
|
* BN_mod_inverse() will call bn_mod_inverse_no_branch.
|
||||||
|
*/
|
||||||
|
# define BN_FLG_CONSTTIME 0x04
|
||||||
|
# define BN_FLG_SECURE 0x08
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
|
||||||
|
/* deprecated name for the flag */
|
||||||
|
# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME
|
||||||
|
# define BN_FLG_FREE 0x8000 /* used for debugging */
|
||||||
|
# endif
|
||||||
|
|
||||||
|
void BN_set_flags(BIGNUM *b, int n);
|
||||||
|
int BN_get_flags(const BIGNUM *b, int n);
|
||||||
|
|
||||||
|
/* Values for |top| in BN_rand() */
|
||||||
|
#define BN_RAND_TOP_ANY -1
|
||||||
|
#define BN_RAND_TOP_ONE 0
|
||||||
|
#define BN_RAND_TOP_TWO 1
|
||||||
|
|
||||||
|
/* Values for |bottom| in BN_rand() */
|
||||||
|
#define BN_RAND_BOTTOM_ANY 0
|
||||||
|
#define BN_RAND_BOTTOM_ODD 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* get a clone of a BIGNUM with changed flags, for *temporary* use only (the
|
||||||
|
* two BIGNUMs cannot be used in parallel!). Also only for *read only* use. The
|
||||||
|
* value |dest| should be a newly allocated BIGNUM obtained via BN_new() that
|
||||||
|
* has not been otherwise initialised or used.
|
||||||
|
*/
|
||||||
|
void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags);
|
||||||
|
|
||||||
|
/* Wrapper function to make using BN_GENCB easier */
|
||||||
|
int BN_GENCB_call(BN_GENCB *cb, int a, int b);
|
||||||
|
|
||||||
|
BN_GENCB *BN_GENCB_new(void);
|
||||||
|
void BN_GENCB_free(BN_GENCB *cb);
|
||||||
|
|
||||||
|
/* Populate a BN_GENCB structure with an "old"-style callback */
|
||||||
|
void BN_GENCB_set_old(BN_GENCB *gencb, void (*callback) (int, int, void *),
|
||||||
|
void *cb_arg);
|
||||||
|
|
||||||
|
/* Populate a BN_GENCB structure with a "new"-style callback */
|
||||||
|
void BN_GENCB_set(BN_GENCB *gencb, int (*callback) (int, int, BN_GENCB *),
|
||||||
|
void *cb_arg);
|
||||||
|
|
||||||
|
void *BN_GENCB_get_arg(BN_GENCB *cb);
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define BN_prime_checks 0 /* default: select number of iterations based
|
||||||
|
* on the size of the number */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BN_prime_checks_for_size() returns the number of Miller-Rabin iterations
|
||||||
|
* that will be done for checking that a random number is probably prime. The
|
||||||
|
* error rate for accepting a composite number as prime depends on the size of
|
||||||
|
* the prime |b|. The error rates used are for calculating an RSA key with 2 primes,
|
||||||
|
* and so the level is what you would expect for a key of double the size of the
|
||||||
|
* prime.
|
||||||
|
*
|
||||||
|
* This table is generated using the algorithm of FIPS PUB 186-4
|
||||||
|
* Digital Signature Standard (DSS), section F.1, page 117.
|
||||||
|
* (https://dx.doi.org/10.6028/NIST.FIPS.186-4)
|
||||||
|
*
|
||||||
|
* The following magma script was used to generate the output:
|
||||||
|
* securitybits:=125;
|
||||||
|
* k:=1024;
|
||||||
|
* for t:=1 to 65 do
|
||||||
|
* for M:=3 to Floor(2*Sqrt(k-1)-1) do
|
||||||
|
* S:=0;
|
||||||
|
* // Sum over m
|
||||||
|
* for m:=3 to M do
|
||||||
|
* s:=0;
|
||||||
|
* // Sum over j
|
||||||
|
* for j:=2 to m do
|
||||||
|
* s+:=(RealField(32)!2)^-(j+(k-1)/j);
|
||||||
|
* end for;
|
||||||
|
* S+:=2^(m-(m-1)*t)*s;
|
||||||
|
* end for;
|
||||||
|
* A:=2^(k-2-M*t);
|
||||||
|
* B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S;
|
||||||
|
* pkt:=2.00743*Log(2)*k*2^-k*(A+B);
|
||||||
|
* seclevel:=Floor(-Log(2,pkt));
|
||||||
|
* if seclevel ge securitybits then
|
||||||
|
* printf "k: %5o, security: %o bits (t: %o, M: %o)\n",k,seclevel,t,M;
|
||||||
|
* break;
|
||||||
|
* end if;
|
||||||
|
* end for;
|
||||||
|
* if seclevel ge securitybits then break; end if;
|
||||||
|
* end for;
|
||||||
|
*
|
||||||
|
* It can be run online at:
|
||||||
|
* http://magma.maths.usyd.edu.au/calc
|
||||||
|
*
|
||||||
|
* And will output:
|
||||||
|
* k: 1024, security: 129 bits (t: 6, M: 23)
|
||||||
|
*
|
||||||
|
* k is the number of bits of the prime, securitybits is the level we want to
|
||||||
|
* reach.
|
||||||
|
*
|
||||||
|
* prime length | RSA key size | # MR tests | security level
|
||||||
|
* -------------+--------------|------------+---------------
|
||||||
|
* (b) >= 6394 | >= 12788 | 3 | 256 bit
|
||||||
|
* (b) >= 3747 | >= 7494 | 3 | 192 bit
|
||||||
|
* (b) >= 1345 | >= 2690 | 4 | 128 bit
|
||||||
|
* (b) >= 1080 | >= 2160 | 5 | 128 bit
|
||||||
|
* (b) >= 852 | >= 1704 | 5 | 112 bit
|
||||||
|
* (b) >= 476 | >= 952 | 5 | 80 bit
|
||||||
|
* (b) >= 400 | >= 800 | 6 | 80 bit
|
||||||
|
* (b) >= 347 | >= 694 | 7 | 80 bit
|
||||||
|
* (b) >= 308 | >= 616 | 8 | 80 bit
|
||||||
|
* (b) >= 55 | >= 110 | 27 | 64 bit
|
||||||
|
* (b) >= 6 | >= 12 | 34 | 64 bit
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define BN_prime_checks_for_size(b) ((b) >= 3747 ? 3 : \
|
||||||
|
(b) >= 1345 ? 4 : \
|
||||||
|
(b) >= 476 ? 5 : \
|
||||||
|
(b) >= 400 ? 6 : \
|
||||||
|
(b) >= 347 ? 7 : \
|
||||||
|
(b) >= 308 ? 8 : \
|
||||||
|
(b) >= 55 ? 27 : \
|
||||||
|
/* b >= 6 */ 34)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8)
|
||||||
|
|
||||||
|
int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w);
|
||||||
|
int BN_is_zero(const BIGNUM *a);
|
||||||
|
int BN_is_one(const BIGNUM *a);
|
||||||
|
int BN_is_word(const BIGNUM *a, const BN_ULONG w);
|
||||||
|
int BN_is_odd(const BIGNUM *a);
|
||||||
|
|
||||||
|
# define BN_one(a) (BN_set_word((a),1))
|
||||||
|
|
||||||
|
void BN_zero_ex(BIGNUM *a);
|
||||||
|
|
||||||
|
# if OPENSSL_API_LEVEL > 908
|
||||||
|
# define BN_zero(a) BN_zero_ex(a)
|
||||||
|
# else
|
||||||
|
# define BN_zero(a) (BN_set_word((a),0))
|
||||||
|
# endif
|
||||||
|
|
||||||
|
const BIGNUM *BN_value_one(void);
|
||||||
|
char *BN_options(void);
|
||||||
|
BN_CTX *BN_CTX_new_ex(OSSL_LIB_CTX *ctx);
|
||||||
|
BN_CTX *BN_CTX_new(void);
|
||||||
|
BN_CTX *BN_CTX_secure_new_ex(OSSL_LIB_CTX *ctx);
|
||||||
|
BN_CTX *BN_CTX_secure_new(void);
|
||||||
|
void BN_CTX_free(BN_CTX *c);
|
||||||
|
void BN_CTX_start(BN_CTX *ctx);
|
||||||
|
BIGNUM *BN_CTX_get(BN_CTX *ctx);
|
||||||
|
void BN_CTX_end(BN_CTX *ctx);
|
||||||
|
int BN_rand_ex(BIGNUM *rnd, int bits, int top, int bottom,
|
||||||
|
unsigned int strength, BN_CTX *ctx);
|
||||||
|
int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
|
||||||
|
int BN_priv_rand_ex(BIGNUM *rnd, int bits, int top, int bottom,
|
||||||
|
unsigned int strength, BN_CTX *ctx);
|
||||||
|
int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom);
|
||||||
|
int BN_rand_range_ex(BIGNUM *r, const BIGNUM *range, unsigned int strength,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
int BN_rand_range(BIGNUM *rnd, const BIGNUM *range);
|
||||||
|
int BN_priv_rand_range_ex(BIGNUM *r, const BIGNUM *range,
|
||||||
|
unsigned int strength, BN_CTX *ctx);
|
||||||
|
int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range);
|
||||||
|
# endif
|
||||||
|
int BN_num_bits(const BIGNUM *a);
|
||||||
|
int BN_num_bits_word(BN_ULONG l);
|
||||||
|
int BN_security_bits(int L, int N);
|
||||||
|
BIGNUM *BN_new(void);
|
||||||
|
BIGNUM *BN_secure_new(void);
|
||||||
|
void BN_clear_free(BIGNUM *a);
|
||||||
|
BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b);
|
||||||
|
void BN_swap(BIGNUM *a, BIGNUM *b);
|
||||||
|
BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret);
|
||||||
|
int BN_bn2bin(const BIGNUM *a, unsigned char *to);
|
||||||
|
int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen);
|
||||||
|
BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret);
|
||||||
|
int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen);
|
||||||
|
BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret);
|
||||||
|
int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen);
|
||||||
|
BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret);
|
||||||
|
int BN_bn2mpi(const BIGNUM *a, unsigned char *to);
|
||||||
|
int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
||||||
|
int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
||||||
|
int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
||||||
|
int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
||||||
|
int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
|
||||||
|
int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
|
||||||
|
/** BN_set_negative sets sign of a BIGNUM
|
||||||
|
* \param b pointer to the BIGNUM object
|
||||||
|
* \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise
|
||||||
|
*/
|
||||||
|
void BN_set_negative(BIGNUM *b, int n);
|
||||||
|
/** BN_is_negative returns 1 if the BIGNUM is negative
|
||||||
|
* \param b pointer to the BIGNUM object
|
||||||
|
* \return 1 if a < 0 and 0 otherwise
|
||||||
|
*/
|
||||||
|
int BN_is_negative(const BIGNUM *b);
|
||||||
|
|
||||||
|
int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx))
|
||||||
|
int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx);
|
||||||
|
int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||||
|
const BIGNUM *m);
|
||||||
|
int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||||
|
const BIGNUM *m);
|
||||||
|
int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
|
||||||
|
int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
|
||||||
|
int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m);
|
||||||
|
int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m);
|
||||||
|
|
||||||
|
BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w);
|
||||||
|
BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w);
|
||||||
|
int BN_mul_word(BIGNUM *a, BN_ULONG w);
|
||||||
|
int BN_add_word(BIGNUM *a, BN_ULONG w);
|
||||||
|
int BN_sub_word(BIGNUM *a, BN_ULONG w);
|
||||||
|
int BN_set_word(BIGNUM *a, BN_ULONG w);
|
||||||
|
BN_ULONG BN_get_word(const BIGNUM *a);
|
||||||
|
|
||||||
|
int BN_cmp(const BIGNUM *a, const BIGNUM *b);
|
||||||
|
void BN_free(BIGNUM *a);
|
||||||
|
int BN_is_bit_set(const BIGNUM *a, int n);
|
||||||
|
int BN_lshift(BIGNUM *r, const BIGNUM *a, int n);
|
||||||
|
int BN_lshift1(BIGNUM *r, const BIGNUM *a);
|
||||||
|
int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||||
|
|
||||||
|
int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||||
|
const BIGNUM *m, BN_CTX *ctx);
|
||||||
|
int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||||
|
const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
|
||||||
|
int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
|
||||||
|
const BIGNUM *m, BN_CTX *ctx,
|
||||||
|
BN_MONT_CTX *in_mont);
|
||||||
|
int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p,
|
||||||
|
const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
|
||||||
|
int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1,
|
||||||
|
const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m,
|
||||||
|
BN_CTX *ctx, BN_MONT_CTX *m_ctx);
|
||||||
|
int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||||
|
const BIGNUM *m, BN_CTX *ctx);
|
||||||
|
int BN_mod_exp_mont_consttime_x2(BIGNUM *rr1, const BIGNUM *a1, const BIGNUM *p1,
|
||||||
|
const BIGNUM *m1, BN_MONT_CTX *in_mont1,
|
||||||
|
BIGNUM *rr2, const BIGNUM *a2, const BIGNUM *p2,
|
||||||
|
const BIGNUM *m2, BN_MONT_CTX *in_mont2,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
|
||||||
|
int BN_mask_bits(BIGNUM *a, int n);
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
int BN_print_fp(FILE *fp, const BIGNUM *a);
|
||||||
|
# endif
|
||||||
|
int BN_print(BIO *bio, const BIGNUM *a);
|
||||||
|
int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx);
|
||||||
|
int BN_rshift(BIGNUM *r, const BIGNUM *a, int n);
|
||||||
|
int BN_rshift1(BIGNUM *r, const BIGNUM *a);
|
||||||
|
void BN_clear(BIGNUM *a);
|
||||||
|
BIGNUM *BN_dup(const BIGNUM *a);
|
||||||
|
int BN_ucmp(const BIGNUM *a, const BIGNUM *b);
|
||||||
|
int BN_set_bit(BIGNUM *a, int n);
|
||||||
|
int BN_clear_bit(BIGNUM *a, int n);
|
||||||
|
char *BN_bn2hex(const BIGNUM *a);
|
||||||
|
char *BN_bn2dec(const BIGNUM *a);
|
||||||
|
int BN_hex2bn(BIGNUM **a, const char *str);
|
||||||
|
int BN_dec2bn(BIGNUM **a, const char *str);
|
||||||
|
int BN_asc2bn(BIGNUM **a, const char *str);
|
||||||
|
int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
|
||||||
|
int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns
|
||||||
|
* -2 for
|
||||||
|
* error */
|
||||||
|
int BN_are_coprime(BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
|
||||||
|
BIGNUM *BN_mod_inverse(BIGNUM *ret,
|
||||||
|
const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);
|
||||||
|
BIGNUM *BN_mod_sqrt(BIGNUM *ret,
|
||||||
|
const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);
|
||||||
|
|
||||||
|
void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords);
|
||||||
|
|
||||||
|
/* Deprecated versions */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
|
||||||
|
OSSL_DEPRECATEDIN_0_9_8
|
||||||
|
BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe,
|
||||||
|
const BIGNUM *add, const BIGNUM *rem,
|
||||||
|
void (*callback) (int, int, void *),
|
||||||
|
void *cb_arg);
|
||||||
|
OSSL_DEPRECATEDIN_0_9_8
|
||||||
|
int BN_is_prime(const BIGNUM *p, int nchecks,
|
||||||
|
void (*callback) (int, int, void *),
|
||||||
|
BN_CTX *ctx, void *cb_arg);
|
||||||
|
OSSL_DEPRECATEDIN_0_9_8
|
||||||
|
int BN_is_prime_fasttest(const BIGNUM *p, int nchecks,
|
||||||
|
void (*callback) (int, int, void *),
|
||||||
|
BN_CTX *ctx, void *cb_arg,
|
||||||
|
int do_trial_division);
|
||||||
|
# endif
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx,
|
||||||
|
int do_trial_division, BN_GENCB *cb);
|
||||||
|
# endif
|
||||||
|
/* Newer versions */
|
||||||
|
int BN_generate_prime_ex2(BIGNUM *ret, int bits, int safe,
|
||||||
|
const BIGNUM *add, const BIGNUM *rem, BN_GENCB *cb,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add,
|
||||||
|
const BIGNUM *rem, BN_GENCB *cb);
|
||||||
|
int BN_check_prime(const BIGNUM *p, BN_CTX *ctx, BN_GENCB *cb);
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
|
||||||
|
const BIGNUM *Xp, const BIGNUM *Xp1,
|
||||||
|
const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx,
|
||||||
|
BN_GENCB *cb);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1,
|
||||||
|
BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e,
|
||||||
|
BN_CTX *ctx, BN_GENCB *cb);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
BN_MONT_CTX *BN_MONT_CTX_new(void);
|
||||||
|
int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||||
|
BN_MONT_CTX *mont, BN_CTX *ctx);
|
||||||
|
int BN_to_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
void BN_MONT_CTX_free(BN_MONT_CTX *mont);
|
||||||
|
int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx);
|
||||||
|
BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from);
|
||||||
|
BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_RWLOCK *lock,
|
||||||
|
const BIGNUM *mod, BN_CTX *ctx);
|
||||||
|
|
||||||
|
/* BN_BLINDING flags */
|
||||||
|
# define BN_BLINDING_NO_UPDATE 0x00000001
|
||||||
|
# define BN_BLINDING_NO_RECREATE 0x00000002
|
||||||
|
|
||||||
|
BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod);
|
||||||
|
void BN_BLINDING_free(BN_BLINDING *b);
|
||||||
|
int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx);
|
||||||
|
int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
|
||||||
|
int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
|
||||||
|
int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *);
|
||||||
|
int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b,
|
||||||
|
BN_CTX *);
|
||||||
|
|
||||||
|
int BN_BLINDING_is_current_thread(BN_BLINDING *b);
|
||||||
|
void BN_BLINDING_set_current_thread(BN_BLINDING *b);
|
||||||
|
int BN_BLINDING_lock(BN_BLINDING *b);
|
||||||
|
int BN_BLINDING_unlock(BN_BLINDING *b);
|
||||||
|
|
||||||
|
unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
|
||||||
|
void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
|
||||||
|
BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
|
||||||
|
const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
|
||||||
|
int (*bn_mod_exp) (BIGNUM *r,
|
||||||
|
const BIGNUM *a,
|
||||||
|
const BIGNUM *p,
|
||||||
|
const BIGNUM *m,
|
||||||
|
BN_CTX *ctx,
|
||||||
|
BN_MONT_CTX *m_ctx),
|
||||||
|
BN_MONT_CTX *m_ctx);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
|
||||||
|
OSSL_DEPRECATEDIN_0_9_8
|
||||||
|
void BN_set_params(int mul, int high, int low, int mont);
|
||||||
|
OSSL_DEPRECATEDIN_0_9_8
|
||||||
|
int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */
|
||||||
|
# endif
|
||||||
|
|
||||||
|
BN_RECP_CTX *BN_RECP_CTX_new(void);
|
||||||
|
void BN_RECP_CTX_free(BN_RECP_CTX *recp);
|
||||||
|
int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx);
|
||||||
|
int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y,
|
||||||
|
BN_RECP_CTX *recp, BN_CTX *ctx);
|
||||||
|
int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||||
|
const BIGNUM *m, BN_CTX *ctx);
|
||||||
|
int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m,
|
||||||
|
BN_RECP_CTX *recp, BN_CTX *ctx);
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_EC2M
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Functions for arithmetic over binary polynomials represented by BIGNUMs.
|
||||||
|
* The BIGNUM::neg property of BIGNUMs representing binary polynomials is
|
||||||
|
* ignored. Note that input arguments are not const so that their bit arrays
|
||||||
|
* can be expanded to the appropriate size if needed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* r = a + b
|
||||||
|
*/
|
||||||
|
int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
||||||
|
# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b)
|
||||||
|
/*
|
||||||
|
* r=a mod p
|
||||||
|
*/
|
||||||
|
int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p);
|
||||||
|
/* r = (a * b) mod p */
|
||||||
|
int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||||
|
const BIGNUM *p, BN_CTX *ctx);
|
||||||
|
/* r = (a * a) mod p */
|
||||||
|
int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||||
|
/* r = (1 / b) mod p */
|
||||||
|
int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx);
|
||||||
|
/* r = (a / b) mod p */
|
||||||
|
int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||||
|
const BIGNUM *p, BN_CTX *ctx);
|
||||||
|
/* r = (a ^ b) mod p */
|
||||||
|
int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||||
|
const BIGNUM *p, BN_CTX *ctx);
|
||||||
|
/* r = sqrt(a) mod p */
|
||||||
|
int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
/* r^2 + r = a mod p */
|
||||||
|
int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||||
|
BN_CTX *ctx);
|
||||||
|
# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b))
|
||||||
|
/*-
|
||||||
|
* Some functions allow for representation of the irreducible polynomials
|
||||||
|
* as an unsigned int[], say p. The irreducible f(t) is then of the form:
|
||||||
|
* t^p[0] + t^p[1] + ... + t^p[k]
|
||||||
|
* where m = p[0] > p[1] > ... > p[k] = 0.
|
||||||
|
*/
|
||||||
|
/* r = a mod p */
|
||||||
|
int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]);
|
||||||
|
/* r = (a * b) mod p */
|
||||||
|
int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||||
|
const int p[], BN_CTX *ctx);
|
||||||
|
/* r = (a * a) mod p */
|
||||||
|
int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[],
|
||||||
|
BN_CTX *ctx);
|
||||||
|
/* r = (1 / b) mod p */
|
||||||
|
int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[],
|
||||||
|
BN_CTX *ctx);
|
||||||
|
/* r = (a / b) mod p */
|
||||||
|
int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||||
|
const int p[], BN_CTX *ctx);
|
||||||
|
/* r = (a ^ b) mod p */
|
||||||
|
int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||||
|
const int p[], BN_CTX *ctx);
|
||||||
|
/* r = sqrt(a) mod p */
|
||||||
|
int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a,
|
||||||
|
const int p[], BN_CTX *ctx);
|
||||||
|
/* r^2 + r = a mod p */
|
||||||
|
int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a,
|
||||||
|
const int p[], BN_CTX *ctx);
|
||||||
|
int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max);
|
||||||
|
int BN_GF2m_arr2poly(const int p[], BIGNUM *a);
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* faster mod functions for the 'NIST primes' 0 <= a < p^2
|
||||||
|
*/
|
||||||
|
int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||||
|
int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||||
|
int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||||
|
int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||||
|
int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||||
|
|
||||||
|
const BIGNUM *BN_get0_nist_prime_192(void);
|
||||||
|
const BIGNUM *BN_get0_nist_prime_224(void);
|
||||||
|
const BIGNUM *BN_get0_nist_prime_256(void);
|
||||||
|
const BIGNUM *BN_get0_nist_prime_384(void);
|
||||||
|
const BIGNUM *BN_get0_nist_prime_521(void);
|
||||||
|
|
||||||
|
int (*BN_nist_mod_func(const BIGNUM *p)) (BIGNUM *r, const BIGNUM *a,
|
||||||
|
const BIGNUM *field, BN_CTX *ctx);
|
||||||
|
|
||||||
|
int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range,
|
||||||
|
const BIGNUM *priv, const unsigned char *message,
|
||||||
|
size_t message_len, BN_CTX *ctx);
|
||||||
|
|
||||||
|
/* Primes from RFC 2409 */
|
||||||
|
BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn);
|
||||||
|
BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn);
|
||||||
|
|
||||||
|
/* Primes from RFC 3526 */
|
||||||
|
BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn);
|
||||||
|
BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn);
|
||||||
|
BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn);
|
||||||
|
BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn);
|
||||||
|
BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn);
|
||||||
|
BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn);
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# define get_rfc2409_prime_768 BN_get_rfc2409_prime_768
|
||||||
|
# define get_rfc2409_prime_1024 BN_get_rfc2409_prime_1024
|
||||||
|
# define get_rfc3526_prime_1536 BN_get_rfc3526_prime_1536
|
||||||
|
# define get_rfc3526_prime_2048 BN_get_rfc3526_prime_2048
|
||||||
|
# define get_rfc3526_prime_3072 BN_get_rfc3526_prime_3072
|
||||||
|
# define get_rfc3526_prime_4096 BN_get_rfc3526_prime_4096
|
||||||
|
# define get_rfc3526_prime_6144 BN_get_rfc3526_prime_6144
|
||||||
|
# define get_rfc3526_prime_8192 BN_get_rfc3526_prime_8192
|
||||||
|
# endif
|
||||||
|
|
||||||
|
int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom);
|
||||||
|
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
47
src/openssl/bnerr.h
Normal file
47
src/openssl/bnerr.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_BNERR_H
|
||||||
|
# define OPENSSL_BNERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BN reason codes.
|
||||||
|
*/
|
||||||
|
# define BN_R_ARG2_LT_ARG3 100
|
||||||
|
# define BN_R_BAD_RECIPROCAL 101
|
||||||
|
# define BN_R_BIGNUM_TOO_LONG 114
|
||||||
|
# define BN_R_BITS_TOO_SMALL 118
|
||||||
|
# define BN_R_CALLED_WITH_EVEN_MODULUS 102
|
||||||
|
# define BN_R_DIV_BY_ZERO 103
|
||||||
|
# define BN_R_ENCODING_ERROR 104
|
||||||
|
# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105
|
||||||
|
# define BN_R_INPUT_NOT_REDUCED 110
|
||||||
|
# define BN_R_INVALID_LENGTH 106
|
||||||
|
# define BN_R_INVALID_RANGE 115
|
||||||
|
# define BN_R_INVALID_SHIFT 119
|
||||||
|
# define BN_R_NOT_A_SQUARE 111
|
||||||
|
# define BN_R_NOT_INITIALIZED 107
|
||||||
|
# define BN_R_NO_INVERSE 108
|
||||||
|
# define BN_R_NO_PRIME_CANDIDATE 121
|
||||||
|
# define BN_R_NO_SOLUTION 116
|
||||||
|
# define BN_R_NO_SUITABLE_DIGEST 120
|
||||||
|
# define BN_R_PRIVATE_KEY_TOO_LARGE 117
|
||||||
|
# define BN_R_P_IS_NOT_PRIME 112
|
||||||
|
# define BN_R_TOO_MANY_ITERATIONS 113
|
||||||
|
# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109
|
||||||
|
|
||||||
|
#endif
|
||||||
62
src/openssl/buffer.h
Normal file
62
src/openssl/buffer.h
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_BUFFER_H
|
||||||
|
# define OPENSSL_BUFFER_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_BUFFER_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# ifndef OPENSSL_CRYPTO_H
|
||||||
|
# include <openssl/crypto.h>
|
||||||
|
# endif
|
||||||
|
# include <openssl/buffererr.h>
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# include <stddef.h>
|
||||||
|
# include <sys/types.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define BUF_strdup(s) OPENSSL_strdup(s)
|
||||||
|
# define BUF_strndup(s, size) OPENSSL_strndup(s, size)
|
||||||
|
# define BUF_memdup(data, size) OPENSSL_memdup(data, size)
|
||||||
|
# define BUF_strlcpy(dst, src, size) OPENSSL_strlcpy(dst, src, size)
|
||||||
|
# define BUF_strlcat(dst, src, size) OPENSSL_strlcat(dst, src, size)
|
||||||
|
# define BUF_strnlen(str, maxlen) OPENSSL_strnlen(str, maxlen)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
struct buf_mem_st {
|
||||||
|
size_t length; /* current number of bytes */
|
||||||
|
char *data;
|
||||||
|
size_t max; /* size of buffer */
|
||||||
|
unsigned long flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
# define BUF_MEM_FLAG_SECURE 0x01
|
||||||
|
|
||||||
|
BUF_MEM *BUF_MEM_new(void);
|
||||||
|
BUF_MEM *BUF_MEM_new_ex(unsigned long flags);
|
||||||
|
void BUF_MEM_free(BUF_MEM *a);
|
||||||
|
size_t BUF_MEM_grow(BUF_MEM *str, size_t len);
|
||||||
|
size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len);
|
||||||
|
void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz);
|
||||||
|
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
25
src/openssl/buffererr.h
Normal file
25
src/openssl/buffererr.h
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_BUFFERERR_H
|
||||||
|
# define OPENSSL_BUFFERERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BUF reason codes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif
|
||||||
117
src/openssl/camellia.h
Normal file
117
src/openssl/camellia.h
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CAMELLIA_H
|
||||||
|
# define OPENSSL_CAMELLIA_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_CAMELLIA_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_CAMELLIA
|
||||||
|
# include <stddef.h>
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# define CAMELLIA_BLOCK_SIZE 16
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
|
||||||
|
# define CAMELLIA_ENCRYPT 1
|
||||||
|
# define CAMELLIA_DECRYPT 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Because array size can't be a const in C, the following two are macros.
|
||||||
|
* Both sizes are in bytes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* This should be a hidden type, but EVP requires that the size be known */
|
||||||
|
|
||||||
|
# define CAMELLIA_TABLE_BYTE_LEN 272
|
||||||
|
# define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4)
|
||||||
|
|
||||||
|
typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; /* to match
|
||||||
|
* with WORD */
|
||||||
|
|
||||||
|
struct camellia_key_st {
|
||||||
|
union {
|
||||||
|
double d; /* ensures 64-bit align */
|
||||||
|
KEY_TABLE_TYPE rd_key;
|
||||||
|
} u;
|
||||||
|
int grand_rounds;
|
||||||
|
};
|
||||||
|
typedef struct camellia_key_st CAMELLIA_KEY;
|
||||||
|
|
||||||
|
# endif /* OPENSSL_NO_DEPRECATED_3_0 */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int Camellia_set_key(const unsigned char *userKey,
|
||||||
|
const int bits,
|
||||||
|
CAMELLIA_KEY *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void Camellia_encrypt(const unsigned char *in,
|
||||||
|
unsigned char *out,
|
||||||
|
const CAMELLIA_KEY *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void Camellia_decrypt(const unsigned char *in,
|
||||||
|
unsigned char *out,
|
||||||
|
const CAMELLIA_KEY *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void Camellia_ecb_encrypt(const unsigned char *in,
|
||||||
|
unsigned char *out,
|
||||||
|
const CAMELLIA_KEY *key,
|
||||||
|
const int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void Camellia_cbc_encrypt(const unsigned char *in,
|
||||||
|
unsigned char *out,
|
||||||
|
size_t length,
|
||||||
|
const CAMELLIA_KEY *key,
|
||||||
|
unsigned char *ivec,
|
||||||
|
const int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void Camellia_cfb128_encrypt(const unsigned char *in,
|
||||||
|
unsigned char *out,
|
||||||
|
size_t length,
|
||||||
|
const CAMELLIA_KEY *key,
|
||||||
|
unsigned char *ivec,
|
||||||
|
int *num,
|
||||||
|
const int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void Camellia_cfb1_encrypt(const unsigned char *in,
|
||||||
|
unsigned char *out,
|
||||||
|
size_t length,
|
||||||
|
const CAMELLIA_KEY *key,
|
||||||
|
unsigned char *ivec,
|
||||||
|
int *num,
|
||||||
|
const int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void Camellia_cfb8_encrypt(const unsigned char *in,
|
||||||
|
unsigned char *out,
|
||||||
|
size_t length,
|
||||||
|
const CAMELLIA_KEY *key,
|
||||||
|
unsigned char *ivec,
|
||||||
|
int *num,
|
||||||
|
const int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void Camellia_ofb128_encrypt(const unsigned char *in,
|
||||||
|
unsigned char *out,
|
||||||
|
size_t length,
|
||||||
|
const CAMELLIA_KEY *key,
|
||||||
|
unsigned char *ivec,
|
||||||
|
int *num);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void Camellia_ctr128_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
size_t length, const CAMELLIA_KEY *key,
|
||||||
|
unsigned char ivec[CAMELLIA_BLOCK_SIZE],
|
||||||
|
unsigned char ecount_buf[CAMELLIA_BLOCK_SIZE],
|
||||||
|
unsigned int *num);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
71
src/openssl/cast.h
Normal file
71
src/openssl/cast.h
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CAST_H
|
||||||
|
# define OPENSSL_CAST_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_CAST_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_CAST
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define CAST_BLOCK 8
|
||||||
|
# define CAST_KEY_LENGTH 16
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
|
||||||
|
# define CAST_ENCRYPT 1
|
||||||
|
# define CAST_DECRYPT 0
|
||||||
|
|
||||||
|
# define CAST_LONG unsigned int
|
||||||
|
|
||||||
|
typedef struct cast_key_st {
|
||||||
|
CAST_LONG data[32];
|
||||||
|
int short_key; /* Use reduced rounds for short key */
|
||||||
|
} CAST_KEY;
|
||||||
|
|
||||||
|
# endif /* OPENSSL_NO_DEPRECATED_3_0 */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
const CAST_KEY *key, int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
long length, const CAST_KEY *ks, unsigned char *iv,
|
||||||
|
int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
long length, const CAST_KEY *schedule,
|
||||||
|
unsigned char *ivec, int *num, int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
long length, const CAST_KEY *schedule,
|
||||||
|
unsigned char *ivec, int *num);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
52
src/openssl/cmac.h
Normal file
52
src/openssl/cmac.h
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CMAC_H
|
||||||
|
# define OPENSSL_CMAC_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_CMAC_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_CMAC
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/evp.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
/* Opaque */
|
||||||
|
typedef struct CMAC_CTX_st CMAC_CTX;
|
||||||
|
# endif
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 CMAC_CTX *CMAC_CTX_new(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void CMAC_CTX_cleanup(CMAC_CTX *ctx);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void CMAC_CTX_free(CMAC_CTX *ctx);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int CMAC_Init(CMAC_CTX *ctx,
|
||||||
|
const void *key, size_t keylen,
|
||||||
|
const EVP_CIPHER *cipher, ENGINE *impl);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int CMAC_Update(CMAC_CTX *ctx,
|
||||||
|
const void *data, size_t dlen);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int CMAC_Final(CMAC_CTX *ctx,
|
||||||
|
unsigned char *out, size_t *poutlen);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int CMAC_resume(CMAC_CTX *ctx);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
478
src/openssl/cmp.h.in
Normal file
478
src/openssl/cmp.h.in
Normal file
@@ -0,0 +1,478 @@
|
|||||||
|
/*
|
||||||
|
* {- join("\n * ", @autowarntext) -}
|
||||||
|
*
|
||||||
|
* Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
* Copyright Nokia 2007-2019
|
||||||
|
* Copyright Siemens AG 2015-2019
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
{-
|
||||||
|
use OpenSSL::stackhash qw(generate_stack_macros);
|
||||||
|
-}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CMP_H
|
||||||
|
# define OPENSSL_CMP_H
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# ifndef OPENSSL_NO_CMP
|
||||||
|
|
||||||
|
# include <openssl/crmf.h>
|
||||||
|
# include <openssl/cmperr.h>
|
||||||
|
# include <openssl/cmp_util.h>
|
||||||
|
# include <openssl/http.h>
|
||||||
|
|
||||||
|
/* explicit #includes not strictly needed since implied by the above: */
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# include <openssl/safestack.h>
|
||||||
|
# include <openssl/x509.h>
|
||||||
|
# include <openssl/x509v3.h>
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define OSSL_CMP_PVNO 2
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* PKIFailureInfo ::= BIT STRING {
|
||||||
|
* -- since we can fail in more than one way!
|
||||||
|
* -- More codes may be added in the future if/when required.
|
||||||
|
* badAlg (0),
|
||||||
|
* -- unrecognized or unsupported Algorithm Identifier
|
||||||
|
* badMessageCheck (1),
|
||||||
|
* -- integrity check failed (e.g., signature did not verify)
|
||||||
|
* badRequest (2),
|
||||||
|
* -- transaction not permitted or supported
|
||||||
|
* badTime (3),
|
||||||
|
* -- messageTime was not sufficiently close to the system time,
|
||||||
|
* -- as defined by local policy
|
||||||
|
* badCertId (4),
|
||||||
|
* -- no certificate could be found matching the provided criteria
|
||||||
|
* badDataFormat (5),
|
||||||
|
* -- the data submitted has the wrong format
|
||||||
|
* wrongAuthority (6),
|
||||||
|
* -- the authority indicated in the request is different from the
|
||||||
|
* -- one creating the response token
|
||||||
|
* incorrectData (7),
|
||||||
|
* -- the requester's data is incorrect (for notary services)
|
||||||
|
* missingTimeStamp (8),
|
||||||
|
* -- when the timestamp is missing but should be there
|
||||||
|
* -- (by policy)
|
||||||
|
* badPOP (9),
|
||||||
|
* -- the proof-of-possession failed
|
||||||
|
* certRevoked (10),
|
||||||
|
* -- the certificate has already been revoked
|
||||||
|
* certConfirmed (11),
|
||||||
|
* -- the certificate has already been confirmed
|
||||||
|
* wrongIntegrity (12),
|
||||||
|
* -- invalid integrity, password based instead of signature or
|
||||||
|
* -- vice versa
|
||||||
|
* badRecipientNonce (13),
|
||||||
|
* -- invalid recipient nonce, either missing or wrong value
|
||||||
|
* timeNotAvailable (14),
|
||||||
|
* -- the TSA's time source is not available
|
||||||
|
* unacceptedPolicy (15),
|
||||||
|
* -- the requested TSA policy is not supported by the TSA.
|
||||||
|
* unacceptedExtension (16),
|
||||||
|
* -- the requested extension is not supported by the TSA.
|
||||||
|
* addInfoNotAvailable (17),
|
||||||
|
* -- the additional information requested could not be
|
||||||
|
* -- understood or is not available
|
||||||
|
* badSenderNonce (18),
|
||||||
|
* -- invalid sender nonce, either missing or wrong size
|
||||||
|
* badCertTemplate (19),
|
||||||
|
* -- invalid cert. template or missing mandatory information
|
||||||
|
* signerNotTrusted (20),
|
||||||
|
* -- signer of the message unknown or not trusted
|
||||||
|
* transactionIdInUse (21),
|
||||||
|
* -- the transaction identifier is already in use
|
||||||
|
* unsupportedVersion (22),
|
||||||
|
* -- the version of the message is not supported
|
||||||
|
* notAuthorized (23),
|
||||||
|
* -- the sender was not authorized to make the preceding
|
||||||
|
* -- request or perform the preceding action
|
||||||
|
* systemUnavail (24),
|
||||||
|
* -- the request cannot be handled due to system unavailability
|
||||||
|
* systemFailure (25),
|
||||||
|
* -- the request cannot be handled due to system failure
|
||||||
|
* duplicateCertReq (26)
|
||||||
|
* -- certificate cannot be issued because a duplicate
|
||||||
|
* -- certificate already exists
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_badAlg 0
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_badMessageCheck 1
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_badRequest 2
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_badTime 3
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_badCertId 4
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_badDataFormat 5
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_wrongAuthority 6
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_incorrectData 7
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_missingTimeStamp 8
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_badPOP 9
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_certRevoked 10
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_certConfirmed 11
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_wrongIntegrity 12
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_badRecipientNonce 13
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_timeNotAvailable 14
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_unacceptedPolicy 15
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_unacceptedExtension 16
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_addInfoNotAvailable 17
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_badSenderNonce 18
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_badCertTemplate 19
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_signerNotTrusted 20
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_transactionIdInUse 21
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_unsupportedVersion 22
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_notAuthorized 23
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_systemUnavail 24
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_systemFailure 25
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_duplicateCertReq 26
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_MAX 26
|
||||||
|
# define OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN \
|
||||||
|
((1 << (OSSL_CMP_PKIFAILUREINFO_MAX + 1)) - 1)
|
||||||
|
# if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX
|
||||||
|
# error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int
|
||||||
|
# endif
|
||||||
|
|
||||||
|
typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO;
|
||||||
|
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_badMessageCheck (1 << 1)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_badRequest (1 << 2)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_badTime (1 << 3)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_badCertId (1 << 4)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_badDataFormat (1 << 5)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_wrongAuthority (1 << 6)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_incorrectData (1 << 7)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_missingTimeStamp (1 << 8)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_badPOP (1 << 9)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_certRevoked (1 << 10)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_certConfirmed (1 << 11)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_wrongIntegrity (1 << 12)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_badRecipientNonce (1 << 13)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_timeNotAvailable (1 << 14)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_unacceptedPolicy (1 << 15)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_unacceptedExtension (1 << 16)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_addInfoNotAvailable (1 << 17)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_badSenderNonce (1 << 18)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_badCertTemplate (1 << 19)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_signerNotTrusted (1 << 20)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_transactionIdInUse (1 << 21)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_unsupportedVersion (1 << 22)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_notAuthorized (1 << 23)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_systemUnavail (1 << 24)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_systemFailure (1 << 25)
|
||||||
|
# define OSSL_CMP_CTX_FAILINFO_duplicateCertReq (1 << 26)
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* PKIStatus ::= INTEGER {
|
||||||
|
* accepted (0),
|
||||||
|
* -- you got exactly what you asked for
|
||||||
|
* grantedWithMods (1),
|
||||||
|
* -- you got something like what you asked for; the
|
||||||
|
* -- requester is responsible for ascertaining the differences
|
||||||
|
* rejection (2),
|
||||||
|
* -- you don't get it, more information elsewhere in the message
|
||||||
|
* waiting (3),
|
||||||
|
* -- the request body part has not yet been processed; expect to
|
||||||
|
* -- hear more later (note: proper handling of this status
|
||||||
|
* -- response MAY use the polling req/rep PKIMessages specified
|
||||||
|
* -- in Section 5.3.22; alternatively, polling in the underlying
|
||||||
|
* -- transport layer MAY have some utility in this regard)
|
||||||
|
* revocationWarning (4),
|
||||||
|
* -- this message contains a warning that a revocation is
|
||||||
|
* -- imminent
|
||||||
|
* revocationNotification (5),
|
||||||
|
* -- notification that a revocation has occurred
|
||||||
|
* keyUpdateWarning (6)
|
||||||
|
* -- update already done for the oldCertId specified in
|
||||||
|
* -- CertReqMsg
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
# define OSSL_CMP_PKISTATUS_request -3
|
||||||
|
# define OSSL_CMP_PKISTATUS_trans -2
|
||||||
|
# define OSSL_CMP_PKISTATUS_unspecified -1
|
||||||
|
# define OSSL_CMP_PKISTATUS_accepted 0
|
||||||
|
# define OSSL_CMP_PKISTATUS_grantedWithMods 1
|
||||||
|
# define OSSL_CMP_PKISTATUS_rejection 2
|
||||||
|
# define OSSL_CMP_PKISTATUS_waiting 3
|
||||||
|
# define OSSL_CMP_PKISTATUS_revocationWarning 4
|
||||||
|
# define OSSL_CMP_PKISTATUS_revocationNotification 5
|
||||||
|
# define OSSL_CMP_PKISTATUS_keyUpdateWarning 6
|
||||||
|
|
||||||
|
typedef ASN1_INTEGER OSSL_CMP_PKISTATUS;
|
||||||
|
DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS)
|
||||||
|
|
||||||
|
# define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0
|
||||||
|
# define OSSL_CMP_CERTORENCCERT_ENCRYPTEDCERT 1
|
||||||
|
|
||||||
|
/* data type declarations */
|
||||||
|
typedef struct ossl_cmp_ctx_st OSSL_CMP_CTX;
|
||||||
|
typedef struct ossl_cmp_pkiheader_st OSSL_CMP_PKIHEADER;
|
||||||
|
DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKIHEADER)
|
||||||
|
typedef struct ossl_cmp_msg_st OSSL_CMP_MSG;
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_MSG)
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS(OSSL_CMP_MSG, OSSL_CMP_MSG, OSSL_CMP_MSG)
|
||||||
|
typedef struct ossl_cmp_certstatus_st OSSL_CMP_CERTSTATUS;
|
||||||
|
{-
|
||||||
|
generate_stack_macros("OSSL_CMP_CERTSTATUS");
|
||||||
|
-}
|
||||||
|
typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV;
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV)
|
||||||
|
{-
|
||||||
|
generate_stack_macros("OSSL_CMP_ITAV");
|
||||||
|
-}
|
||||||
|
typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT;
|
||||||
|
typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI;
|
||||||
|
DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI)
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_PKISI)
|
||||||
|
{-
|
||||||
|
generate_stack_macros("OSSL_CMP_PKISI");
|
||||||
|
-}
|
||||||
|
typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE;
|
||||||
|
{-
|
||||||
|
generate_stack_macros("OSSL_CMP_CERTREPMESSAGE");
|
||||||
|
-}
|
||||||
|
typedef struct ossl_cmp_pollrep_st OSSL_CMP_POLLREP;
|
||||||
|
typedef STACK_OF(OSSL_CMP_POLLREP) OSSL_CMP_POLLREPCONTENT;
|
||||||
|
typedef struct ossl_cmp_certresponse_st OSSL_CMP_CERTRESPONSE;
|
||||||
|
{-
|
||||||
|
generate_stack_macros("OSSL_CMP_CERTRESPONSE");
|
||||||
|
-}
|
||||||
|
typedef STACK_OF(ASN1_UTF8STRING) OSSL_CMP_PKIFREETEXT;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* function DECLARATIONS
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* from cmp_asn.c */
|
||||||
|
OSSL_CMP_ITAV *OSSL_CMP_ITAV_create(ASN1_OBJECT *type, ASN1_TYPE *value);
|
||||||
|
void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type,
|
||||||
|
ASN1_TYPE *value);
|
||||||
|
ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav);
|
||||||
|
ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav);
|
||||||
|
int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p,
|
||||||
|
OSSL_CMP_ITAV *itav);
|
||||||
|
void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav);
|
||||||
|
void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg);
|
||||||
|
|
||||||
|
/* from cmp_ctx.c */
|
||||||
|
OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx);
|
||||||
|
int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx);
|
||||||
|
/* CMP general options: */
|
||||||
|
# define OSSL_CMP_OPT_LOG_VERBOSITY 0
|
||||||
|
/* CMP transfer options: */
|
||||||
|
# define OSSL_CMP_OPT_KEEP_ALIVE 10
|
||||||
|
# define OSSL_CMP_OPT_MSG_TIMEOUT 11
|
||||||
|
# define OSSL_CMP_OPT_TOTAL_TIMEOUT 12
|
||||||
|
/* CMP request options: */
|
||||||
|
# define OSSL_CMP_OPT_VALIDITY_DAYS 20
|
||||||
|
# define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21
|
||||||
|
# define OSSL_CMP_OPT_SUBJECTALTNAME_CRITICAL 22
|
||||||
|
# define OSSL_CMP_OPT_POLICIES_CRITICAL 23
|
||||||
|
# define OSSL_CMP_OPT_POPO_METHOD 24
|
||||||
|
# define OSSL_CMP_OPT_IMPLICIT_CONFIRM 25
|
||||||
|
# define OSSL_CMP_OPT_DISABLE_CONFIRM 26
|
||||||
|
# define OSSL_CMP_OPT_REVOCATION_REASON 27
|
||||||
|
/* CMP protection options: */
|
||||||
|
# define OSSL_CMP_OPT_UNPROTECTED_SEND 30
|
||||||
|
# define OSSL_CMP_OPT_UNPROTECTED_ERRORS 31
|
||||||
|
# define OSSL_CMP_OPT_OWF_ALGNID 32
|
||||||
|
# define OSSL_CMP_OPT_MAC_ALGNID 33
|
||||||
|
# define OSSL_CMP_OPT_DIGEST_ALGNID 34
|
||||||
|
# define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35
|
||||||
|
# define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36
|
||||||
|
int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val);
|
||||||
|
int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt);
|
||||||
|
/* CMP-specific callback for logging and outputting the error queue: */
|
||||||
|
int OSSL_CMP_CTX_set_log_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_log_cb_t cb);
|
||||||
|
# define OSSL_CMP_CTX_set_log_verbosity(ctx, level) \
|
||||||
|
OSSL_CMP_CTX_set_option(ctx, OSSL_CMP_OPT_LOG_VERBOSITY, level)
|
||||||
|
void OSSL_CMP_CTX_print_errors(const OSSL_CMP_CTX *ctx);
|
||||||
|
/* message transfer: */
|
||||||
|
int OSSL_CMP_CTX_set1_serverPath(OSSL_CMP_CTX *ctx, const char *path);
|
||||||
|
int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address);
|
||||||
|
int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port);
|
||||||
|
int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name);
|
||||||
|
int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names);
|
||||||
|
int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb);
|
||||||
|
int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg);
|
||||||
|
void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx);
|
||||||
|
typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx,
|
||||||
|
const OSSL_CMP_MSG *req);
|
||||||
|
int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb);
|
||||||
|
int OSSL_CMP_CTX_set_transfer_cb_arg(OSSL_CMP_CTX *ctx, void *arg);
|
||||||
|
void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx);
|
||||||
|
/* server authentication: */
|
||||||
|
int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert);
|
||||||
|
int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name);
|
||||||
|
int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store);
|
||||||
|
X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx);
|
||||||
|
int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs);
|
||||||
|
STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx);
|
||||||
|
/* client authentication: */
|
||||||
|
int OSSL_CMP_CTX_set1_cert(OSSL_CMP_CTX *ctx, X509 *cert);
|
||||||
|
int OSSL_CMP_CTX_build_cert_chain(OSSL_CMP_CTX *ctx, X509_STORE *own_trusted,
|
||||||
|
STACK_OF(X509) *candidates);
|
||||||
|
int OSSL_CMP_CTX_set1_pkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey);
|
||||||
|
int OSSL_CMP_CTX_set1_referenceValue(OSSL_CMP_CTX *ctx,
|
||||||
|
const unsigned char *ref, int len);
|
||||||
|
int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx,
|
||||||
|
const unsigned char *sec, int len);
|
||||||
|
/* CMP message header and extra certificates: */
|
||||||
|
int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name);
|
||||||
|
int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav);
|
||||||
|
int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx);
|
||||||
|
int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx,
|
||||||
|
STACK_OF(X509) *extraCertsOut);
|
||||||
|
/* certificate template: */
|
||||||
|
int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey);
|
||||||
|
EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv);
|
||||||
|
int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name);
|
||||||
|
int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name);
|
||||||
|
int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx,
|
||||||
|
const GENERAL_NAME *name);
|
||||||
|
int OSSL_CMP_CTX_set0_reqExtensions(OSSL_CMP_CTX *ctx, X509_EXTENSIONS *exts);
|
||||||
|
int OSSL_CMP_CTX_reqExtensions_have_SAN(OSSL_CMP_CTX *ctx);
|
||||||
|
int OSSL_CMP_CTX_push0_policy(OSSL_CMP_CTX *ctx, POLICYINFO *pinfo);
|
||||||
|
int OSSL_CMP_CTX_set1_oldCert(OSSL_CMP_CTX *ctx, X509 *cert);
|
||||||
|
int OSSL_CMP_CTX_set1_p10CSR(OSSL_CMP_CTX *ctx, const X509_REQ *csr);
|
||||||
|
/* misc body contents: */
|
||||||
|
int OSSL_CMP_CTX_push0_genm_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav);
|
||||||
|
/* certificate confirmation: */
|
||||||
|
typedef int (*OSSL_CMP_certConf_cb_t) (OSSL_CMP_CTX *ctx, X509 *cert,
|
||||||
|
int fail_info, const char **txt);
|
||||||
|
int OSSL_CMP_certConf_cb(OSSL_CMP_CTX *ctx, X509 *cert, int fail_info,
|
||||||
|
const char **text);
|
||||||
|
int OSSL_CMP_CTX_set_certConf_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_certConf_cb_t cb);
|
||||||
|
int OSSL_CMP_CTX_set_certConf_cb_arg(OSSL_CMP_CTX *ctx, void *arg);
|
||||||
|
void *OSSL_CMP_CTX_get_certConf_cb_arg(const OSSL_CMP_CTX *ctx);
|
||||||
|
/* result fetching: */
|
||||||
|
int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx);
|
||||||
|
OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx);
|
||||||
|
int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx);
|
||||||
|
# define OSSL_CMP_PKISI_BUFLEN 1024
|
||||||
|
X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx);
|
||||||
|
STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx);
|
||||||
|
STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx);
|
||||||
|
STACK_OF(X509) *OSSL_CMP_CTX_get1_extraCertsIn(const OSSL_CMP_CTX *ctx);
|
||||||
|
int OSSL_CMP_CTX_set1_transactionID(OSSL_CMP_CTX *ctx,
|
||||||
|
const ASN1_OCTET_STRING *id);
|
||||||
|
int OSSL_CMP_CTX_set1_senderNonce(OSSL_CMP_CTX *ctx,
|
||||||
|
const ASN1_OCTET_STRING *nonce);
|
||||||
|
|
||||||
|
/* from cmp_status.c */
|
||||||
|
char *OSSL_CMP_CTX_snprint_PKIStatus(const OSSL_CMP_CTX *ctx, char *buf,
|
||||||
|
size_t bufsize);
|
||||||
|
char *OSSL_CMP_snprint_PKIStatusInfo(const OSSL_CMP_PKISI *statusInfo,
|
||||||
|
char *buf, size_t bufsize);
|
||||||
|
OSSL_CMP_PKISI *
|
||||||
|
OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text);
|
||||||
|
|
||||||
|
/* from cmp_hdr.c */
|
||||||
|
ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const
|
||||||
|
OSSL_CMP_PKIHEADER *hdr);
|
||||||
|
ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr);
|
||||||
|
|
||||||
|
/* from cmp_msg.c */
|
||||||
|
OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg);
|
||||||
|
int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg);
|
||||||
|
int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg);
|
||||||
|
int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg);
|
||||||
|
OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid);
|
||||||
|
OSSL_CMP_MSG *OSSL_CMP_MSG_read(const char *file, OSSL_LIB_CTX *libctx,
|
||||||
|
const char *propq);
|
||||||
|
int OSSL_CMP_MSG_write(const char *file, const OSSL_CMP_MSG *msg);
|
||||||
|
OSSL_CMP_MSG *d2i_OSSL_CMP_MSG_bio(BIO *bio, OSSL_CMP_MSG **msg);
|
||||||
|
int i2d_OSSL_CMP_MSG_bio(BIO *bio, const OSSL_CMP_MSG *msg);
|
||||||
|
|
||||||
|
/* from cmp_vfy.c */
|
||||||
|
int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg);
|
||||||
|
int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx,
|
||||||
|
X509_STORE *trusted_store, X509 *cert);
|
||||||
|
|
||||||
|
/* from cmp_http.c */
|
||||||
|
OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx,
|
||||||
|
const OSSL_CMP_MSG *req);
|
||||||
|
|
||||||
|
/* from cmp_server.c */
|
||||||
|
typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX;
|
||||||
|
OSSL_CMP_MSG *OSSL_CMP_SRV_process_request(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||||
|
const OSSL_CMP_MSG *req);
|
||||||
|
OSSL_CMP_MSG * OSSL_CMP_CTX_server_perform(OSSL_CMP_CTX *client_ctx,
|
||||||
|
const OSSL_CMP_MSG *req);
|
||||||
|
OSSL_CMP_SRV_CTX *OSSL_CMP_SRV_CTX_new(OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
void OSSL_CMP_SRV_CTX_free(OSSL_CMP_SRV_CTX *srv_ctx);
|
||||||
|
typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_cert_request_cb_t)
|
||||||
|
(OSSL_CMP_SRV_CTX *srv_ctx, const OSSL_CMP_MSG *req, int certReqId,
|
||||||
|
const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr,
|
||||||
|
X509 **certOut, STACK_OF(X509) **chainOut, STACK_OF(X509) **caPubs);
|
||||||
|
typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_rr_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||||
|
const OSSL_CMP_MSG *req,
|
||||||
|
const X509_NAME *issuer,
|
||||||
|
const ASN1_INTEGER *serial);
|
||||||
|
typedef int (*OSSL_CMP_SRV_genm_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||||
|
const OSSL_CMP_MSG *req,
|
||||||
|
const STACK_OF(OSSL_CMP_ITAV) *in,
|
||||||
|
STACK_OF(OSSL_CMP_ITAV) **out);
|
||||||
|
typedef void (*OSSL_CMP_SRV_error_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||||
|
const OSSL_CMP_MSG *req,
|
||||||
|
const OSSL_CMP_PKISI *statusInfo,
|
||||||
|
const ASN1_INTEGER *errorCode,
|
||||||
|
const OSSL_CMP_PKIFREETEXT *errDetails);
|
||||||
|
typedef int (*OSSL_CMP_SRV_certConf_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||||
|
const OSSL_CMP_MSG *req,
|
||||||
|
int certReqId,
|
||||||
|
const ASN1_OCTET_STRING *certHash,
|
||||||
|
const OSSL_CMP_PKISI *si);
|
||||||
|
typedef int (*OSSL_CMP_SRV_pollReq_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||||
|
const OSSL_CMP_MSG *req, int certReqId,
|
||||||
|
OSSL_CMP_MSG **certReq,
|
||||||
|
int64_t *check_after);
|
||||||
|
int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx,
|
||||||
|
OSSL_CMP_SRV_cert_request_cb_t process_cert_request,
|
||||||
|
OSSL_CMP_SRV_rr_cb_t process_rr,
|
||||||
|
OSSL_CMP_SRV_genm_cb_t process_genm,
|
||||||
|
OSSL_CMP_SRV_error_cb_t process_error,
|
||||||
|
OSSL_CMP_SRV_certConf_cb_t process_certConf,
|
||||||
|
OSSL_CMP_SRV_pollReq_cb_t process_pollReq);
|
||||||
|
OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx);
|
||||||
|
void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx);
|
||||||
|
int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||||
|
int val);
|
||||||
|
int OSSL_CMP_SRV_CTX_set_accept_unprotected(OSSL_CMP_SRV_CTX *srv_ctx, int val);
|
||||||
|
int OSSL_CMP_SRV_CTX_set_accept_raverified(OSSL_CMP_SRV_CTX *srv_ctx, int val);
|
||||||
|
int OSSL_CMP_SRV_CTX_set_grant_implicit_confirm(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||||
|
int val);
|
||||||
|
|
||||||
|
/* from cmp_client.c */
|
||||||
|
X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type,
|
||||||
|
const OSSL_CRMF_MSG *crm);
|
||||||
|
# define OSSL_CMP_IR 0
|
||||||
|
# define OSSL_CMP_CR 2
|
||||||
|
# define OSSL_CMP_P10CR 4
|
||||||
|
# define OSSL_CMP_KUR 7
|
||||||
|
# define OSSL_CMP_exec_IR_ses(ctx) \
|
||||||
|
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL)
|
||||||
|
# define OSSL_CMP_exec_CR_ses(ctx) \
|
||||||
|
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_CR, NULL)
|
||||||
|
# define OSSL_CMP_exec_P10CR_ses(ctx) \
|
||||||
|
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_P10CR, NULL)
|
||||||
|
# define OSSL_CMP_exec_KUR_ses(ctx) \
|
||||||
|
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_KUR, NULL)
|
||||||
|
int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type,
|
||||||
|
const OSSL_CRMF_MSG *crm, int *checkAfter);
|
||||||
|
int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx);
|
||||||
|
STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx);
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif /* !defined(OPENSSL_NO_CMP) */
|
||||||
|
#endif /* !defined(OPENSSL_CMP_H) */
|
||||||
56
src/openssl/cmp_util.h
Normal file
56
src/openssl/cmp_util.h
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
* Copyright Nokia 2007-2019
|
||||||
|
* Copyright Siemens AG 2015-2019
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CMP_UTIL_H
|
||||||
|
# define OPENSSL_CMP_UTIL_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# ifndef OPENSSL_NO_CMP
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# include <openssl/trace.h>
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
int OSSL_CMP_log_open(void);
|
||||||
|
void OSSL_CMP_log_close(void);
|
||||||
|
# define OSSL_CMP_LOG_PREFIX "CMP "
|
||||||
|
|
||||||
|
/*
|
||||||
|
* generalized logging/error callback mirroring the severity levels of syslog.h
|
||||||
|
*/
|
||||||
|
typedef int OSSL_CMP_severity;
|
||||||
|
# define OSSL_CMP_LOG_EMERG 0
|
||||||
|
# define OSSL_CMP_LOG_ALERT 1
|
||||||
|
# define OSSL_CMP_LOG_CRIT 2
|
||||||
|
# define OSSL_CMP_LOG_ERR 3
|
||||||
|
# define OSSL_CMP_LOG_WARNING 4
|
||||||
|
# define OSSL_CMP_LOG_NOTICE 5
|
||||||
|
# define OSSL_CMP_LOG_INFO 6
|
||||||
|
# define OSSL_CMP_LOG_DEBUG 7
|
||||||
|
# define OSSL_CMP_LOG_TRACE 8
|
||||||
|
# define OSSL_CMP_LOG_MAX OSSL_CMP_LOG_TRACE
|
||||||
|
typedef int (*OSSL_CMP_log_cb_t)(const char *func, const char *file, int line,
|
||||||
|
OSSL_CMP_severity level, const char *msg);
|
||||||
|
|
||||||
|
int OSSL_CMP_print_to_bio(BIO *bio, const char *component, const char *file,
|
||||||
|
int line, OSSL_CMP_severity level, const char *msg);
|
||||||
|
/* use of the logging callback for outputting error queue */
|
||||||
|
void OSSL_CMP_print_errors_cb(OSSL_CMP_log_cb_t log_fn);
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif /* !defined(OPENSSL_NO_CMP) */
|
||||||
|
#endif /* !defined(OPENSSL_CMP_UTIL_H) */
|
||||||
116
src/openssl/cmperr.h
Normal file
116
src/openssl/cmperr.h
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CMPERR_H
|
||||||
|
# define OPENSSL_CMPERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_CMP
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CMP reason codes.
|
||||||
|
*/
|
||||||
|
# define CMP_R_ALGORITHM_NOT_SUPPORTED 139
|
||||||
|
# define CMP_R_BAD_CHECKAFTER_IN_POLLREP 167
|
||||||
|
# define CMP_R_BAD_REQUEST_ID 108
|
||||||
|
# define CMP_R_CERTHASH_UNMATCHED 156
|
||||||
|
# define CMP_R_CERTID_NOT_FOUND 109
|
||||||
|
# define CMP_R_CERTIFICATE_NOT_ACCEPTED 169
|
||||||
|
# define CMP_R_CERTIFICATE_NOT_FOUND 112
|
||||||
|
# define CMP_R_CERTREQMSG_NOT_FOUND 157
|
||||||
|
# define CMP_R_CERTRESPONSE_NOT_FOUND 113
|
||||||
|
# define CMP_R_CERT_AND_KEY_DO_NOT_MATCH 114
|
||||||
|
# define CMP_R_CHECKAFTER_OUT_OF_RANGE 181
|
||||||
|
# define CMP_R_ENCOUNTERED_KEYUPDATEWARNING 176
|
||||||
|
# define CMP_R_ENCOUNTERED_WAITING 162
|
||||||
|
# define CMP_R_ERROR_CALCULATING_PROTECTION 115
|
||||||
|
# define CMP_R_ERROR_CREATING_CERTCONF 116
|
||||||
|
# define CMP_R_ERROR_CREATING_CERTREP 117
|
||||||
|
# define CMP_R_ERROR_CREATING_CERTREQ 163
|
||||||
|
# define CMP_R_ERROR_CREATING_ERROR 118
|
||||||
|
# define CMP_R_ERROR_CREATING_GENM 119
|
||||||
|
# define CMP_R_ERROR_CREATING_GENP 120
|
||||||
|
# define CMP_R_ERROR_CREATING_PKICONF 122
|
||||||
|
# define CMP_R_ERROR_CREATING_POLLREP 123
|
||||||
|
# define CMP_R_ERROR_CREATING_POLLREQ 124
|
||||||
|
# define CMP_R_ERROR_CREATING_RP 125
|
||||||
|
# define CMP_R_ERROR_CREATING_RR 126
|
||||||
|
# define CMP_R_ERROR_PARSING_PKISTATUS 107
|
||||||
|
# define CMP_R_ERROR_PROCESSING_MESSAGE 158
|
||||||
|
# define CMP_R_ERROR_PROTECTING_MESSAGE 127
|
||||||
|
# define CMP_R_ERROR_SETTING_CERTHASH 128
|
||||||
|
# define CMP_R_ERROR_UNEXPECTED_CERTCONF 160
|
||||||
|
# define CMP_R_ERROR_VALIDATING_PROTECTION 140
|
||||||
|
# define CMP_R_ERROR_VALIDATING_SIGNATURE 171
|
||||||
|
# define CMP_R_FAILED_BUILDING_OWN_CHAIN 164
|
||||||
|
# define CMP_R_FAILED_EXTRACTING_PUBKEY 141
|
||||||
|
# define CMP_R_FAILURE_OBTAINING_RANDOM 110
|
||||||
|
# define CMP_R_FAIL_INFO_OUT_OF_RANGE 129
|
||||||
|
# define CMP_R_INVALID_ARGS 100
|
||||||
|
# define CMP_R_INVALID_OPTION 174
|
||||||
|
# define CMP_R_MISSING_CERTID 165
|
||||||
|
# define CMP_R_MISSING_KEY_INPUT_FOR_CREATING_PROTECTION 130
|
||||||
|
# define CMP_R_MISSING_KEY_USAGE_DIGITALSIGNATURE 142
|
||||||
|
# define CMP_R_MISSING_P10CSR 121
|
||||||
|
# define CMP_R_MISSING_PBM_SECRET 166
|
||||||
|
# define CMP_R_MISSING_PRIVATE_KEY 131
|
||||||
|
# define CMP_R_MISSING_PRIVATE_KEY_FOR_POPO 190
|
||||||
|
# define CMP_R_MISSING_PROTECTION 143
|
||||||
|
# define CMP_R_MISSING_PUBLIC_KEY 183
|
||||||
|
# define CMP_R_MISSING_REFERENCE_CERT 168
|
||||||
|
# define CMP_R_MISSING_SECRET 178
|
||||||
|
# define CMP_R_MISSING_SENDER_IDENTIFICATION 111
|
||||||
|
# define CMP_R_MISSING_TRUST_ANCHOR 179
|
||||||
|
# define CMP_R_MISSING_TRUST_STORE 144
|
||||||
|
# define CMP_R_MULTIPLE_REQUESTS_NOT_SUPPORTED 161
|
||||||
|
# define CMP_R_MULTIPLE_RESPONSES_NOT_SUPPORTED 170
|
||||||
|
# define CMP_R_MULTIPLE_SAN_SOURCES 102
|
||||||
|
# define CMP_R_NO_STDIO 194
|
||||||
|
# define CMP_R_NO_SUITABLE_SENDER_CERT 145
|
||||||
|
# define CMP_R_NULL_ARGUMENT 103
|
||||||
|
# define CMP_R_PKIBODY_ERROR 146
|
||||||
|
# define CMP_R_PKISTATUSINFO_NOT_FOUND 132
|
||||||
|
# define CMP_R_POLLING_FAILED 172
|
||||||
|
# define CMP_R_POTENTIALLY_INVALID_CERTIFICATE 147
|
||||||
|
# define CMP_R_RECEIVED_ERROR 180
|
||||||
|
# define CMP_R_RECIPNONCE_UNMATCHED 148
|
||||||
|
# define CMP_R_REQUEST_NOT_ACCEPTED 149
|
||||||
|
# define CMP_R_REQUEST_REJECTED_BY_SERVER 182
|
||||||
|
# define CMP_R_SENDER_GENERALNAME_TYPE_NOT_SUPPORTED 150
|
||||||
|
# define CMP_R_SRVCERT_DOES_NOT_VALIDATE_MSG 151
|
||||||
|
# define CMP_R_TOTAL_TIMEOUT 184
|
||||||
|
# define CMP_R_TRANSACTIONID_UNMATCHED 152
|
||||||
|
# define CMP_R_TRANSFER_ERROR 159
|
||||||
|
# define CMP_R_UNEXPECTED_PKIBODY 133
|
||||||
|
# define CMP_R_UNEXPECTED_PKISTATUS 185
|
||||||
|
# define CMP_R_UNEXPECTED_PVNO 153
|
||||||
|
# define CMP_R_UNKNOWN_ALGORITHM_ID 134
|
||||||
|
# define CMP_R_UNKNOWN_CERT_TYPE 135
|
||||||
|
# define CMP_R_UNKNOWN_PKISTATUS 186
|
||||||
|
# define CMP_R_UNSUPPORTED_ALGORITHM 136
|
||||||
|
# define CMP_R_UNSUPPORTED_KEY_TYPE 137
|
||||||
|
# define CMP_R_UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC 154
|
||||||
|
# define CMP_R_VALUE_TOO_LARGE 175
|
||||||
|
# define CMP_R_VALUE_TOO_SMALL 177
|
||||||
|
# define CMP_R_WRONG_ALGORITHM_OID 138
|
||||||
|
# define CMP_R_WRONG_CERTID 189
|
||||||
|
# define CMP_R_WRONG_CERTID_IN_RP 187
|
||||||
|
# define CMP_R_WRONG_PBM_VALUE 155
|
||||||
|
# define CMP_R_WRONG_RP_COMPONENT_COUNT 188
|
||||||
|
# define CMP_R_WRONG_SERIAL_IN_RP 173
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
395
src/openssl/cms.h.in
Normal file
395
src/openssl/cms.h.in
Normal file
@@ -0,0 +1,395 @@
|
|||||||
|
/*
|
||||||
|
* {- join("\n * ", @autowarntext) -}
|
||||||
|
*
|
||||||
|
* Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
{-
|
||||||
|
use OpenSSL::stackhash qw(generate_stack_macros);
|
||||||
|
-}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CMS_H
|
||||||
|
# define OPENSSL_CMS_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_CMS_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_CMS
|
||||||
|
# include <openssl/x509.h>
|
||||||
|
# include <openssl/x509v3.h>
|
||||||
|
# include <openssl/cmserr.h>
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
typedef struct CMS_ContentInfo_st CMS_ContentInfo;
|
||||||
|
typedef struct CMS_SignerInfo_st CMS_SignerInfo;
|
||||||
|
typedef struct CMS_CertificateChoices CMS_CertificateChoices;
|
||||||
|
typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice;
|
||||||
|
typedef struct CMS_RecipientInfo_st CMS_RecipientInfo;
|
||||||
|
typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest;
|
||||||
|
typedef struct CMS_Receipt_st CMS_Receipt;
|
||||||
|
typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey;
|
||||||
|
typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute;
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("CMS_SignerInfo")
|
||||||
|
.generate_stack_macros("CMS_RecipientEncryptedKey")
|
||||||
|
.generate_stack_macros("CMS_RecipientInfo")
|
||||||
|
.generate_stack_macros("CMS_RevocationInfoChoice");
|
||||||
|
-}
|
||||||
|
|
||||||
|
DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo)
|
||||||
|
DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest)
|
||||||
|
DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo)
|
||||||
|
|
||||||
|
CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
|
||||||
|
# define CMS_SIGNERINFO_ISSUER_SERIAL 0
|
||||||
|
# define CMS_SIGNERINFO_KEYIDENTIFIER 1
|
||||||
|
|
||||||
|
# define CMS_RECIPINFO_NONE -1
|
||||||
|
# define CMS_RECIPINFO_TRANS 0
|
||||||
|
# define CMS_RECIPINFO_AGREE 1
|
||||||
|
# define CMS_RECIPINFO_KEK 2
|
||||||
|
# define CMS_RECIPINFO_PASS 3
|
||||||
|
# define CMS_RECIPINFO_OTHER 4
|
||||||
|
|
||||||
|
/* S/MIME related flags */
|
||||||
|
|
||||||
|
# define CMS_TEXT 0x1
|
||||||
|
# define CMS_NOCERTS 0x2
|
||||||
|
# define CMS_NO_CONTENT_VERIFY 0x4
|
||||||
|
# define CMS_NO_ATTR_VERIFY 0x8
|
||||||
|
# define CMS_NOSIGS \
|
||||||
|
(CMS_NO_CONTENT_VERIFY|CMS_NO_ATTR_VERIFY)
|
||||||
|
# define CMS_NOINTERN 0x10
|
||||||
|
# define CMS_NO_SIGNER_CERT_VERIFY 0x20
|
||||||
|
# define CMS_NOVERIFY 0x20
|
||||||
|
# define CMS_DETACHED 0x40
|
||||||
|
# define CMS_BINARY 0x80
|
||||||
|
# define CMS_NOATTR 0x100
|
||||||
|
# define CMS_NOSMIMECAP 0x200
|
||||||
|
# define CMS_NOOLDMIMETYPE 0x400
|
||||||
|
# define CMS_CRLFEOL 0x800
|
||||||
|
# define CMS_STREAM 0x1000
|
||||||
|
# define CMS_NOCRL 0x2000
|
||||||
|
# define CMS_PARTIAL 0x4000
|
||||||
|
# define CMS_REUSE_DIGEST 0x8000
|
||||||
|
# define CMS_USE_KEYID 0x10000
|
||||||
|
# define CMS_DEBUG_DECRYPT 0x20000
|
||||||
|
# define CMS_KEY_PARAM 0x40000
|
||||||
|
# define CMS_ASCIICRLF 0x80000
|
||||||
|
# define CMS_CADES 0x100000
|
||||||
|
# define CMS_USE_ORIGINATOR_KEYID 0x200000
|
||||||
|
|
||||||
|
const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms);
|
||||||
|
|
||||||
|
BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont);
|
||||||
|
int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio);
|
||||||
|
|
||||||
|
ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms);
|
||||||
|
int CMS_is_detached(CMS_ContentInfo *cms);
|
||||||
|
int CMS_set_detached(CMS_ContentInfo *cms, int detached);
|
||||||
|
|
||||||
|
# ifdef OPENSSL_PEM_H
|
||||||
|
DECLARE_PEM_rw(CMS, CMS_ContentInfo)
|
||||||
|
# endif
|
||||||
|
int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms);
|
||||||
|
CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms);
|
||||||
|
int i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms);
|
||||||
|
|
||||||
|
BIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms);
|
||||||
|
int i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags);
|
||||||
|
int PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in,
|
||||||
|
int flags);
|
||||||
|
CMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont);
|
||||||
|
CMS_ContentInfo *SMIME_read_CMS_ex(BIO *bio, int flags, BIO **bcont, CMS_ContentInfo **ci);
|
||||||
|
int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags);
|
||||||
|
|
||||||
|
int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey,
|
||||||
|
STACK_OF(X509) *certs, BIO *data,
|
||||||
|
unsigned int flags);
|
||||||
|
CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey,
|
||||||
|
STACK_OF(X509) *certs, BIO *data,
|
||||||
|
unsigned int flags, OSSL_LIB_CTX *ctx,
|
||||||
|
const char *propq);
|
||||||
|
|
||||||
|
CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si,
|
||||||
|
X509 *signcert, EVP_PKEY *pkey,
|
||||||
|
STACK_OF(X509) *certs, unsigned int flags);
|
||||||
|
|
||||||
|
int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags);
|
||||||
|
CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags);
|
||||||
|
CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags,
|
||||||
|
OSSL_LIB_CTX *ctx, const char *propq);
|
||||||
|
|
||||||
|
int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
|
||||||
|
unsigned int flags);
|
||||||
|
CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md,
|
||||||
|
unsigned int flags);
|
||||||
|
CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md,
|
||||||
|
unsigned int flags, OSSL_LIB_CTX *ctx,
|
||||||
|
const char *propq);
|
||||||
|
|
||||||
|
int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms,
|
||||||
|
const unsigned char *key, size_t keylen,
|
||||||
|
BIO *dcont, BIO *out, unsigned int flags);
|
||||||
|
|
||||||
|
CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher,
|
||||||
|
const unsigned char *key,
|
||||||
|
size_t keylen, unsigned int flags);
|
||||||
|
CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher,
|
||||||
|
const unsigned char *key,
|
||||||
|
size_t keylen, unsigned int flags,
|
||||||
|
OSSL_LIB_CTX *ctx,
|
||||||
|
const char *propq);
|
||||||
|
|
||||||
|
int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph,
|
||||||
|
const unsigned char *key, size_t keylen);
|
||||||
|
|
||||||
|
int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
|
||||||
|
X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags);
|
||||||
|
|
||||||
|
int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms,
|
||||||
|
STACK_OF(X509) *certs,
|
||||||
|
X509_STORE *store, unsigned int flags);
|
||||||
|
|
||||||
|
STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms);
|
||||||
|
|
||||||
|
CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in,
|
||||||
|
const EVP_CIPHER *cipher, unsigned int flags);
|
||||||
|
CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in,
|
||||||
|
const EVP_CIPHER *cipher, unsigned int flags,
|
||||||
|
OSSL_LIB_CTX *ctx, const char *propq);
|
||||||
|
|
||||||
|
int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert,
|
||||||
|
BIO *dcont, BIO *out, unsigned int flags);
|
||||||
|
|
||||||
|
int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert);
|
||||||
|
int CMS_decrypt_set1_pkey_and_peer(CMS_ContentInfo *cms, EVP_PKEY *pk,
|
||||||
|
X509 *cert, X509 *peer);
|
||||||
|
int CMS_decrypt_set1_key(CMS_ContentInfo *cms,
|
||||||
|
unsigned char *key, size_t keylen,
|
||||||
|
const unsigned char *id, size_t idlen);
|
||||||
|
int CMS_decrypt_set1_password(CMS_ContentInfo *cms,
|
||||||
|
unsigned char *pass, ossl_ssize_t passlen);
|
||||||
|
|
||||||
|
STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms);
|
||||||
|
int CMS_RecipientInfo_type(CMS_RecipientInfo *ri);
|
||||||
|
EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri);
|
||||||
|
CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher);
|
||||||
|
CMS_ContentInfo *
|
||||||
|
CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx,
|
||||||
|
const char *propq);
|
||||||
|
CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher);
|
||||||
|
CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher,
|
||||||
|
OSSL_LIB_CTX *ctx,
|
||||||
|
const char *propq);
|
||||||
|
|
||||||
|
CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms,
|
||||||
|
X509 *recip, unsigned int flags);
|
||||||
|
CMS_RecipientInfo *CMS_add1_recipient(CMS_ContentInfo *cms, X509 *recip,
|
||||||
|
EVP_PKEY *originatorPrivKey, X509 * originator, unsigned int flags);
|
||||||
|
int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey);
|
||||||
|
int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert);
|
||||||
|
int CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri,
|
||||||
|
EVP_PKEY **pk, X509 **recip,
|
||||||
|
X509_ALGOR **palg);
|
||||||
|
int CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri,
|
||||||
|
ASN1_OCTET_STRING **keyid,
|
||||||
|
X509_NAME **issuer,
|
||||||
|
ASN1_INTEGER **sno);
|
||||||
|
|
||||||
|
CMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid,
|
||||||
|
unsigned char *key, size_t keylen,
|
||||||
|
unsigned char *id, size_t idlen,
|
||||||
|
ASN1_GENERALIZEDTIME *date,
|
||||||
|
ASN1_OBJECT *otherTypeId,
|
||||||
|
ASN1_TYPE *otherType);
|
||||||
|
|
||||||
|
int CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri,
|
||||||
|
X509_ALGOR **palg,
|
||||||
|
ASN1_OCTET_STRING **pid,
|
||||||
|
ASN1_GENERALIZEDTIME **pdate,
|
||||||
|
ASN1_OBJECT **potherid,
|
||||||
|
ASN1_TYPE **pothertype);
|
||||||
|
|
||||||
|
int CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri,
|
||||||
|
unsigned char *key, size_t keylen);
|
||||||
|
|
||||||
|
int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri,
|
||||||
|
const unsigned char *id, size_t idlen);
|
||||||
|
|
||||||
|
int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri,
|
||||||
|
unsigned char *pass,
|
||||||
|
ossl_ssize_t passlen);
|
||||||
|
|
||||||
|
CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms,
|
||||||
|
int iter, int wrap_nid,
|
||||||
|
int pbe_nid,
|
||||||
|
unsigned char *pass,
|
||||||
|
ossl_ssize_t passlen,
|
||||||
|
const EVP_CIPHER *kekciph);
|
||||||
|
|
||||||
|
int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
|
||||||
|
int CMS_RecipientInfo_encrypt(const CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
|
||||||
|
|
||||||
|
int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
|
||||||
|
unsigned int flags);
|
||||||
|
CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags);
|
||||||
|
|
||||||
|
int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid);
|
||||||
|
const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms);
|
||||||
|
|
||||||
|
CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms);
|
||||||
|
int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert);
|
||||||
|
int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert);
|
||||||
|
STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms);
|
||||||
|
|
||||||
|
CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms);
|
||||||
|
int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl);
|
||||||
|
int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl);
|
||||||
|
STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms);
|
||||||
|
|
||||||
|
int CMS_SignedData_init(CMS_ContentInfo *cms);
|
||||||
|
CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
|
||||||
|
X509 *signer, EVP_PKEY *pk, const EVP_MD *md,
|
||||||
|
unsigned int flags);
|
||||||
|
EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si);
|
||||||
|
EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si);
|
||||||
|
STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms);
|
||||||
|
|
||||||
|
void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer);
|
||||||
|
int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si,
|
||||||
|
ASN1_OCTET_STRING **keyid,
|
||||||
|
X509_NAME **issuer, ASN1_INTEGER **sno);
|
||||||
|
int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert);
|
||||||
|
int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
|
||||||
|
unsigned int flags);
|
||||||
|
void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk,
|
||||||
|
X509 **signer, X509_ALGOR **pdig,
|
||||||
|
X509_ALGOR **psig);
|
||||||
|
ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si);
|
||||||
|
int CMS_SignerInfo_sign(CMS_SignerInfo *si);
|
||||||
|
int CMS_SignerInfo_verify(CMS_SignerInfo *si);
|
||||||
|
int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain);
|
||||||
|
|
||||||
|
int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs);
|
||||||
|
int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs,
|
||||||
|
int algnid, int keysize);
|
||||||
|
int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap);
|
||||||
|
|
||||||
|
int CMS_signed_get_attr_count(const CMS_SignerInfo *si);
|
||||||
|
int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
|
||||||
|
int lastpos);
|
||||||
|
int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj,
|
||||||
|
int lastpos);
|
||||||
|
X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc);
|
||||||
|
X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc);
|
||||||
|
int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
|
||||||
|
int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si,
|
||||||
|
const ASN1_OBJECT *obj, int type,
|
||||||
|
const void *bytes, int len);
|
||||||
|
int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si,
|
||||||
|
int nid, int type,
|
||||||
|
const void *bytes, int len);
|
||||||
|
int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si,
|
||||||
|
const char *attrname, int type,
|
||||||
|
const void *bytes, int len);
|
||||||
|
void *CMS_signed_get0_data_by_OBJ(const CMS_SignerInfo *si,
|
||||||
|
const ASN1_OBJECT *oid,
|
||||||
|
int lastpos, int type);
|
||||||
|
|
||||||
|
int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si);
|
||||||
|
int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
|
||||||
|
int lastpos);
|
||||||
|
int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si,
|
||||||
|
const ASN1_OBJECT *obj, int lastpos);
|
||||||
|
X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc);
|
||||||
|
X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc);
|
||||||
|
int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
|
||||||
|
int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si,
|
||||||
|
const ASN1_OBJECT *obj, int type,
|
||||||
|
const void *bytes, int len);
|
||||||
|
int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si,
|
||||||
|
int nid, int type,
|
||||||
|
const void *bytes, int len);
|
||||||
|
int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si,
|
||||||
|
const char *attrname, int type,
|
||||||
|
const void *bytes, int len);
|
||||||
|
void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid,
|
||||||
|
int lastpos, int type);
|
||||||
|
|
||||||
|
int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr);
|
||||||
|
CMS_ReceiptRequest *CMS_ReceiptRequest_create0(
|
||||||
|
unsigned char *id, int idlen, int allorfirst,
|
||||||
|
STACK_OF(GENERAL_NAMES) *receiptList,
|
||||||
|
STACK_OF(GENERAL_NAMES) *receiptsTo);
|
||||||
|
CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex(
|
||||||
|
unsigned char *id, int idlen, int allorfirst,
|
||||||
|
STACK_OF(GENERAL_NAMES) *receiptList,
|
||||||
|
STACK_OF(GENERAL_NAMES) *receiptsTo,
|
||||||
|
OSSL_LIB_CTX *ctx);
|
||||||
|
|
||||||
|
int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr);
|
||||||
|
void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr,
|
||||||
|
ASN1_STRING **pcid,
|
||||||
|
int *pallorfirst,
|
||||||
|
STACK_OF(GENERAL_NAMES) **plist,
|
||||||
|
STACK_OF(GENERAL_NAMES) **prto);
|
||||||
|
int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri,
|
||||||
|
X509_ALGOR **palg,
|
||||||
|
ASN1_OCTET_STRING **pukm);
|
||||||
|
STACK_OF(CMS_RecipientEncryptedKey)
|
||||||
|
*CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri);
|
||||||
|
|
||||||
|
int CMS_RecipientInfo_kari_get0_orig_id(CMS_RecipientInfo *ri,
|
||||||
|
X509_ALGOR **pubalg,
|
||||||
|
ASN1_BIT_STRING **pubkey,
|
||||||
|
ASN1_OCTET_STRING **keyid,
|
||||||
|
X509_NAME **issuer,
|
||||||
|
ASN1_INTEGER **sno);
|
||||||
|
|
||||||
|
int CMS_RecipientInfo_kari_orig_id_cmp(CMS_RecipientInfo *ri, X509 *cert);
|
||||||
|
|
||||||
|
int CMS_RecipientEncryptedKey_get0_id(CMS_RecipientEncryptedKey *rek,
|
||||||
|
ASN1_OCTET_STRING **keyid,
|
||||||
|
ASN1_GENERALIZEDTIME **tm,
|
||||||
|
CMS_OtherKeyAttribute **other,
|
||||||
|
X509_NAME **issuer, ASN1_INTEGER **sno);
|
||||||
|
int CMS_RecipientEncryptedKey_cert_cmp(CMS_RecipientEncryptedKey *rek,
|
||||||
|
X509 *cert);
|
||||||
|
int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk);
|
||||||
|
int CMS_RecipientInfo_kari_set0_pkey_and_peer(CMS_RecipientInfo *ri, EVP_PKEY *pk, X509 *peer);
|
||||||
|
EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri);
|
||||||
|
int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms,
|
||||||
|
CMS_RecipientInfo *ri,
|
||||||
|
CMS_RecipientEncryptedKey *rek);
|
||||||
|
|
||||||
|
int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg,
|
||||||
|
ASN1_OCTET_STRING *ukm, int keylen);
|
||||||
|
|
||||||
|
/* Backward compatibility for spelling errors. */
|
||||||
|
# define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM
|
||||||
|
# define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \
|
||||||
|
CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
123
src/openssl/cmserr.h
Normal file
123
src/openssl/cmserr.h
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CMSERR_H
|
||||||
|
# define OPENSSL_CMSERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_CMS
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CMS reason codes.
|
||||||
|
*/
|
||||||
|
# define CMS_R_ADD_SIGNER_ERROR 99
|
||||||
|
# define CMS_R_ATTRIBUTE_ERROR 161
|
||||||
|
# define CMS_R_CERTIFICATE_ALREADY_PRESENT 175
|
||||||
|
# define CMS_R_CERTIFICATE_HAS_NO_KEYID 160
|
||||||
|
# define CMS_R_CERTIFICATE_VERIFY_ERROR 100
|
||||||
|
# define CMS_R_CIPHER_AEAD_SET_TAG_ERROR 184
|
||||||
|
# define CMS_R_CIPHER_GET_TAG 185
|
||||||
|
# define CMS_R_CIPHER_INITIALISATION_ERROR 101
|
||||||
|
# define CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR 102
|
||||||
|
# define CMS_R_CMS_DATAFINAL_ERROR 103
|
||||||
|
# define CMS_R_CMS_LIB 104
|
||||||
|
# define CMS_R_CONTENTIDENTIFIER_MISMATCH 170
|
||||||
|
# define CMS_R_CONTENT_NOT_FOUND 105
|
||||||
|
# define CMS_R_CONTENT_TYPE_MISMATCH 171
|
||||||
|
# define CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA 106
|
||||||
|
# define CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA 107
|
||||||
|
# define CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA 108
|
||||||
|
# define CMS_R_CONTENT_VERIFY_ERROR 109
|
||||||
|
# define CMS_R_CTRL_ERROR 110
|
||||||
|
# define CMS_R_CTRL_FAILURE 111
|
||||||
|
# define CMS_R_DECODE_ERROR 187
|
||||||
|
# define CMS_R_DECRYPT_ERROR 112
|
||||||
|
# define CMS_R_ERROR_GETTING_PUBLIC_KEY 113
|
||||||
|
# define CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE 114
|
||||||
|
# define CMS_R_ERROR_SETTING_KEY 115
|
||||||
|
# define CMS_R_ERROR_SETTING_RECIPIENTINFO 116
|
||||||
|
# define CMS_R_ESS_SIGNING_CERTID_MISMATCH_ERROR 183
|
||||||
|
# define CMS_R_INVALID_ENCRYPTED_KEY_LENGTH 117
|
||||||
|
# define CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER 176
|
||||||
|
# define CMS_R_INVALID_KEY_LENGTH 118
|
||||||
|
# define CMS_R_INVALID_LABEL 190
|
||||||
|
# define CMS_R_INVALID_OAEP_PARAMETERS 191
|
||||||
|
# define CMS_R_KDF_PARAMETER_ERROR 186
|
||||||
|
# define CMS_R_MD_BIO_INIT_ERROR 119
|
||||||
|
# define CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH 120
|
||||||
|
# define CMS_R_MESSAGEDIGEST_WRONG_LENGTH 121
|
||||||
|
# define CMS_R_MSGSIGDIGEST_ERROR 172
|
||||||
|
# define CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE 162
|
||||||
|
# define CMS_R_MSGSIGDIGEST_WRONG_LENGTH 163
|
||||||
|
# define CMS_R_NEED_ONE_SIGNER 164
|
||||||
|
# define CMS_R_NOT_A_SIGNED_RECEIPT 165
|
||||||
|
# define CMS_R_NOT_ENCRYPTED_DATA 122
|
||||||
|
# define CMS_R_NOT_KEK 123
|
||||||
|
# define CMS_R_NOT_KEY_AGREEMENT 181
|
||||||
|
# define CMS_R_NOT_KEY_TRANSPORT 124
|
||||||
|
# define CMS_R_NOT_PWRI 177
|
||||||
|
# define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 125
|
||||||
|
# define CMS_R_NO_CIPHER 126
|
||||||
|
# define CMS_R_NO_CONTENT 127
|
||||||
|
# define CMS_R_NO_CONTENT_TYPE 173
|
||||||
|
# define CMS_R_NO_DEFAULT_DIGEST 128
|
||||||
|
# define CMS_R_NO_DIGEST_SET 129
|
||||||
|
# define CMS_R_NO_KEY 130
|
||||||
|
# define CMS_R_NO_KEY_OR_CERT 174
|
||||||
|
# define CMS_R_NO_MATCHING_DIGEST 131
|
||||||
|
# define CMS_R_NO_MATCHING_RECIPIENT 132
|
||||||
|
# define CMS_R_NO_MATCHING_SIGNATURE 166
|
||||||
|
# define CMS_R_NO_MSGSIGDIGEST 167
|
||||||
|
# define CMS_R_NO_PASSWORD 178
|
||||||
|
# define CMS_R_NO_PRIVATE_KEY 133
|
||||||
|
# define CMS_R_NO_PUBLIC_KEY 134
|
||||||
|
# define CMS_R_NO_RECEIPT_REQUEST 168
|
||||||
|
# define CMS_R_NO_SIGNERS 135
|
||||||
|
# define CMS_R_PEER_KEY_ERROR 188
|
||||||
|
# define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 136
|
||||||
|
# define CMS_R_RECEIPT_DECODE_ERROR 169
|
||||||
|
# define CMS_R_RECIPIENT_ERROR 137
|
||||||
|
# define CMS_R_SHARED_INFO_ERROR 189
|
||||||
|
# define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND 138
|
||||||
|
# define CMS_R_SIGNFINAL_ERROR 139
|
||||||
|
# define CMS_R_SMIME_TEXT_ERROR 140
|
||||||
|
# define CMS_R_STORE_INIT_ERROR 141
|
||||||
|
# define CMS_R_TYPE_NOT_COMPRESSED_DATA 142
|
||||||
|
# define CMS_R_TYPE_NOT_DATA 143
|
||||||
|
# define CMS_R_TYPE_NOT_DIGESTED_DATA 144
|
||||||
|
# define CMS_R_TYPE_NOT_ENCRYPTED_DATA 145
|
||||||
|
# define CMS_R_TYPE_NOT_ENVELOPED_DATA 146
|
||||||
|
# define CMS_R_UNABLE_TO_FINALIZE_CONTEXT 147
|
||||||
|
# define CMS_R_UNKNOWN_CIPHER 148
|
||||||
|
# define CMS_R_UNKNOWN_DIGEST_ALGORITHM 149
|
||||||
|
# define CMS_R_UNKNOWN_ID 150
|
||||||
|
# define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 151
|
||||||
|
# define CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM 194
|
||||||
|
# define CMS_R_UNSUPPORTED_CONTENT_TYPE 152
|
||||||
|
# define CMS_R_UNSUPPORTED_ENCRYPTION_TYPE 192
|
||||||
|
# define CMS_R_UNSUPPORTED_KEK_ALGORITHM 153
|
||||||
|
# define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM 179
|
||||||
|
# define CMS_R_UNSUPPORTED_LABEL_SOURCE 193
|
||||||
|
# define CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE 155
|
||||||
|
# define CMS_R_UNSUPPORTED_RECIPIENT_TYPE 154
|
||||||
|
# define CMS_R_UNSUPPORTED_TYPE 156
|
||||||
|
# define CMS_R_UNWRAP_ERROR 157
|
||||||
|
# define CMS_R_UNWRAP_FAILURE 180
|
||||||
|
# define CMS_R_VERIFICATION_FAILURE 158
|
||||||
|
# define CMS_R_WRAP_ERROR 159
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
59
src/openssl/comp.h
Normal file
59
src/openssl/comp.h
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_COMP_H
|
||||||
|
# define OPENSSL_COMP_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_COMP_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_COMP
|
||||||
|
# include <openssl/crypto.h>
|
||||||
|
# include <openssl/comperr.h>
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
COMP_CTX *COMP_CTX_new(COMP_METHOD *meth);
|
||||||
|
const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx);
|
||||||
|
int COMP_CTX_get_type(const COMP_CTX* comp);
|
||||||
|
int COMP_get_type(const COMP_METHOD *meth);
|
||||||
|
const char *COMP_get_name(const COMP_METHOD *meth);
|
||||||
|
void COMP_CTX_free(COMP_CTX *ctx);
|
||||||
|
|
||||||
|
int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen,
|
||||||
|
unsigned char *in, int ilen);
|
||||||
|
int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen,
|
||||||
|
unsigned char *in, int ilen);
|
||||||
|
|
||||||
|
COMP_METHOD *COMP_zlib(void);
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# define COMP_zlib_cleanup() while(0) continue
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# ifdef OPENSSL_BIO_H
|
||||||
|
# ifdef ZLIB
|
||||||
|
const BIO_METHOD *BIO_f_zlib(void);
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
31
src/openssl/comperr.h
Normal file
31
src/openssl/comperr.h
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_COMPERR_H
|
||||||
|
# define OPENSSL_COMPERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_COMP
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* COMP reason codes.
|
||||||
|
*/
|
||||||
|
# define COMP_R_ZLIB_DEFLATE_ERROR 99
|
||||||
|
# define COMP_R_ZLIB_INFLATE_ERROR 100
|
||||||
|
# define COMP_R_ZLIB_NOT_SUPPORTED 101
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
177
src/openssl/conf.h.in
Normal file
177
src/openssl/conf.h.in
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
/*
|
||||||
|
* {- join("\n * ", @autowarntext) -}
|
||||||
|
*
|
||||||
|
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
{-
|
||||||
|
use OpenSSL::stackhash qw(generate_stack_macros generate_lhash_macros);
|
||||||
|
-}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CONF_H
|
||||||
|
# define OPENSSL_CONF_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_CONF_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/bio.h>
|
||||||
|
# include <openssl/lhash.h>
|
||||||
|
# include <openssl/safestack.h>
|
||||||
|
# include <openssl/e_os2.h>
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# include <openssl/conferr.h>
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
# include <stdio.h>
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *section;
|
||||||
|
char *name;
|
||||||
|
char *value;
|
||||||
|
} CONF_VALUE;
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("CONF_VALUE")
|
||||||
|
.generate_lhash_macros("CONF_VALUE");
|
||||||
|
-}
|
||||||
|
|
||||||
|
struct conf_st;
|
||||||
|
struct conf_method_st;
|
||||||
|
typedef struct conf_method_st CONF_METHOD;
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# include <openssl/conftypes.h>
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Module definitions */
|
||||||
|
typedef struct conf_imodule_st CONF_IMODULE;
|
||||||
|
typedef struct conf_module_st CONF_MODULE;
|
||||||
|
|
||||||
|
STACK_OF(CONF_MODULE);
|
||||||
|
STACK_OF(CONF_IMODULE);
|
||||||
|
|
||||||
|
/* DSO module function typedefs */
|
||||||
|
typedef int conf_init_func (CONF_IMODULE *md, const CONF *cnf);
|
||||||
|
typedef void conf_finish_func (CONF_IMODULE *md);
|
||||||
|
|
||||||
|
# define CONF_MFLAGS_IGNORE_ERRORS 0x1
|
||||||
|
# define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2
|
||||||
|
# define CONF_MFLAGS_SILENT 0x4
|
||||||
|
# define CONF_MFLAGS_NO_DSO 0x8
|
||||||
|
# define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10
|
||||||
|
# define CONF_MFLAGS_DEFAULT_SECTION 0x20
|
||||||
|
|
||||||
|
int CONF_set_default_method(CONF_METHOD *meth);
|
||||||
|
void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash);
|
||||||
|
LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file,
|
||||||
|
long *eline);
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp,
|
||||||
|
long *eline);
|
||||||
|
# endif
|
||||||
|
LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp,
|
||||||
|
long *eline);
|
||||||
|
STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf,
|
||||||
|
const char *section);
|
||||||
|
char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group,
|
||||||
|
const char *name);
|
||||||
|
long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group,
|
||||||
|
const char *name);
|
||||||
|
void CONF_free(LHASH_OF(CONF_VALUE) *conf);
|
||||||
|
#ifndef OPENSSL_NO_STDIO
|
||||||
|
int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out);
|
||||||
|
#endif
|
||||||
|
int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out);
|
||||||
|
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
OSSL_DEPRECATEDIN_1_1_0 void OPENSSL_config(const char *config_name);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# define OPENSSL_no_config() \
|
||||||
|
OPENSSL_init_crypto(OPENSSL_INIT_NO_LOAD_CONFIG, NULL)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* New conf code. The semantics are different from the functions above. If
|
||||||
|
* that wasn't the case, the above functions would have been replaced
|
||||||
|
*/
|
||||||
|
|
||||||
|
CONF *NCONF_new_ex(OSSL_LIB_CTX *libctx, CONF_METHOD *meth);
|
||||||
|
OSSL_LIB_CTX *NCONF_get0_libctx(const CONF *conf);
|
||||||
|
CONF *NCONF_new(CONF_METHOD *meth);
|
||||||
|
CONF_METHOD *NCONF_default(void);
|
||||||
|
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 CONF_METHOD *NCONF_WIN32(void);
|
||||||
|
#endif
|
||||||
|
void NCONF_free(CONF *conf);
|
||||||
|
void NCONF_free_data(CONF *conf);
|
||||||
|
|
||||||
|
int NCONF_load(CONF *conf, const char *file, long *eline);
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
int NCONF_load_fp(CONF *conf, FILE *fp, long *eline);
|
||||||
|
# endif
|
||||||
|
int NCONF_load_bio(CONF *conf, BIO *bp, long *eline);
|
||||||
|
STACK_OF(OPENSSL_CSTRING) *NCONF_get_section_names(const CONF *conf);
|
||||||
|
STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf,
|
||||||
|
const char *section);
|
||||||
|
char *NCONF_get_string(const CONF *conf, const char *group, const char *name);
|
||||||
|
int NCONF_get_number_e(const CONF *conf, const char *group, const char *name,
|
||||||
|
long *result);
|
||||||
|
#ifndef OPENSSL_NO_STDIO
|
||||||
|
int NCONF_dump_fp(const CONF *conf, FILE *out);
|
||||||
|
#endif
|
||||||
|
int NCONF_dump_bio(const CONF *conf, BIO *out);
|
||||||
|
|
||||||
|
#define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r)
|
||||||
|
|
||||||
|
/* Module functions */
|
||||||
|
|
||||||
|
int CONF_modules_load(const CONF *cnf, const char *appname,
|
||||||
|
unsigned long flags);
|
||||||
|
int CONF_modules_load_file_ex(OSSL_LIB_CTX *libctx, const char *filename,
|
||||||
|
const char *appname, unsigned long flags);
|
||||||
|
int CONF_modules_load_file(const char *filename, const char *appname,
|
||||||
|
unsigned long flags);
|
||||||
|
void CONF_modules_unload(int all);
|
||||||
|
void CONF_modules_finish(void);
|
||||||
|
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# define CONF_modules_free() while(0) continue
|
||||||
|
#endif
|
||||||
|
int CONF_module_add(const char *name, conf_init_func *ifunc,
|
||||||
|
conf_finish_func *ffunc);
|
||||||
|
|
||||||
|
const char *CONF_imodule_get_name(const CONF_IMODULE *md);
|
||||||
|
const char *CONF_imodule_get_value(const CONF_IMODULE *md);
|
||||||
|
void *CONF_imodule_get_usr_data(const CONF_IMODULE *md);
|
||||||
|
void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data);
|
||||||
|
CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md);
|
||||||
|
unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md);
|
||||||
|
void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags);
|
||||||
|
void *CONF_module_get_usr_data(CONF_MODULE *pmod);
|
||||||
|
void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data);
|
||||||
|
|
||||||
|
char *CONF_get1_default_config_file(void);
|
||||||
|
|
||||||
|
int CONF_parse_list(const char *list, int sep, int nospc,
|
||||||
|
int (*list_cb) (const char *elem, int len, void *usr),
|
||||||
|
void *arg);
|
||||||
|
|
||||||
|
void OPENSSL_load_builtin_modules(void);
|
||||||
|
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
46
src/openssl/conf_api.h
Normal file
46
src/openssl/conf_api.h
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CONF_API_H
|
||||||
|
# define OPENSSL_CONF_API_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_CONF_API_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/lhash.h>
|
||||||
|
# include <openssl/conf.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Up until OpenSSL 0.9.5a, this was new_section */
|
||||||
|
CONF_VALUE *_CONF_new_section(CONF *conf, const char *section);
|
||||||
|
/* Up until OpenSSL 0.9.5a, this was get_section */
|
||||||
|
CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section);
|
||||||
|
/* Up until OpenSSL 0.9.5a, this was CONF_get_section */
|
||||||
|
STACK_OF(CONF_VALUE) *_CONF_get_section_values(const CONF *conf,
|
||||||
|
const char *section);
|
||||||
|
|
||||||
|
int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value);
|
||||||
|
char *_CONF_get_string(const CONF *conf, const char *section,
|
||||||
|
const char *name);
|
||||||
|
long _CONF_get_number(const CONF *conf, const char *section,
|
||||||
|
const char *name);
|
||||||
|
|
||||||
|
int _CONF_new_data(CONF *conf);
|
||||||
|
void _CONF_free_data(CONF *conf);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
51
src/openssl/conferr.h
Normal file
51
src/openssl/conferr.h
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CONFERR_H
|
||||||
|
# define OPENSSL_CONFERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CONF reason codes.
|
||||||
|
*/
|
||||||
|
# define CONF_R_ERROR_LOADING_DSO 110
|
||||||
|
# define CONF_R_INVALID_PRAGMA 122
|
||||||
|
# define CONF_R_LIST_CANNOT_BE_NULL 115
|
||||||
|
# define CONF_R_MANDATORY_BRACES_IN_VARIABLE_EXPANSION 123
|
||||||
|
# define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 100
|
||||||
|
# define CONF_R_MISSING_EQUAL_SIGN 101
|
||||||
|
# define CONF_R_MISSING_INIT_FUNCTION 112
|
||||||
|
# define CONF_R_MODULE_INITIALIZATION_ERROR 109
|
||||||
|
# define CONF_R_NO_CLOSE_BRACE 102
|
||||||
|
# define CONF_R_NO_CONF 105
|
||||||
|
# define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106
|
||||||
|
# define CONF_R_NO_SECTION 107
|
||||||
|
# define CONF_R_NO_SUCH_FILE 114
|
||||||
|
# define CONF_R_NO_VALUE 108
|
||||||
|
# define CONF_R_NUMBER_TOO_LARGE 121
|
||||||
|
# define CONF_R_OPENSSL_CONF_REFERENCES_MISSING_SECTION 124
|
||||||
|
# define CONF_R_RECURSIVE_DIRECTORY_INCLUDE 111
|
||||||
|
# define CONF_R_RELATIVE_PATH 125
|
||||||
|
# define CONF_R_SSL_COMMAND_SECTION_EMPTY 117
|
||||||
|
# define CONF_R_SSL_COMMAND_SECTION_NOT_FOUND 118
|
||||||
|
# define CONF_R_SSL_SECTION_EMPTY 119
|
||||||
|
# define CONF_R_SSL_SECTION_NOT_FOUND 120
|
||||||
|
# define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103
|
||||||
|
# define CONF_R_UNKNOWN_MODULE_NAME 113
|
||||||
|
# define CONF_R_VARIABLE_EXPANSION_TOO_LONG 116
|
||||||
|
# define CONF_R_VARIABLE_HAS_NO_VALUE 104
|
||||||
|
|
||||||
|
#endif
|
||||||
69
src/openssl/configuration.h.in
Normal file
69
src/openssl/configuration.h.in
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
* {- join("\n * ", @autowarntext) -}
|
||||||
|
*
|
||||||
|
* Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CONFIGURATION_H
|
||||||
|
# define OPENSSL_CONFIGURATION_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef OPENSSL_ALGORITHM_DEFINES
|
||||||
|
# error OPENSSL_ALGORITHM_DEFINES no longer supported
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* OpenSSL was configured with the following options:
|
||||||
|
*/
|
||||||
|
|
||||||
|
{- if (@{$config{openssl_sys_defines}}) {
|
||||||
|
foreach (@{$config{openssl_sys_defines}}) {
|
||||||
|
$OUT .= "# ifndef $_\n";
|
||||||
|
$OUT .= "# define $_ 1\n";
|
||||||
|
$OUT .= "# endif\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach (@{$config{openssl_api_defines}}) {
|
||||||
|
(my $macro, my $value) = $_ =~ /^(.*?)=(.*?)$/;
|
||||||
|
$OUT .= "# define $macro $value\n";
|
||||||
|
}
|
||||||
|
if (@{$config{openssl_feature_defines}}) {
|
||||||
|
foreach (@{$config{openssl_feature_defines}}) {
|
||||||
|
$OUT .= "# ifndef $_\n";
|
||||||
|
$OUT .= "# define $_\n";
|
||||||
|
$OUT .= "# endif\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"";
|
||||||
|
-}
|
||||||
|
|
||||||
|
/* Generate 80386 code? */
|
||||||
|
{- $config{processor} eq "386" ? "# define" : "# undef" -} I386_ONLY
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following are cipher-specific, but are part of the public API.
|
||||||
|
*/
|
||||||
|
# if !defined(OPENSSL_SYS_UEFI)
|
||||||
|
{- $config{bn_ll} ? "# define" : "# undef" -} BN_LLONG
|
||||||
|
/* Only one for the following should be defined */
|
||||||
|
{- $config{b64l} ? "# define" : "# undef" -} SIXTY_FOUR_BIT_LONG
|
||||||
|
{- $config{b64} ? "# define" : "# undef" -} SIXTY_FOUR_BIT
|
||||||
|
{- $config{b32} ? "# define" : "# undef" -} THIRTY_TWO_BIT
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define RC4_INT {- $config{rc4_int} -}
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif /* OPENSSL_CONFIGURATION_H */
|
||||||
44
src/openssl/conftypes.h
Normal file
44
src/openssl/conftypes.h
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CONFTYPES_H
|
||||||
|
# define OPENSSL_CONFTYPES_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CONF_H
|
||||||
|
# include <openssl/conf.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The contents of this file are deprecated and will be made opaque
|
||||||
|
*/
|
||||||
|
struct conf_method_st {
|
||||||
|
const char *name;
|
||||||
|
CONF *(*create) (CONF_METHOD *meth);
|
||||||
|
int (*init) (CONF *conf);
|
||||||
|
int (*destroy) (CONF *conf);
|
||||||
|
int (*destroy_data) (CONF *conf);
|
||||||
|
int (*load_bio) (CONF *conf, BIO *bp, long *eline);
|
||||||
|
int (*dump) (const CONF *conf, BIO *bp);
|
||||||
|
int (*is_number) (const CONF *conf, char c);
|
||||||
|
int (*to_int) (const CONF *conf, char c);
|
||||||
|
int (*load) (CONF *conf, const char *name, long *eline);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct conf_st {
|
||||||
|
CONF_METHOD *meth;
|
||||||
|
void *meth_data;
|
||||||
|
LHASH_OF(CONF_VALUE) *data;
|
||||||
|
int flag_dollarid;
|
||||||
|
int flag_abspath;
|
||||||
|
char *includedir;
|
||||||
|
OSSL_LIB_CTX *libctx;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
233
src/openssl/core.h
Normal file
233
src/openssl/core.h
Normal file
@@ -0,0 +1,233 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CORE_H
|
||||||
|
# define OPENSSL_CORE_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <stddef.h>
|
||||||
|
# include <openssl/types.h>
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Base types
|
||||||
|
* ----------
|
||||||
|
*
|
||||||
|
* These are the types that the OpenSSL core and providers have in common
|
||||||
|
* to communicate data between them.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Opaque handles to be used with core upcall functions from providers */
|
||||||
|
typedef struct ossl_core_handle_st OSSL_CORE_HANDLE;
|
||||||
|
typedef struct openssl_core_ctx_st OPENSSL_CORE_CTX;
|
||||||
|
typedef struct ossl_core_bio_st OSSL_CORE_BIO;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Dispatch table element. function_id numbers and the functions are defined
|
||||||
|
* in core_dispatch.h, see macros with 'OSSL_CORE_MAKE_FUNC' in their names.
|
||||||
|
*
|
||||||
|
* An array of these is always terminated by function_id == 0
|
||||||
|
*/
|
||||||
|
struct ossl_dispatch_st {
|
||||||
|
int function_id;
|
||||||
|
void (*function)(void);
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Other items, essentially an int<->pointer map element.
|
||||||
|
*
|
||||||
|
* We make this type distinct from OSSL_DISPATCH to ensure that dispatch
|
||||||
|
* tables remain tables with function pointers only.
|
||||||
|
*
|
||||||
|
* This is used whenever we need to pass things like a table of error reason
|
||||||
|
* codes <-> reason string maps, ...
|
||||||
|
*
|
||||||
|
* Usage determines which field works as key if any, rather than field order.
|
||||||
|
*
|
||||||
|
* An array of these is always terminated by id == 0 && ptr == NULL
|
||||||
|
*/
|
||||||
|
struct ossl_item_st {
|
||||||
|
unsigned int id;
|
||||||
|
void *ptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Type to tie together algorithm names, property definition string and
|
||||||
|
* the algorithm implementation in the form of a dispatch table.
|
||||||
|
*
|
||||||
|
* An array of these is always terminated by algorithm_names == NULL
|
||||||
|
*/
|
||||||
|
struct ossl_algorithm_st {
|
||||||
|
const char *algorithm_names; /* key */
|
||||||
|
const char *property_definition; /* key */
|
||||||
|
const OSSL_DISPATCH *implementation;
|
||||||
|
const char *algorithm_description;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Type to pass object data in a uniform way, without exposing the object
|
||||||
|
* structure.
|
||||||
|
*
|
||||||
|
* An array of these is always terminated by key == NULL
|
||||||
|
*/
|
||||||
|
struct ossl_param_st {
|
||||||
|
const char *key; /* the name of the parameter */
|
||||||
|
unsigned int data_type; /* declare what kind of content is in buffer */
|
||||||
|
void *data; /* value being passed in or out */
|
||||||
|
size_t data_size; /* data size */
|
||||||
|
size_t return_size; /* returned content size */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Currently supported OSSL_PARAM data types */
|
||||||
|
/*
|
||||||
|
* OSSL_PARAM_INTEGER and OSSL_PARAM_UNSIGNED_INTEGER
|
||||||
|
* are arbitrary length and therefore require an arbitrarily sized buffer,
|
||||||
|
* since they may be used to pass numbers larger than what is natively
|
||||||
|
* available.
|
||||||
|
*
|
||||||
|
* The number must be buffered in native form, i.e. MSB first on B_ENDIAN
|
||||||
|
* systems and LSB first on L_ENDIAN systems. This means that arbitrary
|
||||||
|
* native integers can be stored in the buffer, just make sure that the
|
||||||
|
* buffer size is correct and the buffer itself is properly aligned (for
|
||||||
|
* example by having the buffer field point at a C integer).
|
||||||
|
*/
|
||||||
|
# define OSSL_PARAM_INTEGER 1
|
||||||
|
# define OSSL_PARAM_UNSIGNED_INTEGER 2
|
||||||
|
/*-
|
||||||
|
* OSSL_PARAM_REAL
|
||||||
|
* is a C binary floating point values in native form and alignment.
|
||||||
|
*/
|
||||||
|
# define OSSL_PARAM_REAL 3
|
||||||
|
/*-
|
||||||
|
* OSSL_PARAM_UTF8_STRING
|
||||||
|
* is a printable string. It is expected to be printed as it is.
|
||||||
|
*/
|
||||||
|
# define OSSL_PARAM_UTF8_STRING 4
|
||||||
|
/*-
|
||||||
|
* OSSL_PARAM_OCTET_STRING
|
||||||
|
* is a string of bytes with no further specification. It is expected to be
|
||||||
|
* printed as a hexdump.
|
||||||
|
*/
|
||||||
|
# define OSSL_PARAM_OCTET_STRING 5
|
||||||
|
/*-
|
||||||
|
* OSSL_PARAM_UTF8_PTR
|
||||||
|
* is a pointer to a printable string. It is expected to be printed as it is.
|
||||||
|
*
|
||||||
|
* The difference between this and OSSL_PARAM_UTF8_STRING is that only pointers
|
||||||
|
* are manipulated for this type.
|
||||||
|
*
|
||||||
|
* This is more relevant for parameter requests, where the responding
|
||||||
|
* function doesn't need to copy the data to the provided buffer, but
|
||||||
|
* sets the provided buffer to point at the actual data instead.
|
||||||
|
*
|
||||||
|
* WARNING! Using these is FRAGILE, as it assumes that the actual
|
||||||
|
* data and its location are constant.
|
||||||
|
*
|
||||||
|
* EXTRA WARNING! If you are not completely sure you most likely want
|
||||||
|
* to use the OSSL_PARAM_UTF8_STRING type.
|
||||||
|
*/
|
||||||
|
# define OSSL_PARAM_UTF8_PTR 6
|
||||||
|
/*-
|
||||||
|
* OSSL_PARAM_OCTET_PTR
|
||||||
|
* is a pointer to a string of bytes with no further specification. It is
|
||||||
|
* expected to be printed as a hexdump.
|
||||||
|
*
|
||||||
|
* The difference between this and OSSL_PARAM_OCTET_STRING is that only pointers
|
||||||
|
* are manipulated for this type.
|
||||||
|
*
|
||||||
|
* This is more relevant for parameter requests, where the responding
|
||||||
|
* function doesn't need to copy the data to the provided buffer, but
|
||||||
|
* sets the provided buffer to point at the actual data instead.
|
||||||
|
*
|
||||||
|
* WARNING! Using these is FRAGILE, as it assumes that the actual
|
||||||
|
* data and its location are constant.
|
||||||
|
*
|
||||||
|
* EXTRA WARNING! If you are not completely sure you most likely want
|
||||||
|
* to use the OSSL_PARAM_OCTET_STRING type.
|
||||||
|
*/
|
||||||
|
# define OSSL_PARAM_OCTET_PTR 7
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Typedef for the thread stop handling callback. Used both internally and by
|
||||||
|
* providers.
|
||||||
|
*
|
||||||
|
* Providers may register for notifications about threads stopping by
|
||||||
|
* registering a callback to hear about such events. Providers register the
|
||||||
|
* callback using the OSSL_FUNC_CORE_THREAD_START function in the |in| dispatch
|
||||||
|
* table passed to OSSL_provider_init(). The arg passed back to a provider will
|
||||||
|
* be the provider side context object.
|
||||||
|
*/
|
||||||
|
typedef void (*OSSL_thread_stop_handler_fn)(void *arg);
|
||||||
|
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Provider entry point
|
||||||
|
* --------------------
|
||||||
|
*
|
||||||
|
* This function is expected to be present in any dynamically loadable
|
||||||
|
* provider module. By definition, if this function doesn't exist in a
|
||||||
|
* module, that module is not an OpenSSL provider module.
|
||||||
|
*/
|
||||||
|
/*-
|
||||||
|
* |handle| pointer to opaque type OSSL_CORE_HANDLE. This can be used
|
||||||
|
* together with some functions passed via |in| to query data.
|
||||||
|
* |in| is the array of functions that the Core passes to the provider.
|
||||||
|
* |out| will be the array of base functions that the provider passes
|
||||||
|
* back to the Core.
|
||||||
|
* |provctx| a provider side context object, optionally created if the
|
||||||
|
* provider needs it. This value is passed to other provider
|
||||||
|
* functions, notably other context constructors.
|
||||||
|
*/
|
||||||
|
typedef int (OSSL_provider_init_fn)(const OSSL_CORE_HANDLE *handle,
|
||||||
|
const OSSL_DISPATCH *in,
|
||||||
|
const OSSL_DISPATCH **out,
|
||||||
|
void **provctx);
|
||||||
|
# ifdef __VMS
|
||||||
|
# pragma names save
|
||||||
|
# pragma names uppercase,truncated
|
||||||
|
# endif
|
||||||
|
OPENSSL_EXPORT OSSL_provider_init_fn OSSL_provider_init;
|
||||||
|
# ifdef __VMS
|
||||||
|
# pragma names restore
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Generic callback function signature.
|
||||||
|
*
|
||||||
|
* The expectation is that any provider function that wants to offer
|
||||||
|
* a callback / hook can do so by taking an argument with this type,
|
||||||
|
* as well as a pointer to caller-specific data. When calling the
|
||||||
|
* callback, the provider function can populate an OSSL_PARAM array
|
||||||
|
* with data of its choice and pass that in the callback call, along
|
||||||
|
* with the caller data argument.
|
||||||
|
*
|
||||||
|
* libcrypto may use the OSSL_PARAM array to create arguments for an
|
||||||
|
* application callback it knows about.
|
||||||
|
*/
|
||||||
|
typedef int (OSSL_CALLBACK)(const OSSL_PARAM params[], void *arg);
|
||||||
|
typedef int (OSSL_INOUT_CALLBACK)(const OSSL_PARAM in_params[],
|
||||||
|
OSSL_PARAM out_params[], void *arg);
|
||||||
|
/*
|
||||||
|
* Passphrase callback function signature
|
||||||
|
*
|
||||||
|
* This is similar to the generic callback function above, but adds a
|
||||||
|
* result parameter.
|
||||||
|
*/
|
||||||
|
typedef int (OSSL_PASSPHRASE_CALLBACK)(char *pass, size_t pass_size,
|
||||||
|
size_t *pass_len,
|
||||||
|
const OSSL_PARAM params[], void *arg);
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
943
src/openssl/core_dispatch.h
Normal file
943
src/openssl/core_dispatch.h
Normal file
@@ -0,0 +1,943 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CORE_NUMBERS_H
|
||||||
|
# define OPENSSL_CORE_NUMBERS_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <stdarg.h>
|
||||||
|
# include <openssl/core.h>
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Identities
|
||||||
|
* ----------
|
||||||
|
*
|
||||||
|
* All series start with 1, to allow 0 to be an array terminator.
|
||||||
|
* For any FUNC identity, we also provide a function signature typedef
|
||||||
|
* and a static inline function to extract a function pointer from a
|
||||||
|
* OSSL_DISPATCH element in a type safe manner.
|
||||||
|
*
|
||||||
|
* Names:
|
||||||
|
* for any function base name 'foo' (uppercase form 'FOO'), we will have
|
||||||
|
* the following:
|
||||||
|
* - a macro for the identity with the name OSSL_FUNC_'FOO' or derivatives
|
||||||
|
* thereof (to be specified further down)
|
||||||
|
* - a function signature typedef with the name OSSL_FUNC_'foo'_fn
|
||||||
|
* - a function pointer extractor function with the name OSSL_FUNC_'foo'
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Helper macro to create the function signature typedef and the extractor
|
||||||
|
* |type| is the return-type of the function, |name| is the name of the
|
||||||
|
* function to fetch, and |args| is a parenthesized list of parameters
|
||||||
|
* for the function (that is, it is |name|'s function signature).
|
||||||
|
* Note: This is considered a "reserved" internal macro. Applications should
|
||||||
|
* not use this or assume its existence.
|
||||||
|
*/
|
||||||
|
#define OSSL_CORE_MAKE_FUNC(type,name,args) \
|
||||||
|
typedef type (OSSL_FUNC_##name##_fn)args; \
|
||||||
|
static ossl_unused ossl_inline \
|
||||||
|
OSSL_FUNC_##name##_fn *OSSL_FUNC_##name(const OSSL_DISPATCH *opf) \
|
||||||
|
{ \
|
||||||
|
return (OSSL_FUNC_##name##_fn *)opf->function; \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Core function identities, for the two OSSL_DISPATCH tables being passed
|
||||||
|
* in the OSSL_provider_init call.
|
||||||
|
*
|
||||||
|
* 0 serves as a marker for the end of the OSSL_DISPATCH array, and must
|
||||||
|
* therefore NEVER be used as a function identity.
|
||||||
|
*/
|
||||||
|
/* Functions provided by the Core to the provider, reserved numbers 1-1023 */
|
||||||
|
# define OSSL_FUNC_CORE_GETTABLE_PARAMS 1
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,
|
||||||
|
core_gettable_params,(const OSSL_CORE_HANDLE *prov))
|
||||||
|
# define OSSL_FUNC_CORE_GET_PARAMS 2
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,core_get_params,(const OSSL_CORE_HANDLE *prov,
|
||||||
|
OSSL_PARAM params[]))
|
||||||
|
# define OSSL_FUNC_CORE_THREAD_START 3
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,core_thread_start,(const OSSL_CORE_HANDLE *prov,
|
||||||
|
OSSL_thread_stop_handler_fn handfn,
|
||||||
|
void *arg))
|
||||||
|
# define OSSL_FUNC_CORE_GET_LIBCTX 4
|
||||||
|
OSSL_CORE_MAKE_FUNC(OPENSSL_CORE_CTX *,core_get_libctx,
|
||||||
|
(const OSSL_CORE_HANDLE *prov))
|
||||||
|
# define OSSL_FUNC_CORE_NEW_ERROR 5
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,core_new_error,(const OSSL_CORE_HANDLE *prov))
|
||||||
|
# define OSSL_FUNC_CORE_SET_ERROR_DEBUG 6
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,core_set_error_debug,
|
||||||
|
(const OSSL_CORE_HANDLE *prov,
|
||||||
|
const char *file, int line, const char *func))
|
||||||
|
# define OSSL_FUNC_CORE_VSET_ERROR 7
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,core_vset_error,
|
||||||
|
(const OSSL_CORE_HANDLE *prov,
|
||||||
|
uint32_t reason, const char *fmt, va_list args))
|
||||||
|
# define OSSL_FUNC_CORE_SET_ERROR_MARK 8
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, core_set_error_mark, (const OSSL_CORE_HANDLE *prov))
|
||||||
|
# define OSSL_FUNC_CORE_CLEAR_LAST_ERROR_MARK 9
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, core_clear_last_error_mark,
|
||||||
|
(const OSSL_CORE_HANDLE *prov))
|
||||||
|
# define OSSL_FUNC_CORE_POP_ERROR_TO_MARK 10
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, core_pop_error_to_mark, (const OSSL_CORE_HANDLE *prov))
|
||||||
|
|
||||||
|
|
||||||
|
/* Functions to access the OBJ database */
|
||||||
|
|
||||||
|
#define OSSL_FUNC_CORE_OBJ_ADD_SIGID 11
|
||||||
|
#define OSSL_FUNC_CORE_OBJ_CREATE 12
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, core_obj_add_sigid,
|
||||||
|
(const OSSL_CORE_HANDLE *prov, const char *sign_name,
|
||||||
|
const char *digest_name, const char *pkey_name))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, core_obj_create,
|
||||||
|
(const OSSL_CORE_HANDLE *prov, const char *oid,
|
||||||
|
const char *sn, const char *ln))
|
||||||
|
|
||||||
|
/* Memory allocation, freeing, clearing. */
|
||||||
|
#define OSSL_FUNC_CRYPTO_MALLOC 20
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *,
|
||||||
|
CRYPTO_malloc, (size_t num, const char *file, int line))
|
||||||
|
#define OSSL_FUNC_CRYPTO_ZALLOC 21
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *,
|
||||||
|
CRYPTO_zalloc, (size_t num, const char *file, int line))
|
||||||
|
#define OSSL_FUNC_CRYPTO_FREE 22
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,
|
||||||
|
CRYPTO_free, (void *ptr, const char *file, int line))
|
||||||
|
#define OSSL_FUNC_CRYPTO_CLEAR_FREE 23
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,
|
||||||
|
CRYPTO_clear_free, (void *ptr, size_t num, const char *file, int line))
|
||||||
|
#define OSSL_FUNC_CRYPTO_REALLOC 24
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *,
|
||||||
|
CRYPTO_realloc, (void *addr, size_t num, const char *file, int line))
|
||||||
|
#define OSSL_FUNC_CRYPTO_CLEAR_REALLOC 25
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *,
|
||||||
|
CRYPTO_clear_realloc, (void *addr, size_t old_num, size_t num,
|
||||||
|
const char *file, int line))
|
||||||
|
#define OSSL_FUNC_CRYPTO_SECURE_MALLOC 26
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *,
|
||||||
|
CRYPTO_secure_malloc, (size_t num, const char *file, int line))
|
||||||
|
#define OSSL_FUNC_CRYPTO_SECURE_ZALLOC 27
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *,
|
||||||
|
CRYPTO_secure_zalloc, (size_t num, const char *file, int line))
|
||||||
|
#define OSSL_FUNC_CRYPTO_SECURE_FREE 28
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,
|
||||||
|
CRYPTO_secure_free, (void *ptr, const char *file, int line))
|
||||||
|
#define OSSL_FUNC_CRYPTO_SECURE_CLEAR_FREE 29
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,
|
||||||
|
CRYPTO_secure_clear_free, (void *ptr, size_t num, const char *file,
|
||||||
|
int line))
|
||||||
|
#define OSSL_FUNC_CRYPTO_SECURE_ALLOCATED 30
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,
|
||||||
|
CRYPTO_secure_allocated, (const void *ptr))
|
||||||
|
#define OSSL_FUNC_OPENSSL_CLEANSE 31
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,
|
||||||
|
OPENSSL_cleanse, (void *ptr, size_t len))
|
||||||
|
|
||||||
|
/* Bio functions provided by the core */
|
||||||
|
#define OSSL_FUNC_BIO_NEW_FILE 40
|
||||||
|
#define OSSL_FUNC_BIO_NEW_MEMBUF 41
|
||||||
|
#define OSSL_FUNC_BIO_READ_EX 42
|
||||||
|
#define OSSL_FUNC_BIO_WRITE_EX 43
|
||||||
|
#define OSSL_FUNC_BIO_UP_REF 44
|
||||||
|
#define OSSL_FUNC_BIO_FREE 45
|
||||||
|
#define OSSL_FUNC_BIO_VPRINTF 46
|
||||||
|
#define OSSL_FUNC_BIO_VSNPRINTF 47
|
||||||
|
#define OSSL_FUNC_BIO_PUTS 48
|
||||||
|
#define OSSL_FUNC_BIO_GETS 49
|
||||||
|
#define OSSL_FUNC_BIO_CTRL 50
|
||||||
|
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(OSSL_CORE_BIO *, BIO_new_file, (const char *filename,
|
||||||
|
const char *mode))
|
||||||
|
OSSL_CORE_MAKE_FUNC(OSSL_CORE_BIO *, BIO_new_membuf, (const void *buf, int len))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, BIO_read_ex, (OSSL_CORE_BIO *bio, void *data,
|
||||||
|
size_t data_len, size_t *bytes_read))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, BIO_write_ex, (OSSL_CORE_BIO *bio, const void *data,
|
||||||
|
size_t data_len, size_t *written))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, BIO_gets, (OSSL_CORE_BIO *bio, char *buf, int size))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, BIO_puts, (OSSL_CORE_BIO *bio, const char *str))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, BIO_up_ref, (OSSL_CORE_BIO *bio))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, BIO_free, (OSSL_CORE_BIO *bio))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, BIO_vprintf, (OSSL_CORE_BIO *bio, const char *format,
|
||||||
|
va_list args))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, BIO_vsnprintf,
|
||||||
|
(char *buf, size_t n, const char *fmt, va_list args))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, BIO_ctrl, (OSSL_CORE_BIO *bio,
|
||||||
|
int cmd, long num, void *ptr))
|
||||||
|
|
||||||
|
#define OSSL_FUNC_SELF_TEST_CB 100
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, self_test_cb, (OPENSSL_CORE_CTX *ctx, OSSL_CALLBACK **cb,
|
||||||
|
void **cbarg))
|
||||||
|
|
||||||
|
/* Functions to get seed material from the operating system */
|
||||||
|
#define OSSL_FUNC_GET_ENTROPY 101
|
||||||
|
#define OSSL_FUNC_CLEANUP_ENTROPY 102
|
||||||
|
#define OSSL_FUNC_GET_NONCE 103
|
||||||
|
#define OSSL_FUNC_CLEANUP_NONCE 104
|
||||||
|
OSSL_CORE_MAKE_FUNC(size_t, get_entropy, (const OSSL_CORE_HANDLE *handle,
|
||||||
|
unsigned char **pout, int entropy,
|
||||||
|
size_t min_len, size_t max_len))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, cleanup_entropy, (const OSSL_CORE_HANDLE *handle,
|
||||||
|
unsigned char *buf, size_t len))
|
||||||
|
OSSL_CORE_MAKE_FUNC(size_t, get_nonce, (const OSSL_CORE_HANDLE *handle,
|
||||||
|
unsigned char **pout, size_t min_len,
|
||||||
|
size_t max_len, const void *salt,
|
||||||
|
size_t salt_len))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, cleanup_nonce, (const OSSL_CORE_HANDLE *handle,
|
||||||
|
unsigned char *buf, size_t len))
|
||||||
|
|
||||||
|
/* Functions to access the core's providers */
|
||||||
|
#define OSSL_FUNC_PROVIDER_REGISTER_CHILD_CB 105
|
||||||
|
#define OSSL_FUNC_PROVIDER_DEREGISTER_CHILD_CB 106
|
||||||
|
#define OSSL_FUNC_PROVIDER_NAME 107
|
||||||
|
#define OSSL_FUNC_PROVIDER_GET0_PROVIDER_CTX 108
|
||||||
|
#define OSSL_FUNC_PROVIDER_GET0_DISPATCH 109
|
||||||
|
#define OSSL_FUNC_PROVIDER_UP_REF 110
|
||||||
|
#define OSSL_FUNC_PROVIDER_FREE 111
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, provider_register_child_cb,
|
||||||
|
(const OSSL_CORE_HANDLE *handle,
|
||||||
|
int (*create_cb)(const OSSL_CORE_HANDLE *provider, void *cbdata),
|
||||||
|
int (*remove_cb)(const OSSL_CORE_HANDLE *provider, void *cbdata),
|
||||||
|
int (*global_props_cb)(const char *props, void *cbdata),
|
||||||
|
void *cbdata))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, provider_deregister_child_cb,
|
||||||
|
(const OSSL_CORE_HANDLE *handle))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const char *, provider_name,
|
||||||
|
(const OSSL_CORE_HANDLE *prov))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, provider_get0_provider_ctx,
|
||||||
|
(const OSSL_CORE_HANDLE *prov))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_DISPATCH *, provider_get0_dispatch,
|
||||||
|
(const OSSL_CORE_HANDLE *prov))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, provider_up_ref,
|
||||||
|
(const OSSL_CORE_HANDLE *prov, int activate))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, provider_free,
|
||||||
|
(const OSSL_CORE_HANDLE *prov, int deactivate))
|
||||||
|
|
||||||
|
/* Functions provided by the provider to the Core, reserved numbers 1024-1535 */
|
||||||
|
# define OSSL_FUNC_PROVIDER_TEARDOWN 1024
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,provider_teardown,(void *provctx))
|
||||||
|
# define OSSL_FUNC_PROVIDER_GETTABLE_PARAMS 1025
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,
|
||||||
|
provider_gettable_params,(void *provctx))
|
||||||
|
# define OSSL_FUNC_PROVIDER_GET_PARAMS 1026
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,provider_get_params,(void *provctx,
|
||||||
|
OSSL_PARAM params[]))
|
||||||
|
# define OSSL_FUNC_PROVIDER_QUERY_OPERATION 1027
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_ALGORITHM *,provider_query_operation,
|
||||||
|
(void *provctx, int operation_id, int *no_store))
|
||||||
|
# define OSSL_FUNC_PROVIDER_UNQUERY_OPERATION 1028
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, provider_unquery_operation,
|
||||||
|
(void *provctx, int operation_id, const OSSL_ALGORITHM *))
|
||||||
|
# define OSSL_FUNC_PROVIDER_GET_REASON_STRINGS 1029
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_ITEM *,provider_get_reason_strings,
|
||||||
|
(void *provctx))
|
||||||
|
# define OSSL_FUNC_PROVIDER_GET_CAPABILITIES 1030
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, provider_get_capabilities, (void *provctx,
|
||||||
|
const char *capability, OSSL_CALLBACK *cb, void *arg))
|
||||||
|
# define OSSL_FUNC_PROVIDER_SELF_TEST 1031
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, provider_self_test, (void *provctx))
|
||||||
|
|
||||||
|
/* Operations */
|
||||||
|
|
||||||
|
# define OSSL_OP_DIGEST 1
|
||||||
|
# define OSSL_OP_CIPHER 2 /* Symmetric Ciphers */
|
||||||
|
# define OSSL_OP_MAC 3
|
||||||
|
# define OSSL_OP_KDF 4
|
||||||
|
# define OSSL_OP_RAND 5
|
||||||
|
# define OSSL_OP_KEYMGMT 10
|
||||||
|
# define OSSL_OP_KEYEXCH 11
|
||||||
|
# define OSSL_OP_SIGNATURE 12
|
||||||
|
# define OSSL_OP_ASYM_CIPHER 13
|
||||||
|
# define OSSL_OP_KEM 14
|
||||||
|
/* New section for non-EVP operations */
|
||||||
|
# define OSSL_OP_ENCODER 20
|
||||||
|
# define OSSL_OP_DECODER 21
|
||||||
|
# define OSSL_OP_STORE 22
|
||||||
|
/* Highest known operation number */
|
||||||
|
# define OSSL_OP__HIGHEST 22
|
||||||
|
|
||||||
|
/* Digests */
|
||||||
|
|
||||||
|
# define OSSL_FUNC_DIGEST_NEWCTX 1
|
||||||
|
# define OSSL_FUNC_DIGEST_INIT 2
|
||||||
|
# define OSSL_FUNC_DIGEST_UPDATE 3
|
||||||
|
# define OSSL_FUNC_DIGEST_FINAL 4
|
||||||
|
# define OSSL_FUNC_DIGEST_DIGEST 5
|
||||||
|
# define OSSL_FUNC_DIGEST_FREECTX 6
|
||||||
|
# define OSSL_FUNC_DIGEST_DUPCTX 7
|
||||||
|
# define OSSL_FUNC_DIGEST_GET_PARAMS 8
|
||||||
|
# define OSSL_FUNC_DIGEST_SET_CTX_PARAMS 9
|
||||||
|
# define OSSL_FUNC_DIGEST_GET_CTX_PARAMS 10
|
||||||
|
# define OSSL_FUNC_DIGEST_GETTABLE_PARAMS 11
|
||||||
|
# define OSSL_FUNC_DIGEST_SETTABLE_CTX_PARAMS 12
|
||||||
|
# define OSSL_FUNC_DIGEST_GETTABLE_CTX_PARAMS 13
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, digest_newctx, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, digest_init, (void *dctx, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, digest_update,
|
||||||
|
(void *dctx, const unsigned char *in, size_t inl))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, digest_final,
|
||||||
|
(void *dctx,
|
||||||
|
unsigned char *out, size_t *outl, size_t outsz))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, digest_digest,
|
||||||
|
(void *provctx, const unsigned char *in, size_t inl,
|
||||||
|
unsigned char *out, size_t *outl, size_t outsz))
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, digest_freectx, (void *dctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, digest_dupctx, (void *dctx))
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, digest_get_params, (OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, digest_set_ctx_params,
|
||||||
|
(void *vctx, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, digest_get_ctx_params,
|
||||||
|
(void *vctx, OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_gettable_params,
|
||||||
|
(void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_settable_ctx_params,
|
||||||
|
(void *dctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_gettable_ctx_params,
|
||||||
|
(void *dctx, void *provctx))
|
||||||
|
|
||||||
|
/* Symmetric Ciphers */
|
||||||
|
|
||||||
|
# define OSSL_FUNC_CIPHER_NEWCTX 1
|
||||||
|
# define OSSL_FUNC_CIPHER_ENCRYPT_INIT 2
|
||||||
|
# define OSSL_FUNC_CIPHER_DECRYPT_INIT 3
|
||||||
|
# define OSSL_FUNC_CIPHER_UPDATE 4
|
||||||
|
# define OSSL_FUNC_CIPHER_FINAL 5
|
||||||
|
# define OSSL_FUNC_CIPHER_CIPHER 6
|
||||||
|
# define OSSL_FUNC_CIPHER_FREECTX 7
|
||||||
|
# define OSSL_FUNC_CIPHER_DUPCTX 8
|
||||||
|
# define OSSL_FUNC_CIPHER_GET_PARAMS 9
|
||||||
|
# define OSSL_FUNC_CIPHER_GET_CTX_PARAMS 10
|
||||||
|
# define OSSL_FUNC_CIPHER_SET_CTX_PARAMS 11
|
||||||
|
# define OSSL_FUNC_CIPHER_GETTABLE_PARAMS 12
|
||||||
|
# define OSSL_FUNC_CIPHER_GETTABLE_CTX_PARAMS 13
|
||||||
|
# define OSSL_FUNC_CIPHER_SETTABLE_CTX_PARAMS 14
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, cipher_newctx, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, cipher_encrypt_init, (void *cctx,
|
||||||
|
const unsigned char *key,
|
||||||
|
size_t keylen,
|
||||||
|
const unsigned char *iv,
|
||||||
|
size_t ivlen,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, cipher_decrypt_init, (void *cctx,
|
||||||
|
const unsigned char *key,
|
||||||
|
size_t keylen,
|
||||||
|
const unsigned char *iv,
|
||||||
|
size_t ivlen,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, cipher_update,
|
||||||
|
(void *cctx,
|
||||||
|
unsigned char *out, size_t *outl, size_t outsize,
|
||||||
|
const unsigned char *in, size_t inl))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, cipher_final,
|
||||||
|
(void *cctx,
|
||||||
|
unsigned char *out, size_t *outl, size_t outsize))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, cipher_cipher,
|
||||||
|
(void *cctx,
|
||||||
|
unsigned char *out, size_t *outl, size_t outsize,
|
||||||
|
const unsigned char *in, size_t inl))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, cipher_freectx, (void *cctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, cipher_dupctx, (void *cctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, cipher_get_params, (OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, cipher_get_ctx_params, (void *cctx,
|
||||||
|
OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, cipher_set_ctx_params, (void *cctx,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_gettable_params,
|
||||||
|
(void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_settable_ctx_params,
|
||||||
|
(void *cctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_gettable_ctx_params,
|
||||||
|
(void *cctx, void *provctx))
|
||||||
|
|
||||||
|
/* MACs */
|
||||||
|
|
||||||
|
# define OSSL_FUNC_MAC_NEWCTX 1
|
||||||
|
# define OSSL_FUNC_MAC_DUPCTX 2
|
||||||
|
# define OSSL_FUNC_MAC_FREECTX 3
|
||||||
|
# define OSSL_FUNC_MAC_INIT 4
|
||||||
|
# define OSSL_FUNC_MAC_UPDATE 5
|
||||||
|
# define OSSL_FUNC_MAC_FINAL 6
|
||||||
|
# define OSSL_FUNC_MAC_GET_PARAMS 7
|
||||||
|
# define OSSL_FUNC_MAC_GET_CTX_PARAMS 8
|
||||||
|
# define OSSL_FUNC_MAC_SET_CTX_PARAMS 9
|
||||||
|
# define OSSL_FUNC_MAC_GETTABLE_PARAMS 10
|
||||||
|
# define OSSL_FUNC_MAC_GETTABLE_CTX_PARAMS 11
|
||||||
|
# define OSSL_FUNC_MAC_SETTABLE_CTX_PARAMS 12
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, mac_newctx, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, mac_dupctx, (void *src))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, mac_freectx, (void *mctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, mac_init, (void *mctx, const unsigned char *key,
|
||||||
|
size_t keylen, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, mac_update,
|
||||||
|
(void *mctx, const unsigned char *in, size_t inl))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, mac_final,
|
||||||
|
(void *mctx,
|
||||||
|
unsigned char *out, size_t *outl, size_t outsize))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_gettable_params, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_gettable_ctx_params,
|
||||||
|
(void *mctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_settable_ctx_params,
|
||||||
|
(void *mctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, mac_get_params, (OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, mac_get_ctx_params,
|
||||||
|
(void *mctx, OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, mac_set_ctx_params,
|
||||||
|
(void *mctx, const OSSL_PARAM params[]))
|
||||||
|
|
||||||
|
/* KDFs and PRFs */
|
||||||
|
|
||||||
|
# define OSSL_FUNC_KDF_NEWCTX 1
|
||||||
|
# define OSSL_FUNC_KDF_DUPCTX 2
|
||||||
|
# define OSSL_FUNC_KDF_FREECTX 3
|
||||||
|
# define OSSL_FUNC_KDF_RESET 4
|
||||||
|
# define OSSL_FUNC_KDF_DERIVE 5
|
||||||
|
# define OSSL_FUNC_KDF_GETTABLE_PARAMS 6
|
||||||
|
# define OSSL_FUNC_KDF_GETTABLE_CTX_PARAMS 7
|
||||||
|
# define OSSL_FUNC_KDF_SETTABLE_CTX_PARAMS 8
|
||||||
|
# define OSSL_FUNC_KDF_GET_PARAMS 9
|
||||||
|
# define OSSL_FUNC_KDF_GET_CTX_PARAMS 10
|
||||||
|
# define OSSL_FUNC_KDF_SET_CTX_PARAMS 11
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, kdf_newctx, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, kdf_dupctx, (void *src))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, kdf_freectx, (void *kctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, kdf_reset, (void *kctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, kdf_derive, (void *kctx, unsigned char *key,
|
||||||
|
size_t keylen, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_gettable_params, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_gettable_ctx_params,
|
||||||
|
(void *kctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_settable_ctx_params,
|
||||||
|
(void *kctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, kdf_get_params, (OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, kdf_get_ctx_params,
|
||||||
|
(void *kctx, OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, kdf_set_ctx_params,
|
||||||
|
(void *kctx, const OSSL_PARAM params[]))
|
||||||
|
|
||||||
|
/* RAND */
|
||||||
|
|
||||||
|
# define OSSL_FUNC_RAND_NEWCTX 1
|
||||||
|
# define OSSL_FUNC_RAND_FREECTX 2
|
||||||
|
# define OSSL_FUNC_RAND_INSTANTIATE 3
|
||||||
|
# define OSSL_FUNC_RAND_UNINSTANTIATE 4
|
||||||
|
# define OSSL_FUNC_RAND_GENERATE 5
|
||||||
|
# define OSSL_FUNC_RAND_RESEED 6
|
||||||
|
# define OSSL_FUNC_RAND_NONCE 7
|
||||||
|
# define OSSL_FUNC_RAND_ENABLE_LOCKING 8
|
||||||
|
# define OSSL_FUNC_RAND_LOCK 9
|
||||||
|
# define OSSL_FUNC_RAND_UNLOCK 10
|
||||||
|
# define OSSL_FUNC_RAND_GETTABLE_PARAMS 11
|
||||||
|
# define OSSL_FUNC_RAND_GETTABLE_CTX_PARAMS 12
|
||||||
|
# define OSSL_FUNC_RAND_SETTABLE_CTX_PARAMS 13
|
||||||
|
# define OSSL_FUNC_RAND_GET_PARAMS 14
|
||||||
|
# define OSSL_FUNC_RAND_GET_CTX_PARAMS 15
|
||||||
|
# define OSSL_FUNC_RAND_SET_CTX_PARAMS 16
|
||||||
|
# define OSSL_FUNC_RAND_VERIFY_ZEROIZATION 17
|
||||||
|
# define OSSL_FUNC_RAND_GET_SEED 18
|
||||||
|
# define OSSL_FUNC_RAND_CLEAR_SEED 19
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *,rand_newctx,
|
||||||
|
(void *provctx, void *parent,
|
||||||
|
const OSSL_DISPATCH *parent_calls))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,rand_freectx, (void *vctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,rand_instantiate,
|
||||||
|
(void *vdrbg, unsigned int strength,
|
||||||
|
int prediction_resistance,
|
||||||
|
const unsigned char *pstr, size_t pstr_len,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,rand_uninstantiate, (void *vdrbg))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,rand_generate,
|
||||||
|
(void *vctx, unsigned char *out, size_t outlen,
|
||||||
|
unsigned int strength, int prediction_resistance,
|
||||||
|
const unsigned char *addin, size_t addin_len))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,rand_reseed,
|
||||||
|
(void *vctx, int prediction_resistance,
|
||||||
|
const unsigned char *ent, size_t ent_len,
|
||||||
|
const unsigned char *addin, size_t addin_len))
|
||||||
|
OSSL_CORE_MAKE_FUNC(size_t,rand_nonce,
|
||||||
|
(void *vctx, unsigned char *out, unsigned int strength,
|
||||||
|
size_t min_noncelen, size_t max_noncelen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,rand_enable_locking, (void *vctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,rand_lock, (void *vctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,rand_unlock, (void *vctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_gettable_params, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_gettable_ctx_params,
|
||||||
|
(void *vctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_settable_ctx_params,
|
||||||
|
(void *vctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,rand_get_params, (OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,rand_get_ctx_params,
|
||||||
|
(void *vctx, OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,rand_set_ctx_params,
|
||||||
|
(void *vctx, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,rand_set_callbacks,
|
||||||
|
(void *vctx, OSSL_INOUT_CALLBACK *get_entropy,
|
||||||
|
OSSL_CALLBACK *cleanup_entropy,
|
||||||
|
OSSL_INOUT_CALLBACK *get_nonce,
|
||||||
|
OSSL_CALLBACK *cleanup_nonce, void *arg))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int,rand_verify_zeroization,
|
||||||
|
(void *vctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(size_t,rand_get_seed,
|
||||||
|
(void *vctx, unsigned char **buffer,
|
||||||
|
int entropy, size_t min_len, size_t max_len,
|
||||||
|
int prediction_resistance,
|
||||||
|
const unsigned char *adin, size_t adin_len))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void,rand_clear_seed,
|
||||||
|
(void *vctx, unsigned char *buffer, size_t b_len))
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Key management
|
||||||
|
*
|
||||||
|
* The Key Management takes care of provider side key objects, and includes
|
||||||
|
* all current functionality to create them, destroy them, set parameters
|
||||||
|
* and key material, etc, essentially everything that manipulates the keys
|
||||||
|
* themselves and their parameters.
|
||||||
|
*
|
||||||
|
* The key objects are commonly referred to as |keydata|, and it MUST be able
|
||||||
|
* to contain parameters if the key has any, the public key and the private
|
||||||
|
* key. All parts are optional, but their presence determines what can be
|
||||||
|
* done with the key object in terms of encryption, signature, and so on.
|
||||||
|
* The assumption from libcrypto is that the key object contains any of the
|
||||||
|
* following data combinations:
|
||||||
|
*
|
||||||
|
* - parameters only
|
||||||
|
* - public key only
|
||||||
|
* - public key + private key
|
||||||
|
* - parameters + public key
|
||||||
|
* - parameters + public key + private key
|
||||||
|
*
|
||||||
|
* What "parameters", "public key" and "private key" means in detail is left
|
||||||
|
* to the implementation. In the case of DH and DSA, they would typically
|
||||||
|
* include domain parameters, while for certain variants of RSA, they would
|
||||||
|
* typically include PSS or OAEP parameters.
|
||||||
|
*
|
||||||
|
* Key objects are created with OSSL_FUNC_keymgmt_new() and destroyed with
|
||||||
|
* OSSL_FUNC_keymgmt_free(). Key objects can have data filled in with
|
||||||
|
* OSSL_FUNC_keymgmt_import().
|
||||||
|
*
|
||||||
|
* Three functions are made available to check what selection of data is
|
||||||
|
* present in a key object: OSSL_FUNC_keymgmt_has_parameters(),
|
||||||
|
* OSSL_FUNC_keymgmt_has_public_key(), and OSSL_FUNC_keymgmt_has_private_key(),
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Key data subset selection - individual bits */
|
||||||
|
# define OSSL_KEYMGMT_SELECT_PRIVATE_KEY 0x01
|
||||||
|
# define OSSL_KEYMGMT_SELECT_PUBLIC_KEY 0x02
|
||||||
|
# define OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS 0x04
|
||||||
|
# define OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS 0x80
|
||||||
|
|
||||||
|
/* Key data subset selection - combinations */
|
||||||
|
# define OSSL_KEYMGMT_SELECT_ALL_PARAMETERS \
|
||||||
|
( OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS \
|
||||||
|
| OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS)
|
||||||
|
# define OSSL_KEYMGMT_SELECT_KEYPAIR \
|
||||||
|
( OSSL_KEYMGMT_SELECT_PRIVATE_KEY | OSSL_KEYMGMT_SELECT_PUBLIC_KEY )
|
||||||
|
# define OSSL_KEYMGMT_SELECT_ALL \
|
||||||
|
( OSSL_KEYMGMT_SELECT_KEYPAIR | OSSL_KEYMGMT_SELECT_ALL_PARAMETERS )
|
||||||
|
|
||||||
|
# define OSSL_KEYMGMT_VALIDATE_FULL_CHECK 0
|
||||||
|
# define OSSL_KEYMGMT_VALIDATE_QUICK_CHECK 1
|
||||||
|
|
||||||
|
/* Basic key object creation */
|
||||||
|
# define OSSL_FUNC_KEYMGMT_NEW 1
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, keymgmt_new, (void *provctx))
|
||||||
|
|
||||||
|
/* Generation, a more complex constructor */
|
||||||
|
# define OSSL_FUNC_KEYMGMT_GEN_INIT 2
|
||||||
|
# define OSSL_FUNC_KEYMGMT_GEN_SET_TEMPLATE 3
|
||||||
|
# define OSSL_FUNC_KEYMGMT_GEN_SET_PARAMS 4
|
||||||
|
# define OSSL_FUNC_KEYMGMT_GEN_SETTABLE_PARAMS 5
|
||||||
|
# define OSSL_FUNC_KEYMGMT_GEN 6
|
||||||
|
# define OSSL_FUNC_KEYMGMT_GEN_CLEANUP 7
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, keymgmt_gen_init,
|
||||||
|
(void *provctx, int selection, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keymgmt_gen_set_template,
|
||||||
|
(void *genctx, void *templ))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keymgmt_gen_set_params,
|
||||||
|
(void *genctx, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,
|
||||||
|
keymgmt_gen_settable_params,
|
||||||
|
(void *genctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, keymgmt_gen,
|
||||||
|
(void *genctx, OSSL_CALLBACK *cb, void *cbarg))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, keymgmt_gen_cleanup, (void *genctx))
|
||||||
|
|
||||||
|
/* Key loading by object reference */
|
||||||
|
# define OSSL_FUNC_KEYMGMT_LOAD 8
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, keymgmt_load,
|
||||||
|
(const void *reference, size_t reference_sz))
|
||||||
|
|
||||||
|
/* Basic key object destruction */
|
||||||
|
# define OSSL_FUNC_KEYMGMT_FREE 10
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, keymgmt_free, (void *keydata))
|
||||||
|
|
||||||
|
/* Key object information, with discovery */
|
||||||
|
#define OSSL_FUNC_KEYMGMT_GET_PARAMS 11
|
||||||
|
#define OSSL_FUNC_KEYMGMT_GETTABLE_PARAMS 12
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keymgmt_get_params,
|
||||||
|
(void *keydata, OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_gettable_params,
|
||||||
|
(void *provctx))
|
||||||
|
|
||||||
|
#define OSSL_FUNC_KEYMGMT_SET_PARAMS 13
|
||||||
|
#define OSSL_FUNC_KEYMGMT_SETTABLE_PARAMS 14
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keymgmt_set_params,
|
||||||
|
(void *keydata, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_settable_params,
|
||||||
|
(void *provctx))
|
||||||
|
|
||||||
|
/* Key checks - discovery of supported operations */
|
||||||
|
# define OSSL_FUNC_KEYMGMT_QUERY_OPERATION_NAME 20
|
||||||
|
OSSL_CORE_MAKE_FUNC(const char *, keymgmt_query_operation_name,
|
||||||
|
(int operation_id))
|
||||||
|
|
||||||
|
/* Key checks - key data content checks */
|
||||||
|
# define OSSL_FUNC_KEYMGMT_HAS 21
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keymgmt_has, (const void *keydata, int selection))
|
||||||
|
|
||||||
|
/* Key checks - validation */
|
||||||
|
# define OSSL_FUNC_KEYMGMT_VALIDATE 22
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keymgmt_validate, (const void *keydata, int selection,
|
||||||
|
int checktype))
|
||||||
|
|
||||||
|
/* Key checks - matching */
|
||||||
|
# define OSSL_FUNC_KEYMGMT_MATCH 23
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keymgmt_match,
|
||||||
|
(const void *keydata1, const void *keydata2,
|
||||||
|
int selection))
|
||||||
|
|
||||||
|
/* Import and export functions, with discovery */
|
||||||
|
# define OSSL_FUNC_KEYMGMT_IMPORT 40
|
||||||
|
# define OSSL_FUNC_KEYMGMT_IMPORT_TYPES 41
|
||||||
|
# define OSSL_FUNC_KEYMGMT_EXPORT 42
|
||||||
|
# define OSSL_FUNC_KEYMGMT_EXPORT_TYPES 43
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keymgmt_import,
|
||||||
|
(void *keydata, int selection, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types,
|
||||||
|
(int selection))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keymgmt_export,
|
||||||
|
(void *keydata, int selection,
|
||||||
|
OSSL_CALLBACK *param_cb, void *cbarg))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types,
|
||||||
|
(int selection))
|
||||||
|
|
||||||
|
/* Dup function, constructor */
|
||||||
|
# define OSSL_FUNC_KEYMGMT_DUP 44
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, keymgmt_dup,
|
||||||
|
(const void *keydata_from, int selection))
|
||||||
|
|
||||||
|
/* Key Exchange */
|
||||||
|
|
||||||
|
# define OSSL_FUNC_KEYEXCH_NEWCTX 1
|
||||||
|
# define OSSL_FUNC_KEYEXCH_INIT 2
|
||||||
|
# define OSSL_FUNC_KEYEXCH_DERIVE 3
|
||||||
|
# define OSSL_FUNC_KEYEXCH_SET_PEER 4
|
||||||
|
# define OSSL_FUNC_KEYEXCH_FREECTX 5
|
||||||
|
# define OSSL_FUNC_KEYEXCH_DUPCTX 6
|
||||||
|
# define OSSL_FUNC_KEYEXCH_SET_CTX_PARAMS 7
|
||||||
|
# define OSSL_FUNC_KEYEXCH_SETTABLE_CTX_PARAMS 8
|
||||||
|
# define OSSL_FUNC_KEYEXCH_GET_CTX_PARAMS 9
|
||||||
|
# define OSSL_FUNC_KEYEXCH_GETTABLE_CTX_PARAMS 10
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, keyexch_newctx, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keyexch_init, (void *ctx, void *provkey,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keyexch_derive, (void *ctx, unsigned char *secret,
|
||||||
|
size_t *secretlen, size_t outlen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keyexch_set_peer, (void *ctx, void *provkey))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, keyexch_freectx, (void *ctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, keyexch_dupctx, (void *ctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keyexch_set_ctx_params, (void *ctx,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keyexch_settable_ctx_params,
|
||||||
|
(void *ctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, keyexch_get_ctx_params, (void *ctx,
|
||||||
|
OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keyexch_gettable_ctx_params,
|
||||||
|
(void *ctx, void *provctx))
|
||||||
|
|
||||||
|
/* Signature */
|
||||||
|
|
||||||
|
# define OSSL_FUNC_SIGNATURE_NEWCTX 1
|
||||||
|
# define OSSL_FUNC_SIGNATURE_SIGN_INIT 2
|
||||||
|
# define OSSL_FUNC_SIGNATURE_SIGN 3
|
||||||
|
# define OSSL_FUNC_SIGNATURE_VERIFY_INIT 4
|
||||||
|
# define OSSL_FUNC_SIGNATURE_VERIFY 5
|
||||||
|
# define OSSL_FUNC_SIGNATURE_VERIFY_RECOVER_INIT 6
|
||||||
|
# define OSSL_FUNC_SIGNATURE_VERIFY_RECOVER 7
|
||||||
|
# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_INIT 8
|
||||||
|
# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_UPDATE 9
|
||||||
|
# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_FINAL 10
|
||||||
|
# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN 11
|
||||||
|
# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_INIT 12
|
||||||
|
# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_UPDATE 13
|
||||||
|
# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_FINAL 14
|
||||||
|
# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY 15
|
||||||
|
# define OSSL_FUNC_SIGNATURE_FREECTX 16
|
||||||
|
# define OSSL_FUNC_SIGNATURE_DUPCTX 17
|
||||||
|
# define OSSL_FUNC_SIGNATURE_GET_CTX_PARAMS 18
|
||||||
|
# define OSSL_FUNC_SIGNATURE_GETTABLE_CTX_PARAMS 19
|
||||||
|
# define OSSL_FUNC_SIGNATURE_SET_CTX_PARAMS 20
|
||||||
|
# define OSSL_FUNC_SIGNATURE_SETTABLE_CTX_PARAMS 21
|
||||||
|
# define OSSL_FUNC_SIGNATURE_GET_CTX_MD_PARAMS 22
|
||||||
|
# define OSSL_FUNC_SIGNATURE_GETTABLE_CTX_MD_PARAMS 23
|
||||||
|
# define OSSL_FUNC_SIGNATURE_SET_CTX_MD_PARAMS 24
|
||||||
|
# define OSSL_FUNC_SIGNATURE_SETTABLE_CTX_MD_PARAMS 25
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, signature_newctx, (void *provctx,
|
||||||
|
const char *propq))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_sign_init, (void *ctx, void *provkey,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_sign, (void *ctx, unsigned char *sig,
|
||||||
|
size_t *siglen, size_t sigsize,
|
||||||
|
const unsigned char *tbs,
|
||||||
|
size_t tbslen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_verify_init, (void *ctx, void *provkey,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_verify, (void *ctx,
|
||||||
|
const unsigned char *sig,
|
||||||
|
size_t siglen,
|
||||||
|
const unsigned char *tbs,
|
||||||
|
size_t tbslen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_verify_recover_init,
|
||||||
|
(void *ctx, void *provkey, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_verify_recover,
|
||||||
|
(void *ctx, unsigned char *rout, size_t *routlen,
|
||||||
|
size_t routsize, const unsigned char *sig, size_t siglen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_init,
|
||||||
|
(void *ctx, const char *mdname, void *provkey,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_update,
|
||||||
|
(void *ctx, const unsigned char *data, size_t datalen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_final,
|
||||||
|
(void *ctx, unsigned char *sig, size_t *siglen,
|
||||||
|
size_t sigsize))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_digest_sign,
|
||||||
|
(void *ctx, unsigned char *sigret, size_t *siglen,
|
||||||
|
size_t sigsize, const unsigned char *tbs, size_t tbslen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_init,
|
||||||
|
(void *ctx, const char *mdname, void *provkey,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_update,
|
||||||
|
(void *ctx, const unsigned char *data, size_t datalen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_final,
|
||||||
|
(void *ctx, const unsigned char *sig, size_t siglen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_digest_verify,
|
||||||
|
(void *ctx, const unsigned char *sig, size_t siglen,
|
||||||
|
const unsigned char *tbs, size_t tbslen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, signature_freectx, (void *ctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, signature_dupctx, (void *ctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_get_ctx_params,
|
||||||
|
(void *ctx, OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_gettable_ctx_params,
|
||||||
|
(void *ctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_set_ctx_params,
|
||||||
|
(void *ctx, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_settable_ctx_params,
|
||||||
|
(void *ctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_get_ctx_md_params,
|
||||||
|
(void *ctx, OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_gettable_ctx_md_params,
|
||||||
|
(void *ctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, signature_set_ctx_md_params,
|
||||||
|
(void *ctx, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_settable_ctx_md_params,
|
||||||
|
(void *ctx))
|
||||||
|
|
||||||
|
|
||||||
|
/* Asymmetric Ciphers */
|
||||||
|
|
||||||
|
# define OSSL_FUNC_ASYM_CIPHER_NEWCTX 1
|
||||||
|
# define OSSL_FUNC_ASYM_CIPHER_ENCRYPT_INIT 2
|
||||||
|
# define OSSL_FUNC_ASYM_CIPHER_ENCRYPT 3
|
||||||
|
# define OSSL_FUNC_ASYM_CIPHER_DECRYPT_INIT 4
|
||||||
|
# define OSSL_FUNC_ASYM_CIPHER_DECRYPT 5
|
||||||
|
# define OSSL_FUNC_ASYM_CIPHER_FREECTX 6
|
||||||
|
# define OSSL_FUNC_ASYM_CIPHER_DUPCTX 7
|
||||||
|
# define OSSL_FUNC_ASYM_CIPHER_GET_CTX_PARAMS 8
|
||||||
|
# define OSSL_FUNC_ASYM_CIPHER_GETTABLE_CTX_PARAMS 9
|
||||||
|
# define OSSL_FUNC_ASYM_CIPHER_SET_CTX_PARAMS 10
|
||||||
|
# define OSSL_FUNC_ASYM_CIPHER_SETTABLE_CTX_PARAMS 11
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, asym_cipher_newctx, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, asym_cipher_encrypt_init, (void *ctx, void *provkey,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, asym_cipher_encrypt, (void *ctx, unsigned char *out,
|
||||||
|
size_t *outlen,
|
||||||
|
size_t outsize,
|
||||||
|
const unsigned char *in,
|
||||||
|
size_t inlen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, asym_cipher_decrypt_init, (void *ctx, void *provkey,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, asym_cipher_decrypt, (void *ctx, unsigned char *out,
|
||||||
|
size_t *outlen,
|
||||||
|
size_t outsize,
|
||||||
|
const unsigned char *in,
|
||||||
|
size_t inlen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, asym_cipher_freectx, (void *ctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, asym_cipher_dupctx, (void *ctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, asym_cipher_get_ctx_params,
|
||||||
|
(void *ctx, OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, asym_cipher_gettable_ctx_params,
|
||||||
|
(void *ctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, asym_cipher_set_ctx_params,
|
||||||
|
(void *ctx, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, asym_cipher_settable_ctx_params,
|
||||||
|
(void *ctx, void *provctx))
|
||||||
|
|
||||||
|
/* Asymmetric Key encapsulation */
|
||||||
|
# define OSSL_FUNC_KEM_NEWCTX 1
|
||||||
|
# define OSSL_FUNC_KEM_ENCAPSULATE_INIT 2
|
||||||
|
# define OSSL_FUNC_KEM_ENCAPSULATE 3
|
||||||
|
# define OSSL_FUNC_KEM_DECAPSULATE_INIT 4
|
||||||
|
# define OSSL_FUNC_KEM_DECAPSULATE 5
|
||||||
|
# define OSSL_FUNC_KEM_FREECTX 6
|
||||||
|
# define OSSL_FUNC_KEM_DUPCTX 7
|
||||||
|
# define OSSL_FUNC_KEM_GET_CTX_PARAMS 8
|
||||||
|
# define OSSL_FUNC_KEM_GETTABLE_CTX_PARAMS 9
|
||||||
|
# define OSSL_FUNC_KEM_SET_CTX_PARAMS 10
|
||||||
|
# define OSSL_FUNC_KEM_SETTABLE_CTX_PARAMS 11
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, kem_newctx, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, kem_encapsulate_init, (void *ctx, void *provkey,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, kem_encapsulate, (void *ctx,
|
||||||
|
unsigned char *out, size_t *outlen,
|
||||||
|
unsigned char *secret,
|
||||||
|
size_t *secretlen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, kem_decapsulate_init, (void *ctx, void *provkey,
|
||||||
|
const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, kem_decapsulate, (void *ctx,
|
||||||
|
unsigned char *out, size_t *outlen,
|
||||||
|
const unsigned char *in, size_t inlen))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, kem_freectx, (void *ctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, kem_dupctx, (void *ctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, kem_get_ctx_params, (void *ctx, OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kem_gettable_ctx_params,
|
||||||
|
(void *ctx, void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, kem_set_ctx_params,
|
||||||
|
(void *ctx, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kem_settable_ctx_params,
|
||||||
|
(void *ctx, void *provctx))
|
||||||
|
|
||||||
|
/* Encoders and decoders */
|
||||||
|
# define OSSL_FUNC_ENCODER_NEWCTX 1
|
||||||
|
# define OSSL_FUNC_ENCODER_FREECTX 2
|
||||||
|
# define OSSL_FUNC_ENCODER_GET_PARAMS 3
|
||||||
|
# define OSSL_FUNC_ENCODER_GETTABLE_PARAMS 4
|
||||||
|
# define OSSL_FUNC_ENCODER_SET_CTX_PARAMS 5
|
||||||
|
# define OSSL_FUNC_ENCODER_SETTABLE_CTX_PARAMS 6
|
||||||
|
# define OSSL_FUNC_ENCODER_DOES_SELECTION 10
|
||||||
|
# define OSSL_FUNC_ENCODER_ENCODE 11
|
||||||
|
# define OSSL_FUNC_ENCODER_IMPORT_OBJECT 20
|
||||||
|
# define OSSL_FUNC_ENCODER_FREE_OBJECT 21
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, encoder_newctx, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, encoder_freectx, (void *ctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, encoder_get_params, (OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, encoder_gettable_params,
|
||||||
|
(void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, encoder_set_ctx_params,
|
||||||
|
(void *ctx, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, encoder_settable_ctx_params,
|
||||||
|
(void *provctx))
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, encoder_does_selection,
|
||||||
|
(void *provctx, int selection))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, encoder_encode,
|
||||||
|
(void *ctx, OSSL_CORE_BIO *out,
|
||||||
|
const void *obj_raw, const OSSL_PARAM obj_abstract[],
|
||||||
|
int selection,
|
||||||
|
OSSL_PASSPHRASE_CALLBACK *cb, void *cbarg))
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, encoder_import_object,
|
||||||
|
(void *ctx, int selection, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, encoder_free_object, (void *obj))
|
||||||
|
|
||||||
|
# define OSSL_FUNC_DECODER_NEWCTX 1
|
||||||
|
# define OSSL_FUNC_DECODER_FREECTX 2
|
||||||
|
# define OSSL_FUNC_DECODER_GET_PARAMS 3
|
||||||
|
# define OSSL_FUNC_DECODER_GETTABLE_PARAMS 4
|
||||||
|
# define OSSL_FUNC_DECODER_SET_CTX_PARAMS 5
|
||||||
|
# define OSSL_FUNC_DECODER_SETTABLE_CTX_PARAMS 6
|
||||||
|
# define OSSL_FUNC_DECODER_DOES_SELECTION 10
|
||||||
|
# define OSSL_FUNC_DECODER_DECODE 11
|
||||||
|
# define OSSL_FUNC_DECODER_EXPORT_OBJECT 20
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, decoder_newctx, (void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void, decoder_freectx, (void *ctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, decoder_get_params, (OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, decoder_gettable_params,
|
||||||
|
(void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, decoder_set_ctx_params,
|
||||||
|
(void *ctx, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, decoder_settable_ctx_params,
|
||||||
|
(void *provctx))
|
||||||
|
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, decoder_does_selection,
|
||||||
|
(void *provctx, int selection))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, decoder_decode,
|
||||||
|
(void *ctx, OSSL_CORE_BIO *in, int selection,
|
||||||
|
OSSL_CALLBACK *data_cb, void *data_cbarg,
|
||||||
|
OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, decoder_export_object,
|
||||||
|
(void *ctx, const void *objref, size_t objref_sz,
|
||||||
|
OSSL_CALLBACK *export_cb, void *export_cbarg))
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Store
|
||||||
|
*
|
||||||
|
* Objects are scanned by using the 'open', 'load', 'eof' and 'close'
|
||||||
|
* functions, which implement an OSSL_STORE loader.
|
||||||
|
*
|
||||||
|
* store_load() works in a way that's very similar to the decoders, in
|
||||||
|
* that they pass an abstract object through a callback, either as a DER
|
||||||
|
* octet string or as an object reference, which libcrypto will have to
|
||||||
|
* deal with.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define OSSL_FUNC_STORE_OPEN 1
|
||||||
|
#define OSSL_FUNC_STORE_ATTACH 2
|
||||||
|
#define OSSL_FUNC_STORE_SETTABLE_CTX_PARAMS 3
|
||||||
|
#define OSSL_FUNC_STORE_SET_CTX_PARAMS 4
|
||||||
|
#define OSSL_FUNC_STORE_LOAD 5
|
||||||
|
#define OSSL_FUNC_STORE_EOF 6
|
||||||
|
#define OSSL_FUNC_STORE_CLOSE 7
|
||||||
|
#define OSSL_FUNC_STORE_EXPORT_OBJECT 8
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, store_open, (void *provctx, const char *uri))
|
||||||
|
OSSL_CORE_MAKE_FUNC(void *, store_attach, (void *provctx, OSSL_CORE_BIO *in))
|
||||||
|
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, store_settable_ctx_params,
|
||||||
|
(void *provctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, store_set_ctx_params,
|
||||||
|
(void *loaderctx, const OSSL_PARAM params[]))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, store_load,
|
||||||
|
(void *loaderctx,
|
||||||
|
OSSL_CALLBACK *object_cb, void *object_cbarg,
|
||||||
|
OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, store_eof, (void *loaderctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, store_close, (void *loaderctx))
|
||||||
|
OSSL_CORE_MAKE_FUNC(int, store_export_object,
|
||||||
|
(void *loaderctx, const void *objref, size_t objref_sz,
|
||||||
|
OSSL_CALLBACK *export_cb, void *export_cbarg))
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
560
src/openssl/core_names.h
Normal file
560
src/openssl/core_names.h
Normal file
@@ -0,0 +1,560 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CORE_NAMES_H
|
||||||
|
# define OPENSSL_CORE_NAMES_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Well known parameter names that core passes to providers */
|
||||||
|
#define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" /* utf8_ptr */
|
||||||
|
#define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" /* utf8_ptr */
|
||||||
|
#define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" /* utf8_ptr */
|
||||||
|
|
||||||
|
/* Well known parameter names that Providers can define */
|
||||||
|
#define OSSL_PROV_PARAM_NAME "name" /* utf8_ptr */
|
||||||
|
#define OSSL_PROV_PARAM_VERSION "version" /* utf8_ptr */
|
||||||
|
#define OSSL_PROV_PARAM_BUILDINFO "buildinfo" /* utf8_ptr */
|
||||||
|
#define OSSL_PROV_PARAM_STATUS "status" /* uint */
|
||||||
|
#define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" /* uint */
|
||||||
|
#define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" /* uint */
|
||||||
|
#define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" /* uint */
|
||||||
|
|
||||||
|
/* Self test callback parameters */
|
||||||
|
#define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" /* utf8_string */
|
||||||
|
#define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" /* utf8_string */
|
||||||
|
#define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" /* utf8_string */
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Provider-native object abstractions
|
||||||
|
*
|
||||||
|
* These are used when a provider wants to pass object data or an object
|
||||||
|
* reference back to libcrypto. This is only useful for provider functions
|
||||||
|
* that take a callback to which an OSSL_PARAM array with these parameters
|
||||||
|
* can be passed.
|
||||||
|
*
|
||||||
|
* This set of parameter names is explained in detail in provider-object(7)
|
||||||
|
* (doc/man7/provider-object.pod)
|
||||||
|
*/
|
||||||
|
#define OSSL_OBJECT_PARAM_TYPE "type" /* INTEGER */
|
||||||
|
#define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" /* UTF8_STRING */
|
||||||
|
#define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" /* UTF8_STRING */
|
||||||
|
#define OSSL_OBJECT_PARAM_REFERENCE "reference" /* OCTET_STRING */
|
||||||
|
#define OSSL_OBJECT_PARAM_DATA "data" /* OCTET_STRING or UTF8_STRING */
|
||||||
|
#define OSSL_OBJECT_PARAM_DESC "desc" /* UTF8_STRING */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Algorithm parameters
|
||||||
|
* If "engine" or "properties" are specified, they should always be paired
|
||||||
|
* with the algorithm type.
|
||||||
|
* Note these are common names that are shared by many types (such as kdf, mac,
|
||||||
|
* and pkey) e.g: see OSSL_MAC_PARAM_DIGEST below.
|
||||||
|
*/
|
||||||
|
#define OSSL_ALG_PARAM_DIGEST "digest" /* utf8_string */
|
||||||
|
#define OSSL_ALG_PARAM_CIPHER "cipher" /* utf8_string */
|
||||||
|
#define OSSL_ALG_PARAM_ENGINE "engine" /* utf8_string */
|
||||||
|
#define OSSL_ALG_PARAM_MAC "mac" /* utf8_string */
|
||||||
|
#define OSSL_ALG_PARAM_PROPERTIES "properties"/* utf8_string */
|
||||||
|
|
||||||
|
/* cipher parameters */
|
||||||
|
#define OSSL_CIPHER_PARAM_PADDING "padding" /* uint */
|
||||||
|
#define OSSL_CIPHER_PARAM_USE_BITS "use-bits" /* uint */
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" /* uint */
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" /* octet_ptr */
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" /* size_t */
|
||||||
|
#define OSSL_CIPHER_PARAM_MODE "mode" /* uint */
|
||||||
|
#define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" /* size_t */
|
||||||
|
#define OSSL_CIPHER_PARAM_AEAD "aead" /* int, 0 or 1 */
|
||||||
|
#define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" /* int, 0 or 1 */
|
||||||
|
#define OSSL_CIPHER_PARAM_CTS "cts" /* int, 0 or 1 */
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" /* int, 0 or 1 */
|
||||||
|
#define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" /* int, 0 or 1 */
|
||||||
|
#define OSSL_CIPHER_PARAM_KEYLEN "keylen" /* size_t */
|
||||||
|
#define OSSL_CIPHER_PARAM_IVLEN "ivlen" /* size_t */
|
||||||
|
#define OSSL_CIPHER_PARAM_IV "iv" /* octet_string OR octet_ptr */
|
||||||
|
#define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" /* octet_string OR octet_ptr */
|
||||||
|
#define OSSL_CIPHER_PARAM_NUM "num" /* uint */
|
||||||
|
#define OSSL_CIPHER_PARAM_ROUNDS "rounds" /* uint */
|
||||||
|
#define OSSL_CIPHER_PARAM_AEAD_TAG "tag" /* octet_string */
|
||||||
|
#define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" /* octet_string */
|
||||||
|
#define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" /* size_t */
|
||||||
|
#define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" /* octet_string */
|
||||||
|
#define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" /* octet_string */
|
||||||
|
#define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" /* octet_string */
|
||||||
|
#define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN
|
||||||
|
#define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" /* size_t */
|
||||||
|
#define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" /* octet_string */
|
||||||
|
#define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" /* octet_string */
|
||||||
|
#define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" /* size_t */
|
||||||
|
#define OSSL_CIPHER_PARAM_SPEED "speed" /* uint */
|
||||||
|
#define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" /* utf8_string */
|
||||||
|
/* For passing the AlgorithmIdentifier parameter in DER form */
|
||||||
|
#define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS "alg_id_param" /* octet_string */
|
||||||
|
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT \
|
||||||
|
"tls1multi_maxsndfrag" /* uint */
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE \
|
||||||
|
"tls1multi_maxbufsz" /* size_t */
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE \
|
||||||
|
"tls1multi_interleave" /* uint */
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD \
|
||||||
|
"tls1multi_aad" /* octet_string */
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN \
|
||||||
|
"tls1multi_aadpacklen" /* uint */
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC \
|
||||||
|
"tls1multi_enc" /* octet_string */
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN \
|
||||||
|
"tls1multi_encin" /* octet_string */
|
||||||
|
#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN \
|
||||||
|
"tls1multi_enclen" /* size_t */
|
||||||
|
|
||||||
|
/* OSSL_CIPHER_PARAM_CTS_MODE Values */
|
||||||
|
#define OSSL_CIPHER_CTS_MODE_CS1 "CS1"
|
||||||
|
#define OSSL_CIPHER_CTS_MODE_CS2 "CS2"
|
||||||
|
#define OSSL_CIPHER_CTS_MODE_CS3 "CS3"
|
||||||
|
|
||||||
|
/* digest parameters */
|
||||||
|
#define OSSL_DIGEST_PARAM_XOFLEN "xoflen" /* size_t */
|
||||||
|
#define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" /* octet string */
|
||||||
|
#define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" /* uint */
|
||||||
|
#define OSSL_DIGEST_PARAM_MICALG "micalg" /* utf8 string */
|
||||||
|
#define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" /* size_t */
|
||||||
|
#define OSSL_DIGEST_PARAM_SIZE "size" /* size_t */
|
||||||
|
#define OSSL_DIGEST_PARAM_XOF "xof" /* int, 0 or 1 */
|
||||||
|
#define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" /* int, 0 or 1 */
|
||||||
|
|
||||||
|
/* Known DIGEST names (not a complete list) */
|
||||||
|
#define OSSL_DIGEST_NAME_MD5 "MD5"
|
||||||
|
#define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1"
|
||||||
|
#define OSSL_DIGEST_NAME_SHA1 "SHA1"
|
||||||
|
#define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224"
|
||||||
|
#define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256"
|
||||||
|
#define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384"
|
||||||
|
#define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512"
|
||||||
|
#define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224"
|
||||||
|
#define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256"
|
||||||
|
#define OSSL_DIGEST_NAME_MD2 "MD2"
|
||||||
|
#define OSSL_DIGEST_NAME_MD4 "MD4"
|
||||||
|
#define OSSL_DIGEST_NAME_MDC2 "MDC2"
|
||||||
|
#define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160"
|
||||||
|
#define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224"
|
||||||
|
#define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256"
|
||||||
|
#define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384"
|
||||||
|
#define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512"
|
||||||
|
#define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128"
|
||||||
|
#define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256"
|
||||||
|
#define OSSL_DIGEST_NAME_SM3 "SM3"
|
||||||
|
|
||||||
|
/* MAC parameters */
|
||||||
|
#define OSSL_MAC_PARAM_KEY "key" /* octet string */
|
||||||
|
#define OSSL_MAC_PARAM_IV "iv" /* octet string */
|
||||||
|
#define OSSL_MAC_PARAM_CUSTOM "custom" /* utf8 string */
|
||||||
|
#define OSSL_MAC_PARAM_SALT "salt" /* octet string */
|
||||||
|
#define OSSL_MAC_PARAM_XOF "xof" /* int, 0 or 1 */
|
||||||
|
#define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" /* int, 0 or 1 */
|
||||||
|
#define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" /* int, 0 or 1 */
|
||||||
|
#define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" /* unsigned int */
|
||||||
|
#define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" /* unsigned int */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If "engine" or "properties" are specified, they should always be paired
|
||||||
|
* with "cipher" or "digest".
|
||||||
|
*/
|
||||||
|
#define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */
|
||||||
|
#define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST /* utf8 string */
|
||||||
|
#define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES /* utf8 string */
|
||||||
|
#define OSSL_MAC_PARAM_SIZE "size" /* size_t */
|
||||||
|
#define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" /* size_t */
|
||||||
|
#define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" /* size_t */
|
||||||
|
|
||||||
|
/* Known MAC names */
|
||||||
|
#define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC"
|
||||||
|
#define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC"
|
||||||
|
#define OSSL_MAC_NAME_CMAC "CMAC"
|
||||||
|
#define OSSL_MAC_NAME_GMAC "GMAC"
|
||||||
|
#define OSSL_MAC_NAME_HMAC "HMAC"
|
||||||
|
#define OSSL_MAC_NAME_KMAC128 "KMAC128"
|
||||||
|
#define OSSL_MAC_NAME_KMAC256 "KMAC256"
|
||||||
|
#define OSSL_MAC_NAME_POLY1305 "POLY1305"
|
||||||
|
#define OSSL_MAC_NAME_SIPHASH "SIPHASH"
|
||||||
|
|
||||||
|
/* KDF / PRF parameters */
|
||||||
|
#define OSSL_KDF_PARAM_SECRET "secret" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_KEY "key" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_SALT "salt" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_PASSWORD "pass" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_PREFIX "prefix" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_LABEL "label" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_DATA "data" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST /* utf8 string */
|
||||||
|
#define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */
|
||||||
|
#define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC /* utf8 string */
|
||||||
|
#define OSSL_KDF_PARAM_MAC_SIZE "maclen" /* size_t */
|
||||||
|
#define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES /* utf8 string */
|
||||||
|
#define OSSL_KDF_PARAM_ITER "iter" /* unsigned int */
|
||||||
|
#define OSSL_KDF_PARAM_MODE "mode" /* utf8 string or int */
|
||||||
|
#define OSSL_KDF_PARAM_PKCS5 "pkcs5" /* int */
|
||||||
|
#define OSSL_KDF_PARAM_UKM "ukm" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_CEK_ALG "cekalg" /* utf8 string */
|
||||||
|
#define OSSL_KDF_PARAM_SCRYPT_N "n" /* uint64_t */
|
||||||
|
#define OSSL_KDF_PARAM_SCRYPT_R "r" /* uint32_t */
|
||||||
|
#define OSSL_KDF_PARAM_SCRYPT_P "p" /* uint32_t */
|
||||||
|
#define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" /* uint64_t */
|
||||||
|
#define OSSL_KDF_PARAM_INFO "info" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_SEED "seed" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_SSHKDF_TYPE "type" /* int */
|
||||||
|
#define OSSL_KDF_PARAM_SIZE "size" /* size_t */
|
||||||
|
#define OSSL_KDF_PARAM_CONSTANT "constant" /* octet string */
|
||||||
|
#define OSSL_KDF_PARAM_PKCS12_ID "id" /* int */
|
||||||
|
#define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" /* int */
|
||||||
|
#define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" /* int */
|
||||||
|
#define OSSL_KDF_PARAM_KBKDF_R "r" /* int */
|
||||||
|
#define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info"
|
||||||
|
#define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info"
|
||||||
|
#define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info"
|
||||||
|
#define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo"
|
||||||
|
#define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo"
|
||||||
|
#define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits"
|
||||||
|
|
||||||
|
/* Known KDF names */
|
||||||
|
#define OSSL_KDF_NAME_HKDF "HKDF"
|
||||||
|
#define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF"
|
||||||
|
#define OSSL_KDF_NAME_PBKDF1 "PBKDF1"
|
||||||
|
#define OSSL_KDF_NAME_PBKDF2 "PBKDF2"
|
||||||
|
#define OSSL_KDF_NAME_SCRYPT "SCRYPT"
|
||||||
|
#define OSSL_KDF_NAME_SSHKDF "SSHKDF"
|
||||||
|
#define OSSL_KDF_NAME_SSKDF "SSKDF"
|
||||||
|
#define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF"
|
||||||
|
#define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1"
|
||||||
|
#define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT"
|
||||||
|
#define OSSL_KDF_NAME_X963KDF "X963KDF"
|
||||||
|
#define OSSL_KDF_NAME_KBKDF "KBKDF"
|
||||||
|
#define OSSL_KDF_NAME_KRB5KDF "KRB5KDF"
|
||||||
|
|
||||||
|
/* Known RAND names */
|
||||||
|
#define OSSL_RAND_PARAM_STATE "state"
|
||||||
|
#define OSSL_RAND_PARAM_STRENGTH "strength"
|
||||||
|
#define OSSL_RAND_PARAM_MAX_REQUEST "max_request"
|
||||||
|
#define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy"
|
||||||
|
#define OSSL_RAND_PARAM_TEST_NONCE "test_nonce"
|
||||||
|
|
||||||
|
/* RAND/DRBG names */
|
||||||
|
#define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests"
|
||||||
|
#define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval"
|
||||||
|
#define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen"
|
||||||
|
#define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen"
|
||||||
|
#define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen"
|
||||||
|
#define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen"
|
||||||
|
#define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen"
|
||||||
|
#define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen"
|
||||||
|
#define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter"
|
||||||
|
#define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time"
|
||||||
|
#define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
|
||||||
|
#define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST
|
||||||
|
#define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
|
||||||
|
#define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC
|
||||||
|
#define OSSL_DRBG_PARAM_USE_DF "use_derivation_function"
|
||||||
|
|
||||||
|
/* DRBG call back parameters */
|
||||||
|
#define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required"
|
||||||
|
#define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance"
|
||||||
|
#define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length"
|
||||||
|
#define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length"
|
||||||
|
#define OSSL_DRBG_PARAM_RANDOM_DATA "random_data"
|
||||||
|
#define OSSL_DRBG_PARAM_SIZE "size"
|
||||||
|
|
||||||
|
/* PKEY parameters */
|
||||||
|
/* Common PKEY parameters */
|
||||||
|
#define OSSL_PKEY_PARAM_BITS "bits" /* integer */
|
||||||
|
#define OSSL_PKEY_PARAM_MAX_SIZE "max-size" /* integer */
|
||||||
|
#define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" /* integer */
|
||||||
|
#define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST
|
||||||
|
#define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */
|
||||||
|
#define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE /* utf8 string */
|
||||||
|
#define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
|
||||||
|
#define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" /* utf8 string */
|
||||||
|
#define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" /* utf8 string */
|
||||||
|
#define OSSL_PKEY_PARAM_PAD_MODE "pad-mode"
|
||||||
|
#define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size"
|
||||||
|
#define OSSL_PKEY_PARAM_MASKGENFUNC "mgf"
|
||||||
|
#define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest"
|
||||||
|
#define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties"
|
||||||
|
#define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key"
|
||||||
|
#define OSSL_PKEY_PARAM_GROUP_NAME "group"
|
||||||
|
#define OSSL_PKEY_PARAM_DIST_ID "distid"
|
||||||
|
#define OSSL_PKEY_PARAM_PUB_KEY "pub"
|
||||||
|
#define OSSL_PKEY_PARAM_PRIV_KEY "priv"
|
||||||
|
|
||||||
|
/* Diffie-Hellman/DSA Parameters */
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_P "p"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_G "g"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_Q "q"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_GINDEX "gindex"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_SEED "seed"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_COFACTOR "j"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_H "hindex"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy"
|
||||||
|
|
||||||
|
/* Diffie-Hellman params */
|
||||||
|
#define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator"
|
||||||
|
#define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len"
|
||||||
|
|
||||||
|
/* Elliptic Curve Domain Parameters */
|
||||||
|
#define OSSL_PKEY_PARAM_EC_PUB_X "qx"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_PUB_Y "qy"
|
||||||
|
|
||||||
|
/* Elliptic Curve Explicit Domain Parameters */
|
||||||
|
#define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_P "p"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_A "a"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_B "b"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_GENERATOR "generator"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_ORDER "order"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_SEED "seed"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_CHAR2_M "m"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit"
|
||||||
|
|
||||||
|
/* Elliptic Curve Key Parameters */
|
||||||
|
#define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag"
|
||||||
|
#define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH \
|
||||||
|
OSSL_PKEY_PARAM_USE_COFACTOR_FLAG
|
||||||
|
|
||||||
|
/* RSA Keys */
|
||||||
|
/*
|
||||||
|
* n, e, d are the usual public and private key components
|
||||||
|
*
|
||||||
|
* rsa-num is the number of factors, including p and q
|
||||||
|
* rsa-factor is used for each factor: p, q, r_i (i = 3, ...)
|
||||||
|
* rsa-exponent is used for each exponent: dP, dQ, d_i (i = 3, ...)
|
||||||
|
* rsa-coefficient is used for each coefficient: qInv, t_i (i = 3, ...)
|
||||||
|
*
|
||||||
|
* The number of rsa-factor items must be equal to the number of rsa-exponent
|
||||||
|
* items, and the number of rsa-coefficients must be one less.
|
||||||
|
* (the base i for the coefficients is 2, not 1, at least as implied by
|
||||||
|
* RFC 8017)
|
||||||
|
*/
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_N "n"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_E "e"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_D "d"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_FACTOR1 OSSL_PKEY_PARAM_RSA_FACTOR"1"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_FACTOR2 OSSL_PKEY_PARAM_RSA_FACTOR"2"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_FACTOR3 OSSL_PKEY_PARAM_RSA_FACTOR"3"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_FACTOR4 OSSL_PKEY_PARAM_RSA_FACTOR"4"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_FACTOR5 OSSL_PKEY_PARAM_RSA_FACTOR"5"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_FACTOR6 OSSL_PKEY_PARAM_RSA_FACTOR"6"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_FACTOR7 OSSL_PKEY_PARAM_RSA_FACTOR"7"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_FACTOR8 OSSL_PKEY_PARAM_RSA_FACTOR"8"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_FACTOR9 OSSL_PKEY_PARAM_RSA_FACTOR"9"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_FACTOR10 OSSL_PKEY_PARAM_RSA_FACTOR"10"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_EXPONENT1 OSSL_PKEY_PARAM_RSA_EXPONENT"1"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_EXPONENT2 OSSL_PKEY_PARAM_RSA_EXPONENT"2"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_EXPONENT3 OSSL_PKEY_PARAM_RSA_EXPONENT"3"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_EXPONENT4 OSSL_PKEY_PARAM_RSA_EXPONENT"4"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_EXPONENT5 OSSL_PKEY_PARAM_RSA_EXPONENT"5"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_EXPONENT6 OSSL_PKEY_PARAM_RSA_EXPONENT"6"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_EXPONENT7 OSSL_PKEY_PARAM_RSA_EXPONENT"7"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_EXPONENT8 OSSL_PKEY_PARAM_RSA_EXPONENT"8"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_EXPONENT9 OSSL_PKEY_PARAM_RSA_EXPONENT"9"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_EXPONENT10 OSSL_PKEY_PARAM_RSA_EXPONENT"10"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 OSSL_PKEY_PARAM_RSA_COEFFICIENT"1"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 OSSL_PKEY_PARAM_RSA_COEFFICIENT"2"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 OSSL_PKEY_PARAM_RSA_COEFFICIENT"3"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 OSSL_PKEY_PARAM_RSA_COEFFICIENT"4"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 OSSL_PKEY_PARAM_RSA_COEFFICIENT"5"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 OSSL_PKEY_PARAM_RSA_COEFFICIENT"6"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 OSSL_PKEY_PARAM_RSA_COEFFICIENT"7"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 OSSL_PKEY_PARAM_RSA_COEFFICIENT"8"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 OSSL_PKEY_PARAM_RSA_COEFFICIENT"9"
|
||||||
|
|
||||||
|
/* RSA padding modes */
|
||||||
|
#define OSSL_PKEY_RSA_PAD_MODE_NONE "none"
|
||||||
|
#define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1"
|
||||||
|
#define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep"
|
||||||
|
#define OSSL_PKEY_RSA_PAD_MODE_X931 "x931"
|
||||||
|
#define OSSL_PKEY_RSA_PAD_MODE_PSS "pss"
|
||||||
|
|
||||||
|
/* RSA pss padding salt length */
|
||||||
|
#define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest"
|
||||||
|
#define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max"
|
||||||
|
#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto"
|
||||||
|
#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax"
|
||||||
|
|
||||||
|
/* Key generation parameters */
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_PRIMES "primes"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen"
|
||||||
|
|
||||||
|
/* Key generation parameters */
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_TYPE "type"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_PBITS "pbits"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_QBITS "qbits"
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST
|
||||||
|
#define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES
|
||||||
|
|
||||||
|
#define OSSL_PKEY_PARAM_EC_ENCODING "encoding" /* utf8_string */
|
||||||
|
#define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check"
|
||||||
|
#define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public"
|
||||||
|
|
||||||
|
/* OSSL_PKEY_PARAM_EC_ENCODING values */
|
||||||
|
#define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit"
|
||||||
|
#define OSSL_PKEY_EC_ENCODING_GROUP "named_curve"
|
||||||
|
|
||||||
|
#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed"
|
||||||
|
#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed"
|
||||||
|
#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid"
|
||||||
|
|
||||||
|
#define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default"
|
||||||
|
#define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named"
|
||||||
|
#define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist"
|
||||||
|
|
||||||
|
/* Key Exchange parameters */
|
||||||
|
#define OSSL_EXCHANGE_PARAM_PAD "pad" /* uint */
|
||||||
|
#define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" /* int */
|
||||||
|
#define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" /* utf8_string */
|
||||||
|
#define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" /* utf8_string */
|
||||||
|
#define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" /* utf8_string */
|
||||||
|
#define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" /* size_t */
|
||||||
|
/* The following parameter is an octet_string on set and an octet_ptr on get */
|
||||||
|
#define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm"
|
||||||
|
|
||||||
|
/* Signature parameters */
|
||||||
|
#define OSSL_SIGNATURE_PARAM_ALGORITHM_ID "algorithm-id"
|
||||||
|
#define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE
|
||||||
|
#define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST
|
||||||
|
#define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES
|
||||||
|
#define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen"
|
||||||
|
#define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST
|
||||||
|
#define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES \
|
||||||
|
OSSL_PKEY_PARAM_MGF1_PROPERTIES
|
||||||
|
#define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE
|
||||||
|
|
||||||
|
/* Asym cipher parameters */
|
||||||
|
#define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST
|
||||||
|
#define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES
|
||||||
|
#define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE
|
||||||
|
#define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE
|
||||||
|
#define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST \
|
||||||
|
OSSL_PKEY_PARAM_MGF1_DIGEST
|
||||||
|
#define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS \
|
||||||
|
OSSL_PKEY_PARAM_MGF1_PROPERTIES
|
||||||
|
#define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST
|
||||||
|
#define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props"
|
||||||
|
/* The following parameter is an octet_string on set and an octet_ptr on get */
|
||||||
|
#define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label"
|
||||||
|
#define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version"
|
||||||
|
#define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Encoder / decoder parameters
|
||||||
|
*/
|
||||||
|
#define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
|
||||||
|
#define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
|
||||||
|
/* Currently PVK only, but reusable for others as needed */
|
||||||
|
#define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level"
|
||||||
|
#define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" /* integer */
|
||||||
|
|
||||||
|
#define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
|
||||||
|
|
||||||
|
/* Passphrase callback parameters */
|
||||||
|
#define OSSL_PASSPHRASE_PARAM_INFO "info"
|
||||||
|
|
||||||
|
/* Keygen callback parameters, from provider to libcrypto */
|
||||||
|
#define OSSL_GEN_PARAM_POTENTIAL "potential" /* integer */
|
||||||
|
#define OSSL_GEN_PARAM_ITERATION "iteration" /* integer */
|
||||||
|
|
||||||
|
/* ACVP Test parameters : These should not be used normally */
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_TEST_XP "xp"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1"
|
||||||
|
#define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2"
|
||||||
|
#define OSSL_SIGNATURE_PARAM_KAT "kat"
|
||||||
|
|
||||||
|
/* KEM parameters */
|
||||||
|
#define OSSL_KEM_PARAM_OPERATION "operation"
|
||||||
|
|
||||||
|
/* OSSL_KEM_PARAM_OPERATION values */
|
||||||
|
#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE"
|
||||||
|
|
||||||
|
/* Capabilities */
|
||||||
|
|
||||||
|
/* TLS-GROUP Capability */
|
||||||
|
#define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name"
|
||||||
|
#define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal"
|
||||||
|
#define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id"
|
||||||
|
#define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg"
|
||||||
|
#define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits"
|
||||||
|
#define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem"
|
||||||
|
#define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls"
|
||||||
|
#define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls"
|
||||||
|
#define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls"
|
||||||
|
#define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls"
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* storemgmt parameters
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Used by storemgmt_ctx_set_params():
|
||||||
|
*
|
||||||
|
* - OSSL_STORE_PARAM_EXPECT is an INTEGER, and the value is any of the
|
||||||
|
* OSSL_STORE_INFO numbers. This is used to set the expected type of
|
||||||
|
* object loaded.
|
||||||
|
*
|
||||||
|
* - OSSL_STORE_PARAM_SUBJECT, OSSL_STORE_PARAM_ISSUER,
|
||||||
|
* OSSL_STORE_PARAM_SERIAL, OSSL_STORE_PARAM_FINGERPRINT,
|
||||||
|
* OSSL_STORE_PARAM_DIGEST, OSSL_STORE_PARAM_ALIAS
|
||||||
|
* are used as search criteria.
|
||||||
|
* (OSSL_STORE_PARAM_DIGEST is used with OSSL_STORE_PARAM_FINGERPRINT)
|
||||||
|
*/
|
||||||
|
#define OSSL_STORE_PARAM_EXPECT "expect" /* INTEGER */
|
||||||
|
#define OSSL_STORE_PARAM_SUBJECT "subject" /* DER blob => OCTET_STRING */
|
||||||
|
#define OSSL_STORE_PARAM_ISSUER "name" /* DER blob => OCTET_STRING */
|
||||||
|
#define OSSL_STORE_PARAM_SERIAL "serial" /* INTEGER */
|
||||||
|
#define OSSL_STORE_PARAM_DIGEST "digest" /* UTF8_STRING */
|
||||||
|
#define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" /* OCTET_STRING */
|
||||||
|
#define OSSL_STORE_PARAM_ALIAS "alias" /* UTF8_STRING */
|
||||||
|
|
||||||
|
/* You may want to pass properties for the provider implementation to use */
|
||||||
|
#define OSSL_STORE_PARAM_PROPERTIES "properties" /* utf8_string */
|
||||||
|
/* OSSL_DECODER input type if a decoder is used by the store */
|
||||||
|
#define OSSL_STORE_PARAM_INPUT_TYPE "input-type" /* UTF8_STRING */
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
41
src/openssl/core_object.h
Normal file
41
src/openssl/core_object.h
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CORE_OBJECT_H
|
||||||
|
# define OPENSSL_CORE_OBJECT_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Known object types
|
||||||
|
*
|
||||||
|
* These numbers are used as values for the OSSL_PARAM parameter
|
||||||
|
* OSSL_OBJECT_PARAM_TYPE.
|
||||||
|
*
|
||||||
|
* For most of these types, there's a corresponding libcrypto object type.
|
||||||
|
* The corresponding type is indicated with a comment after the number.
|
||||||
|
*/
|
||||||
|
# define OSSL_OBJECT_UNKNOWN 0
|
||||||
|
# define OSSL_OBJECT_NAME 1 /* char * */
|
||||||
|
# define OSSL_OBJECT_PKEY 2 /* EVP_PKEY * */
|
||||||
|
# define OSSL_OBJECT_CERT 3 /* X509 * */
|
||||||
|
# define OSSL_OBJECT_CRL 4 /* X509_CRL * */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The rest of the associated OSSL_PARAM elements is described in core_names.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
180
src/openssl/crmf.h.in
Normal file
180
src/openssl/crmf.h.in
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
/*-
|
||||||
|
* {- join("\n * ", @autowarntext) -}
|
||||||
|
*
|
||||||
|
* Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
* Copyright Nokia 2007-2019
|
||||||
|
* Copyright Siemens AG 2015-2019
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*
|
||||||
|
* CRMF (RFC 4211) implementation by M. Peylo, M. Viljanen, and D. von Oheimb.
|
||||||
|
*/
|
||||||
|
|
||||||
|
{-
|
||||||
|
use OpenSSL::stackhash qw(generate_stack_macros);
|
||||||
|
-}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CRMF_H
|
||||||
|
# define OPENSSL_CRMF_H
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_CRMF
|
||||||
|
# include <openssl/opensslv.h>
|
||||||
|
# include <openssl/safestack.h>
|
||||||
|
# include <openssl/crmferr.h>
|
||||||
|
# include <openssl/x509v3.h> /* for GENERAL_NAME etc. */
|
||||||
|
|
||||||
|
/* explicit #includes not strictly needed since implied by the above: */
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# include <openssl/x509.h>
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define OSSL_CRMF_POPOPRIVKEY_THISMESSAGE 0
|
||||||
|
# define OSSL_CRMF_POPOPRIVKEY_SUBSEQUENTMESSAGE 1
|
||||||
|
# define OSSL_CRMF_POPOPRIVKEY_DHMAC 2
|
||||||
|
# define OSSL_CRMF_POPOPRIVKEY_AGREEMAC 3
|
||||||
|
# define OSSL_CRMF_POPOPRIVKEY_ENCRYPTEDKEY 4
|
||||||
|
|
||||||
|
# define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0
|
||||||
|
# define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1
|
||||||
|
|
||||||
|
typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE;
|
||||||
|
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE)
|
||||||
|
typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG;
|
||||||
|
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG)
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG)
|
||||||
|
{-
|
||||||
|
generate_stack_macros("OSSL_CRMF_MSG");
|
||||||
|
-}
|
||||||
|
typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE;
|
||||||
|
typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER;
|
||||||
|
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER)
|
||||||
|
typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY;
|
||||||
|
typedef struct ossl_crmf_certrequest_st OSSL_CRMF_CERTREQUEST;
|
||||||
|
typedef struct ossl_crmf_certid_st OSSL_CRMF_CERTID;
|
||||||
|
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTID)
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTID)
|
||||||
|
{-
|
||||||
|
generate_stack_macros("OSSL_CRMF_CERTID");
|
||||||
|
-}
|
||||||
|
|
||||||
|
typedef struct ossl_crmf_pkipublicationinfo_st OSSL_CRMF_PKIPUBLICATIONINFO;
|
||||||
|
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PKIPUBLICATIONINFO)
|
||||||
|
typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO;
|
||||||
|
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO)
|
||||||
|
typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE;
|
||||||
|
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE)
|
||||||
|
typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS;
|
||||||
|
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS)
|
||||||
|
|
||||||
|
typedef struct ossl_crmf_optionalvalidity_st OSSL_CRMF_OPTIONALVALIDITY;
|
||||||
|
|
||||||
|
/* crmf_pbm.c */
|
||||||
|
OSSL_CRMF_PBMPARAMETER *OSSL_CRMF_pbmp_new(OSSL_LIB_CTX *libctx, size_t slen,
|
||||||
|
int owfnid, size_t itercnt,
|
||||||
|
int macnid);
|
||||||
|
int OSSL_CRMF_pbm_new(OSSL_LIB_CTX *libctx, const char *propq,
|
||||||
|
const OSSL_CRMF_PBMPARAMETER *pbmp,
|
||||||
|
const unsigned char *msg, size_t msglen,
|
||||||
|
const unsigned char *sec, size_t seclen,
|
||||||
|
unsigned char **mac, size_t *maclen);
|
||||||
|
|
||||||
|
/* crmf_lib.c */
|
||||||
|
int OSSL_CRMF_MSG_set1_regCtrl_regToken(OSSL_CRMF_MSG *msg,
|
||||||
|
const ASN1_UTF8STRING *tok);
|
||||||
|
ASN1_UTF8STRING
|
||||||
|
*OSSL_CRMF_MSG_get0_regCtrl_regToken(const OSSL_CRMF_MSG *msg);
|
||||||
|
int OSSL_CRMF_MSG_set1_regCtrl_authenticator(OSSL_CRMF_MSG *msg,
|
||||||
|
const ASN1_UTF8STRING *auth);
|
||||||
|
ASN1_UTF8STRING
|
||||||
|
*OSSL_CRMF_MSG_get0_regCtrl_authenticator(const OSSL_CRMF_MSG *msg);
|
||||||
|
int
|
||||||
|
OSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo(OSSL_CRMF_PKIPUBLICATIONINFO *pi,
|
||||||
|
OSSL_CRMF_SINGLEPUBINFO *spi);
|
||||||
|
# define OSSL_CRMF_PUB_METHOD_DONTCARE 0
|
||||||
|
# define OSSL_CRMF_PUB_METHOD_X500 1
|
||||||
|
# define OSSL_CRMF_PUB_METHOD_WEB 2
|
||||||
|
# define OSSL_CRMF_PUB_METHOD_LDAP 3
|
||||||
|
int OSSL_CRMF_MSG_set0_SinglePubInfo(OSSL_CRMF_SINGLEPUBINFO *spi,
|
||||||
|
int method, GENERAL_NAME *nm);
|
||||||
|
# define OSSL_CRMF_PUB_ACTION_DONTPUBLISH 0
|
||||||
|
# define OSSL_CRMF_PUB_ACTION_PLEASEPUBLISH 1
|
||||||
|
int OSSL_CRMF_MSG_set_PKIPublicationInfo_action(OSSL_CRMF_PKIPUBLICATIONINFO *pi,
|
||||||
|
int action);
|
||||||
|
int OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo(OSSL_CRMF_MSG *msg,
|
||||||
|
const OSSL_CRMF_PKIPUBLICATIONINFO *pi);
|
||||||
|
OSSL_CRMF_PKIPUBLICATIONINFO
|
||||||
|
*OSSL_CRMF_MSG_get0_regCtrl_pkiPublicationInfo(const OSSL_CRMF_MSG *msg);
|
||||||
|
int OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey(OSSL_CRMF_MSG *msg,
|
||||||
|
const X509_PUBKEY *pubkey);
|
||||||
|
X509_PUBKEY
|
||||||
|
*OSSL_CRMF_MSG_get0_regCtrl_protocolEncrKey(const OSSL_CRMF_MSG *msg);
|
||||||
|
int OSSL_CRMF_MSG_set1_regCtrl_oldCertID(OSSL_CRMF_MSG *msg,
|
||||||
|
const OSSL_CRMF_CERTID *cid);
|
||||||
|
OSSL_CRMF_CERTID
|
||||||
|
*OSSL_CRMF_MSG_get0_regCtrl_oldCertID(const OSSL_CRMF_MSG *msg);
|
||||||
|
OSSL_CRMF_CERTID *OSSL_CRMF_CERTID_gen(const X509_NAME *issuer,
|
||||||
|
const ASN1_INTEGER *serial);
|
||||||
|
|
||||||
|
int OSSL_CRMF_MSG_set1_regInfo_utf8Pairs(OSSL_CRMF_MSG *msg,
|
||||||
|
const ASN1_UTF8STRING *utf8pairs);
|
||||||
|
ASN1_UTF8STRING
|
||||||
|
*OSSL_CRMF_MSG_get0_regInfo_utf8Pairs(const OSSL_CRMF_MSG *msg);
|
||||||
|
int OSSL_CRMF_MSG_set1_regInfo_certReq(OSSL_CRMF_MSG *msg,
|
||||||
|
const OSSL_CRMF_CERTREQUEST *cr);
|
||||||
|
OSSL_CRMF_CERTREQUEST
|
||||||
|
*OSSL_CRMF_MSG_get0_regInfo_certReq(const OSSL_CRMF_MSG *msg);
|
||||||
|
|
||||||
|
int OSSL_CRMF_MSG_set0_validity(OSSL_CRMF_MSG *crm,
|
||||||
|
ASN1_TIME *notBefore, ASN1_TIME *notAfter);
|
||||||
|
int OSSL_CRMF_MSG_set_certReqId(OSSL_CRMF_MSG *crm, int rid);
|
||||||
|
int OSSL_CRMF_MSG_get_certReqId(const OSSL_CRMF_MSG *crm);
|
||||||
|
int OSSL_CRMF_MSG_set0_extensions(OSSL_CRMF_MSG *crm, X509_EXTENSIONS *exts);
|
||||||
|
|
||||||
|
int OSSL_CRMF_MSG_push0_extension(OSSL_CRMF_MSG *crm, X509_EXTENSION *ext);
|
||||||
|
# define OSSL_CRMF_POPO_NONE -1
|
||||||
|
# define OSSL_CRMF_POPO_RAVERIFIED 0
|
||||||
|
# define OSSL_CRMF_POPO_SIGNATURE 1
|
||||||
|
# define OSSL_CRMF_POPO_KEYENC 2
|
||||||
|
# define OSSL_CRMF_POPO_KEYAGREE 3
|
||||||
|
int OSSL_CRMF_MSG_create_popo(int meth, OSSL_CRMF_MSG *crm,
|
||||||
|
EVP_PKEY *pkey, const EVP_MD *digest,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs,
|
||||||
|
int rid, int acceptRAVerified,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm);
|
||||||
|
const ASN1_INTEGER
|
||||||
|
*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||||
|
const X509_NAME
|
||||||
|
*OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||||
|
const X509_NAME
|
||||||
|
*OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||||
|
X509_EXTENSIONS
|
||||||
|
*OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||||
|
const X509_NAME
|
||||||
|
*OSSL_CRMF_CERTID_get0_issuer(const OSSL_CRMF_CERTID *cid);
|
||||||
|
const ASN1_INTEGER
|
||||||
|
*OSSL_CRMF_CERTID_get0_serialNumber(const OSSL_CRMF_CERTID *cid);
|
||||||
|
int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl,
|
||||||
|
EVP_PKEY *pubkey,
|
||||||
|
const X509_NAME *subject,
|
||||||
|
const X509_NAME *issuer,
|
||||||
|
const ASN1_INTEGER *serial);
|
||||||
|
X509
|
||||||
|
*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq,
|
||||||
|
EVP_PKEY *pkey);
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif /* !defined(OPENSSL_NO_CRMF) */
|
||||||
|
#endif /* !defined(OPENSSL_CRMF_H) */
|
||||||
50
src/openssl/crmferr.h
Normal file
50
src/openssl/crmferr.h
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CRMFERR_H
|
||||||
|
# define OPENSSL_CRMFERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_CRMF
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CRMF reason codes.
|
||||||
|
*/
|
||||||
|
# define CRMF_R_BAD_PBM_ITERATIONCOUNT 100
|
||||||
|
# define CRMF_R_CRMFERROR 102
|
||||||
|
# define CRMF_R_ERROR 103
|
||||||
|
# define CRMF_R_ERROR_DECODING_CERTIFICATE 104
|
||||||
|
# define CRMF_R_ERROR_DECRYPTING_CERTIFICATE 105
|
||||||
|
# define CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY 106
|
||||||
|
# define CRMF_R_FAILURE_OBTAINING_RANDOM 107
|
||||||
|
# define CRMF_R_ITERATIONCOUNT_BELOW_100 108
|
||||||
|
# define CRMF_R_MALFORMED_IV 101
|
||||||
|
# define CRMF_R_NULL_ARGUMENT 109
|
||||||
|
# define CRMF_R_POPOSKINPUT_NOT_SUPPORTED 113
|
||||||
|
# define CRMF_R_POPO_INCONSISTENT_PUBLIC_KEY 117
|
||||||
|
# define CRMF_R_POPO_MISSING 121
|
||||||
|
# define CRMF_R_POPO_MISSING_PUBLIC_KEY 118
|
||||||
|
# define CRMF_R_POPO_MISSING_SUBJECT 119
|
||||||
|
# define CRMF_R_POPO_RAVERIFIED_NOT_ACCEPTED 120
|
||||||
|
# define CRMF_R_SETTING_MAC_ALGOR_FAILURE 110
|
||||||
|
# define CRMF_R_SETTING_OWF_ALGOR_FAILURE 111
|
||||||
|
# define CRMF_R_UNSUPPORTED_ALGORITHM 112
|
||||||
|
# define CRMF_R_UNSUPPORTED_CIPHER 114
|
||||||
|
# define CRMF_R_UNSUPPORTED_METHOD_FOR_CREATING_POPO 115
|
||||||
|
# define CRMF_R_UNSUPPORTED_POPO_METHOD 116
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
535
src/openssl/crypto.h.in
Normal file
535
src/openssl/crypto.h.in
Normal file
@@ -0,0 +1,535 @@
|
|||||||
|
/*
|
||||||
|
* {- join("\n * ", @autowarntext) -}
|
||||||
|
*
|
||||||
|
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
{-
|
||||||
|
use OpenSSL::stackhash qw(generate_stack_macros);
|
||||||
|
-}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CRYPTO_H
|
||||||
|
# define OPENSSL_CRYPTO_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_CRYPTO_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <stdlib.h>
|
||||||
|
# include <time.h>
|
||||||
|
|
||||||
|
# include <openssl/e_os2.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
# include <stdio.h>
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/safestack.h>
|
||||||
|
# include <openssl/opensslv.h>
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/cryptoerr.h>
|
||||||
|
# include <openssl/core.h>
|
||||||
|
|
||||||
|
# ifdef CHARSET_EBCDIC
|
||||||
|
# include <openssl/ebcdic.h>
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Resolve problems on some operating systems with symbol names that clash
|
||||||
|
* one way or another
|
||||||
|
*/
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# include <openssl/opensslv.h>
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# define SSLeay OpenSSL_version_num
|
||||||
|
# define SSLeay_version OpenSSL_version
|
||||||
|
# define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER
|
||||||
|
# define SSLEAY_VERSION OPENSSL_VERSION
|
||||||
|
# define SSLEAY_CFLAGS OPENSSL_CFLAGS
|
||||||
|
# define SSLEAY_BUILT_ON OPENSSL_BUILT_ON
|
||||||
|
# define SSLEAY_PLATFORM OPENSSL_PLATFORM
|
||||||
|
# define SSLEAY_DIR OPENSSL_DIR
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Old type for allocating dynamic locks. No longer used. Use the new thread
|
||||||
|
* API instead.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
int dummy;
|
||||||
|
} CRYPTO_dynlock;
|
||||||
|
|
||||||
|
# endif /* OPENSSL_NO_DEPRECATED_1_1_0 */
|
||||||
|
|
||||||
|
typedef void CRYPTO_RWLOCK;
|
||||||
|
|
||||||
|
CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void);
|
||||||
|
__owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock);
|
||||||
|
__owur int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock);
|
||||||
|
int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock);
|
||||||
|
void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock);
|
||||||
|
|
||||||
|
int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock);
|
||||||
|
int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret,
|
||||||
|
CRYPTO_RWLOCK *lock);
|
||||||
|
int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock);
|
||||||
|
|
||||||
|
/* No longer needed, so this is a no-op */
|
||||||
|
#define OPENSSL_malloc_init() while(0) continue
|
||||||
|
|
||||||
|
# define OPENSSL_malloc(num) \
|
||||||
|
CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_zalloc(num) \
|
||||||
|
CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_realloc(addr, num) \
|
||||||
|
CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_clear_realloc(addr, old_num, num) \
|
||||||
|
CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_clear_free(addr, num) \
|
||||||
|
CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_free(addr) \
|
||||||
|
CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_memdup(str, s) \
|
||||||
|
CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_strdup(str) \
|
||||||
|
CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_strndup(str, n) \
|
||||||
|
CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_secure_malloc(num) \
|
||||||
|
CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_secure_zalloc(num) \
|
||||||
|
CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_secure_free(addr) \
|
||||||
|
CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_secure_clear_free(addr, num) \
|
||||||
|
CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_secure_actual_size(ptr) \
|
||||||
|
CRYPTO_secure_actual_size(ptr)
|
||||||
|
|
||||||
|
size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz);
|
||||||
|
size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz);
|
||||||
|
size_t OPENSSL_strnlen(const char *str, size_t maxlen);
|
||||||
|
int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength,
|
||||||
|
const unsigned char *buf, size_t buflen,
|
||||||
|
const char sep);
|
||||||
|
char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen);
|
||||||
|
int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen,
|
||||||
|
const char *str, const char sep);
|
||||||
|
unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen);
|
||||||
|
int OPENSSL_hexchar2int(unsigned char c);
|
||||||
|
int OPENSSL_strcasecmp(const char *s1, const char *s2);
|
||||||
|
int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n);
|
||||||
|
|
||||||
|
# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These functions return the values of OPENSSL_VERSION_MAJOR,
|
||||||
|
* OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH, OPENSSL_VERSION_PRE_RELEASE
|
||||||
|
* and OPENSSL_VERSION_BUILD_METADATA, respectively.
|
||||||
|
*/
|
||||||
|
unsigned int OPENSSL_version_major(void);
|
||||||
|
unsigned int OPENSSL_version_minor(void);
|
||||||
|
unsigned int OPENSSL_version_patch(void);
|
||||||
|
const char *OPENSSL_version_pre_release(void);
|
||||||
|
const char *OPENSSL_version_build_metadata(void);
|
||||||
|
|
||||||
|
unsigned long OpenSSL_version_num(void);
|
||||||
|
const char *OpenSSL_version(int type);
|
||||||
|
# define OPENSSL_VERSION 0
|
||||||
|
# define OPENSSL_CFLAGS 1
|
||||||
|
# define OPENSSL_BUILT_ON 2
|
||||||
|
# define OPENSSL_PLATFORM 3
|
||||||
|
# define OPENSSL_DIR 4
|
||||||
|
# define OPENSSL_ENGINES_DIR 5
|
||||||
|
# define OPENSSL_VERSION_STRING 6
|
||||||
|
# define OPENSSL_FULL_VERSION_STRING 7
|
||||||
|
# define OPENSSL_MODULES_DIR 8
|
||||||
|
# define OPENSSL_CPU_INFO 9
|
||||||
|
|
||||||
|
const char *OPENSSL_info(int type);
|
||||||
|
/*
|
||||||
|
* The series starts at 1001 to avoid confusion with the OpenSSL_version
|
||||||
|
* types.
|
||||||
|
*/
|
||||||
|
# define OPENSSL_INFO_CONFIG_DIR 1001
|
||||||
|
# define OPENSSL_INFO_ENGINES_DIR 1002
|
||||||
|
# define OPENSSL_INFO_MODULES_DIR 1003
|
||||||
|
# define OPENSSL_INFO_DSO_EXTENSION 1004
|
||||||
|
# define OPENSSL_INFO_DIR_FILENAME_SEPARATOR 1005
|
||||||
|
# define OPENSSL_INFO_LIST_SEPARATOR 1006
|
||||||
|
# define OPENSSL_INFO_SEED_SOURCE 1007
|
||||||
|
# define OPENSSL_INFO_CPU_SETTINGS 1008
|
||||||
|
|
||||||
|
int OPENSSL_issetugid(void);
|
||||||
|
|
||||||
|
struct crypto_ex_data_st {
|
||||||
|
OSSL_LIB_CTX *ctx;
|
||||||
|
STACK_OF(void) *sk;
|
||||||
|
};
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("void");
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Per class, we have a STACK of function pointers.
|
||||||
|
*/
|
||||||
|
# define CRYPTO_EX_INDEX_SSL 0
|
||||||
|
# define CRYPTO_EX_INDEX_SSL_CTX 1
|
||||||
|
# define CRYPTO_EX_INDEX_SSL_SESSION 2
|
||||||
|
# define CRYPTO_EX_INDEX_X509 3
|
||||||
|
# define CRYPTO_EX_INDEX_X509_STORE 4
|
||||||
|
# define CRYPTO_EX_INDEX_X509_STORE_CTX 5
|
||||||
|
# define CRYPTO_EX_INDEX_DH 6
|
||||||
|
# define CRYPTO_EX_INDEX_DSA 7
|
||||||
|
# define CRYPTO_EX_INDEX_EC_KEY 8
|
||||||
|
# define CRYPTO_EX_INDEX_RSA 9
|
||||||
|
# define CRYPTO_EX_INDEX_ENGINE 10
|
||||||
|
# define CRYPTO_EX_INDEX_UI 11
|
||||||
|
# define CRYPTO_EX_INDEX_BIO 12
|
||||||
|
# define CRYPTO_EX_INDEX_APP 13
|
||||||
|
# define CRYPTO_EX_INDEX_UI_METHOD 14
|
||||||
|
# define CRYPTO_EX_INDEX_RAND_DRBG 15
|
||||||
|
# define CRYPTO_EX_INDEX_DRBG CRYPTO_EX_INDEX_RAND_DRBG
|
||||||
|
# define CRYPTO_EX_INDEX_OSSL_LIB_CTX 16
|
||||||
|
# define CRYPTO_EX_INDEX_EVP_PKEY 17
|
||||||
|
# define CRYPTO_EX_INDEX__COUNT 18
|
||||||
|
|
||||||
|
typedef void CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
|
||||||
|
int idx, long argl, void *argp);
|
||||||
|
typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
|
||||||
|
int idx, long argl, void *argp);
|
||||||
|
typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from,
|
||||||
|
void **from_d, int idx, long argl, void *argp);
|
||||||
|
__owur int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp,
|
||||||
|
CRYPTO_EX_new *new_func,
|
||||||
|
CRYPTO_EX_dup *dup_func,
|
||||||
|
CRYPTO_EX_free *free_func);
|
||||||
|
/* No longer use an index. */
|
||||||
|
int CRYPTO_free_ex_index(int class_index, int idx);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a
|
||||||
|
* given class (invokes whatever per-class callbacks are applicable)
|
||||||
|
*/
|
||||||
|
int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
|
||||||
|
int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to,
|
||||||
|
const CRYPTO_EX_DATA *from);
|
||||||
|
|
||||||
|
void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
|
||||||
|
|
||||||
|
/* Allocate a single item in the CRYPTO_EX_DATA variable */
|
||||||
|
int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad,
|
||||||
|
int idx);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular
|
||||||
|
* index (relative to the class type involved)
|
||||||
|
*/
|
||||||
|
int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val);
|
||||||
|
void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx);
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
/*
|
||||||
|
* This function cleans up all "ex_data" state. It mustn't be called under
|
||||||
|
* potential race-conditions.
|
||||||
|
*/
|
||||||
|
# define CRYPTO_cleanup_all_ex_data() while(0) continue
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The old locking functions have been removed completely without compatibility
|
||||||
|
* macros. This is because the old functions either could not properly report
|
||||||
|
* errors, or the returned error values were not clearly documented.
|
||||||
|
* Replacing the locking functions with no-ops would cause race condition
|
||||||
|
* issues in the affected applications. It is far better for them to fail at
|
||||||
|
* compile time.
|
||||||
|
* On the other hand, the locking callbacks are no longer used. Consequently,
|
||||||
|
* the callback management functions can be safely replaced with no-op macros.
|
||||||
|
*/
|
||||||
|
# define CRYPTO_num_locks() (1)
|
||||||
|
# define CRYPTO_set_locking_callback(func)
|
||||||
|
# define CRYPTO_get_locking_callback() (NULL)
|
||||||
|
# define CRYPTO_set_add_lock_callback(func)
|
||||||
|
# define CRYPTO_get_add_lock_callback() (NULL)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These defines where used in combination with the old locking callbacks,
|
||||||
|
* they are not called anymore, but old code that's not called might still
|
||||||
|
* use them.
|
||||||
|
*/
|
||||||
|
# define CRYPTO_LOCK 1
|
||||||
|
# define CRYPTO_UNLOCK 2
|
||||||
|
# define CRYPTO_READ 4
|
||||||
|
# define CRYPTO_WRITE 8
|
||||||
|
|
||||||
|
/* This structure is no longer used */
|
||||||
|
typedef struct crypto_threadid_st {
|
||||||
|
int dummy;
|
||||||
|
} CRYPTO_THREADID;
|
||||||
|
/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */
|
||||||
|
# define CRYPTO_THREADID_set_numeric(id, val)
|
||||||
|
# define CRYPTO_THREADID_set_pointer(id, ptr)
|
||||||
|
# define CRYPTO_THREADID_set_callback(threadid_func) (0)
|
||||||
|
# define CRYPTO_THREADID_get_callback() (NULL)
|
||||||
|
# define CRYPTO_THREADID_current(id)
|
||||||
|
# define CRYPTO_THREADID_cmp(a, b) (-1)
|
||||||
|
# define CRYPTO_THREADID_cpy(dest, src)
|
||||||
|
# define CRYPTO_THREADID_hash(id) (0UL)
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_0_0
|
||||||
|
# define CRYPTO_set_id_callback(func)
|
||||||
|
# define CRYPTO_get_id_callback() (NULL)
|
||||||
|
# define CRYPTO_thread_id() (0UL)
|
||||||
|
# endif /* OPENSSL_NO_DEPRECATED_1_0_0 */
|
||||||
|
|
||||||
|
# define CRYPTO_set_dynlock_create_callback(dyn_create_function)
|
||||||
|
# define CRYPTO_set_dynlock_lock_callback(dyn_lock_function)
|
||||||
|
# define CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function)
|
||||||
|
# define CRYPTO_get_dynlock_create_callback() (NULL)
|
||||||
|
# define CRYPTO_get_dynlock_lock_callback() (NULL)
|
||||||
|
# define CRYPTO_get_dynlock_destroy_callback() (NULL)
|
||||||
|
# endif /* OPENSSL_NO_DEPRECATED_1_1_0 */
|
||||||
|
|
||||||
|
typedef void *(*CRYPTO_malloc_fn)(size_t num, const char *file, int line);
|
||||||
|
typedef void *(*CRYPTO_realloc_fn)(void *addr, size_t num, const char *file,
|
||||||
|
int line);
|
||||||
|
typedef void (*CRYPTO_free_fn)(void *addr, const char *file, int line);
|
||||||
|
int CRYPTO_set_mem_functions(CRYPTO_malloc_fn malloc_fn,
|
||||||
|
CRYPTO_realloc_fn realloc_fn,
|
||||||
|
CRYPTO_free_fn free_fn);
|
||||||
|
void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn,
|
||||||
|
CRYPTO_realloc_fn *realloc_fn,
|
||||||
|
CRYPTO_free_fn *free_fn);
|
||||||
|
|
||||||
|
OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line);
|
||||||
|
OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line);
|
||||||
|
OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line);
|
||||||
|
OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line);
|
||||||
|
OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line);
|
||||||
|
void CRYPTO_free(void *ptr, const char *file, int line);
|
||||||
|
void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line);
|
||||||
|
void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line);
|
||||||
|
void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num,
|
||||||
|
const char *file, int line);
|
||||||
|
|
||||||
|
int CRYPTO_secure_malloc_init(size_t sz, size_t minsize);
|
||||||
|
int CRYPTO_secure_malloc_done(void);
|
||||||
|
OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line);
|
||||||
|
OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line);
|
||||||
|
void CRYPTO_secure_free(void *ptr, const char *file, int line);
|
||||||
|
void CRYPTO_secure_clear_free(void *ptr, size_t num,
|
||||||
|
const char *file, int line);
|
||||||
|
int CRYPTO_secure_allocated(const void *ptr);
|
||||||
|
int CRYPTO_secure_malloc_initialized(void);
|
||||||
|
size_t CRYPTO_secure_actual_size(void *ptr);
|
||||||
|
size_t CRYPTO_secure_used(void);
|
||||||
|
|
||||||
|
void OPENSSL_cleanse(void *ptr, size_t len);
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_CRYPTO_MDEBUG
|
||||||
|
/*
|
||||||
|
* The following can be used to detect memory leaks in the library. If
|
||||||
|
* used, it turns on malloc checking
|
||||||
|
*/
|
||||||
|
# define CRYPTO_MEM_CHECK_OFF 0x0 /* Control only */
|
||||||
|
# define CRYPTO_MEM_CHECK_ON 0x1 /* Control and mode bit */
|
||||||
|
# define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */
|
||||||
|
# define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */
|
||||||
|
|
||||||
|
void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define OPENSSL_mem_debug_push(info) \
|
||||||
|
CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE)
|
||||||
|
# define OPENSSL_mem_debug_pop() \
|
||||||
|
CRYPTO_mem_debug_pop()
|
||||||
|
# endif
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int CRYPTO_set_mem_debug(int flag);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_ctrl(int mode);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_push(const char *info,
|
||||||
|
const char *file, int line);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_pop(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_malloc(void *addr, size_t num,
|
||||||
|
int flag,
|
||||||
|
const char *file, int line);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_realloc(void *addr1, void *addr2,
|
||||||
|
size_t num, int flag,
|
||||||
|
const char *file, int line);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_free(void *addr, int flag,
|
||||||
|
const char *file, int line);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int CRYPTO_mem_leaks_cb(int (*cb)(const char *str, size_t len, void *u),
|
||||||
|
void *u);
|
||||||
|
# endif
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks_fp(FILE *);
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks(BIO *bio);
|
||||||
|
# endif
|
||||||
|
# endif /* OPENSSL_NO_CRYPTO_MDEBUG */
|
||||||
|
|
||||||
|
/* die if we have to */
|
||||||
|
ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# define OpenSSLDie(f,l,a) OPENSSL_die((a),(f),(l))
|
||||||
|
# endif
|
||||||
|
# define OPENSSL_assert(e) \
|
||||||
|
(void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1))
|
||||||
|
|
||||||
|
int OPENSSL_isservice(void);
|
||||||
|
|
||||||
|
void OPENSSL_init(void);
|
||||||
|
# ifdef OPENSSL_SYS_UNIX
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_prepare(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_parent(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_child(void);
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result);
|
||||||
|
int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec);
|
||||||
|
int OPENSSL_gmtime_diff(int *pday, int *psec,
|
||||||
|
const struct tm *from, const struct tm *to);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal.
|
||||||
|
* It takes an amount of time dependent on |len|, but independent of the
|
||||||
|
* contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements
|
||||||
|
* into a defined order as the return value when a != b is undefined, other
|
||||||
|
* than to be non-zero.
|
||||||
|
*/
|
||||||
|
int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len);
|
||||||
|
|
||||||
|
/* Standard initialisation options */
|
||||||
|
# define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L
|
||||||
|
# define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L
|
||||||
|
# define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L
|
||||||
|
# define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L
|
||||||
|
# define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L
|
||||||
|
# define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L
|
||||||
|
# define OPENSSL_INIT_LOAD_CONFIG 0x00000040L
|
||||||
|
# define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L
|
||||||
|
# define OPENSSL_INIT_ASYNC 0x00000100L
|
||||||
|
# define OPENSSL_INIT_ENGINE_RDRAND 0x00000200L
|
||||||
|
# define OPENSSL_INIT_ENGINE_DYNAMIC 0x00000400L
|
||||||
|
# define OPENSSL_INIT_ENGINE_OPENSSL 0x00000800L
|
||||||
|
# define OPENSSL_INIT_ENGINE_CRYPTODEV 0x00001000L
|
||||||
|
# define OPENSSL_INIT_ENGINE_CAPI 0x00002000L
|
||||||
|
# define OPENSSL_INIT_ENGINE_PADLOCK 0x00004000L
|
||||||
|
# define OPENSSL_INIT_ENGINE_AFALG 0x00008000L
|
||||||
|
/* FREE: 0x00010000L */
|
||||||
|
# define OPENSSL_INIT_ATFORK 0x00020000L
|
||||||
|
/* OPENSSL_INIT_BASE_ONLY 0x00040000L */
|
||||||
|
# define OPENSSL_INIT_NO_ATEXIT 0x00080000L
|
||||||
|
/* OPENSSL_INIT flag range 0x03f00000 reserved for OPENSSL_init_ssl() */
|
||||||
|
/* FREE: 0x04000000L */
|
||||||
|
/* FREE: 0x08000000L */
|
||||||
|
/* FREE: 0x10000000L */
|
||||||
|
/* FREE: 0x20000000L */
|
||||||
|
/* FREE: 0x40000000L */
|
||||||
|
/* FREE: 0x80000000L */
|
||||||
|
/* Max OPENSSL_INIT flag value is 0x80000000 */
|
||||||
|
|
||||||
|
/* openssl and dasync not counted as builtin */
|
||||||
|
# define OPENSSL_INIT_ENGINE_ALL_BUILTIN \
|
||||||
|
(OPENSSL_INIT_ENGINE_RDRAND | OPENSSL_INIT_ENGINE_DYNAMIC \
|
||||||
|
| OPENSSL_INIT_ENGINE_CRYPTODEV | OPENSSL_INIT_ENGINE_CAPI | \
|
||||||
|
OPENSSL_INIT_ENGINE_PADLOCK)
|
||||||
|
|
||||||
|
/* Library initialisation functions */
|
||||||
|
void OPENSSL_cleanup(void);
|
||||||
|
int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
|
||||||
|
int OPENSSL_atexit(void (*handler)(void));
|
||||||
|
void OPENSSL_thread_stop(void);
|
||||||
|
void OPENSSL_thread_stop_ex(OSSL_LIB_CTX *ctx);
|
||||||
|
|
||||||
|
/* Low-level control of initialization */
|
||||||
|
OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void);
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
|
||||||
|
const char *config_filename);
|
||||||
|
void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings,
|
||||||
|
unsigned long flags);
|
||||||
|
int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings,
|
||||||
|
const char *config_appname);
|
||||||
|
# endif
|
||||||
|
void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings);
|
||||||
|
|
||||||
|
# if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG)
|
||||||
|
# if defined(_WIN32)
|
||||||
|
# if defined(BASETYPES) || defined(_WINDEF_H)
|
||||||
|
/* application has to include <windows.h> in order to use this */
|
||||||
|
typedef DWORD CRYPTO_THREAD_LOCAL;
|
||||||
|
typedef DWORD CRYPTO_THREAD_ID;
|
||||||
|
|
||||||
|
typedef LONG CRYPTO_ONCE;
|
||||||
|
# define CRYPTO_ONCE_STATIC_INIT 0
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
# if defined(__TANDEM) && defined(_SPT_MODEL_)
|
||||||
|
# define SPT_THREAD_SIGNAL 1
|
||||||
|
# define SPT_THREAD_AWARE 1
|
||||||
|
# include <spthread.h>
|
||||||
|
# else
|
||||||
|
# include <pthread.h>
|
||||||
|
# endif
|
||||||
|
typedef pthread_once_t CRYPTO_ONCE;
|
||||||
|
typedef pthread_key_t CRYPTO_THREAD_LOCAL;
|
||||||
|
typedef pthread_t CRYPTO_THREAD_ID;
|
||||||
|
|
||||||
|
# define CRYPTO_ONCE_STATIC_INIT PTHREAD_ONCE_INIT
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if !defined(CRYPTO_ONCE_STATIC_INIT)
|
||||||
|
typedef unsigned int CRYPTO_ONCE;
|
||||||
|
typedef unsigned int CRYPTO_THREAD_LOCAL;
|
||||||
|
typedef unsigned int CRYPTO_THREAD_ID;
|
||||||
|
# define CRYPTO_ONCE_STATIC_INIT 0
|
||||||
|
# endif
|
||||||
|
|
||||||
|
int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void));
|
||||||
|
|
||||||
|
int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *));
|
||||||
|
void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key);
|
||||||
|
int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val);
|
||||||
|
int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key);
|
||||||
|
|
||||||
|
CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void);
|
||||||
|
int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b);
|
||||||
|
|
||||||
|
OSSL_LIB_CTX *OSSL_LIB_CTX_new(void);
|
||||||
|
OSSL_LIB_CTX *OSSL_LIB_CTX_new_from_dispatch(const OSSL_CORE_HANDLE *handle,
|
||||||
|
const OSSL_DISPATCH *in);
|
||||||
|
OSSL_LIB_CTX *OSSL_LIB_CTX_new_child(const OSSL_CORE_HANDLE *handle,
|
||||||
|
const OSSL_DISPATCH *in);
|
||||||
|
int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file);
|
||||||
|
void OSSL_LIB_CTX_free(OSSL_LIB_CTX *);
|
||||||
|
OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void);
|
||||||
|
OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx);
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
55
src/openssl/cryptoerr.h
Normal file
55
src/openssl/cryptoerr.h
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CRYPTOERR_H
|
||||||
|
# define OPENSSL_CRYPTOERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CRYPTO reason codes.
|
||||||
|
*/
|
||||||
|
# define CRYPTO_R_BAD_ALGORITHM_NAME 117
|
||||||
|
# define CRYPTO_R_CONFLICTING_NAMES 118
|
||||||
|
# define CRYPTO_R_HEX_STRING_TOO_SHORT 121
|
||||||
|
# define CRYPTO_R_ILLEGAL_HEX_DIGIT 102
|
||||||
|
# define CRYPTO_R_INSUFFICIENT_DATA_SPACE 106
|
||||||
|
# define CRYPTO_R_INSUFFICIENT_PARAM_SIZE 107
|
||||||
|
# define CRYPTO_R_INSUFFICIENT_SECURE_DATA_SPACE 108
|
||||||
|
# define CRYPTO_R_INTEGER_OVERFLOW 127
|
||||||
|
# define CRYPTO_R_INVALID_NEGATIVE_VALUE 122
|
||||||
|
# define CRYPTO_R_INVALID_NULL_ARGUMENT 109
|
||||||
|
# define CRYPTO_R_INVALID_OSSL_PARAM_TYPE 110
|
||||||
|
# define CRYPTO_R_NO_PARAMS_TO_MERGE 131
|
||||||
|
# define CRYPTO_R_NO_SPACE_FOR_TERMINATING_NULL 128
|
||||||
|
# define CRYPTO_R_ODD_NUMBER_OF_DIGITS 103
|
||||||
|
# define CRYPTO_R_PARAM_CANNOT_BE_REPRESENTED_EXACTLY 123
|
||||||
|
# define CRYPTO_R_PARAM_NOT_INTEGER_TYPE 124
|
||||||
|
# define CRYPTO_R_PARAM_OF_INCOMPATIBLE_TYPE 129
|
||||||
|
# define CRYPTO_R_PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED 125
|
||||||
|
# define CRYPTO_R_PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT 130
|
||||||
|
# define CRYPTO_R_PARAM_VALUE_TOO_LARGE_FOR_DESTINATION 126
|
||||||
|
# define CRYPTO_R_PROVIDER_ALREADY_EXISTS 104
|
||||||
|
# define CRYPTO_R_PROVIDER_SECTION_ERROR 105
|
||||||
|
# define CRYPTO_R_RANDOM_SECTION_ERROR 119
|
||||||
|
# define CRYPTO_R_SECURE_MALLOC_FAILURE 111
|
||||||
|
# define CRYPTO_R_STRING_TOO_LONG 112
|
||||||
|
# define CRYPTO_R_TOO_MANY_BYTES 113
|
||||||
|
# define CRYPTO_R_TOO_MANY_RECORDS 114
|
||||||
|
# define CRYPTO_R_TOO_SMALL_BUFFER 116
|
||||||
|
# define CRYPTO_R_UNKNOWN_NAME_IN_RANDOM_SECTION 120
|
||||||
|
# define CRYPTO_R_ZERO_LENGTH_NUMBER 115
|
||||||
|
|
||||||
|
#endif
|
||||||
1466
src/openssl/cryptoerr_legacy.h
Normal file
1466
src/openssl/cryptoerr_legacy.h
Normal file
File diff suppressed because it is too large
Load Diff
525
src/openssl/ct.h.in
Normal file
525
src/openssl/ct.h.in
Normal file
@@ -0,0 +1,525 @@
|
|||||||
|
/*
|
||||||
|
* {- join("\n * ", @autowarntext) -}
|
||||||
|
*
|
||||||
|
* Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
{-
|
||||||
|
use OpenSSL::stackhash qw(generate_stack_macros);
|
||||||
|
-}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CT_H
|
||||||
|
# define OPENSSL_CT_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_CT_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_CT
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# include <openssl/safestack.h>
|
||||||
|
# include <openssl/x509.h>
|
||||||
|
# include <openssl/cterr.h>
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Minimum RSA key size, from RFC6962 */
|
||||||
|
# define SCT_MIN_RSA_BITS 2048
|
||||||
|
|
||||||
|
/* All hashes are SHA256 in v1 of Certificate Transparency */
|
||||||
|
# define CT_V1_HASHLEN SHA256_DIGEST_LENGTH
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("SCT")
|
||||||
|
.generate_stack_macros("CTLOG");
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
CT_LOG_ENTRY_TYPE_NOT_SET = -1,
|
||||||
|
CT_LOG_ENTRY_TYPE_X509 = 0,
|
||||||
|
CT_LOG_ENTRY_TYPE_PRECERT = 1
|
||||||
|
} ct_log_entry_type_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SCT_VERSION_NOT_SET = -1,
|
||||||
|
SCT_VERSION_V1 = 0
|
||||||
|
} sct_version_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SCT_SOURCE_UNKNOWN,
|
||||||
|
SCT_SOURCE_TLS_EXTENSION,
|
||||||
|
SCT_SOURCE_X509V3_EXTENSION,
|
||||||
|
SCT_SOURCE_OCSP_STAPLED_RESPONSE
|
||||||
|
} sct_source_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SCT_VALIDATION_STATUS_NOT_SET,
|
||||||
|
SCT_VALIDATION_STATUS_UNKNOWN_LOG,
|
||||||
|
SCT_VALIDATION_STATUS_VALID,
|
||||||
|
SCT_VALIDATION_STATUS_INVALID,
|
||||||
|
SCT_VALIDATION_STATUS_UNVERIFIED,
|
||||||
|
SCT_VALIDATION_STATUS_UNKNOWN_VERSION
|
||||||
|
} sct_validation_status_t;
|
||||||
|
|
||||||
|
/******************************************
|
||||||
|
* CT policy evaluation context functions *
|
||||||
|
******************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates a new, empty policy evaluation context associated with the given
|
||||||
|
* library context and property query string.
|
||||||
|
* The caller is responsible for calling CT_POLICY_EVAL_CTX_free when finished
|
||||||
|
* with the CT_POLICY_EVAL_CTX.
|
||||||
|
*/
|
||||||
|
CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx,
|
||||||
|
const char *propq);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The same as CT_POLICY_EVAL_CTX_new_ex() but the default library
|
||||||
|
* context and property query string is used.
|
||||||
|
*/
|
||||||
|
CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new(void);
|
||||||
|
|
||||||
|
/* Deletes a policy evaluation context and anything it owns. */
|
||||||
|
void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx);
|
||||||
|
|
||||||
|
/* Gets the peer certificate that the SCTs are for */
|
||||||
|
X509* CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sets the certificate associated with the received SCTs.
|
||||||
|
* Increments the reference count of cert.
|
||||||
|
* Returns 1 on success, 0 otherwise.
|
||||||
|
*/
|
||||||
|
int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert);
|
||||||
|
|
||||||
|
/* Gets the issuer of the aforementioned certificate */
|
||||||
|
X509* CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sets the issuer of the certificate associated with the received SCTs.
|
||||||
|
* Increments the reference count of issuer.
|
||||||
|
* Returns 1 on success, 0 otherwise.
|
||||||
|
*/
|
||||||
|
int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer);
|
||||||
|
|
||||||
|
/* Gets the CT logs that are trusted sources of SCTs */
|
||||||
|
const CTLOG_STORE *CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx);
|
||||||
|
|
||||||
|
/* Sets the log store that is in use. It must outlive the CT_POLICY_EVAL_CTX. */
|
||||||
|
void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx,
|
||||||
|
CTLOG_STORE *log_store);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Gets the time, in milliseconds since the Unix epoch, that will be used as the
|
||||||
|
* current time when checking whether an SCT was issued in the future.
|
||||||
|
* Such SCTs will fail validation, as required by RFC6962.
|
||||||
|
*/
|
||||||
|
uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sets the time to evaluate SCTs against, in milliseconds since the Unix epoch.
|
||||||
|
* If an SCT's timestamp is after this time, it will be interpreted as having
|
||||||
|
* been issued in the future. RFC6962 states that "TLS clients MUST reject SCTs
|
||||||
|
* whose timestamp is in the future", so an SCT will not validate in this case.
|
||||||
|
*/
|
||||||
|
void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms);
|
||||||
|
|
||||||
|
/*****************
|
||||||
|
* SCT functions *
|
||||||
|
*****************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates a new, blank SCT.
|
||||||
|
* The caller is responsible for calling SCT_free when finished with the SCT.
|
||||||
|
*/
|
||||||
|
SCT *SCT_new(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates a new SCT from some base64-encoded strings.
|
||||||
|
* The caller is responsible for calling SCT_free when finished with the SCT.
|
||||||
|
*/
|
||||||
|
SCT *SCT_new_from_base64(unsigned char version,
|
||||||
|
const char *logid_base64,
|
||||||
|
ct_log_entry_type_t entry_type,
|
||||||
|
uint64_t timestamp,
|
||||||
|
const char *extensions_base64,
|
||||||
|
const char *signature_base64);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Frees the SCT and the underlying data structures.
|
||||||
|
*/
|
||||||
|
void SCT_free(SCT *sct);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Free a stack of SCTs, and the underlying SCTs themselves.
|
||||||
|
* Intended to be compatible with X509V3_EXT_FREE.
|
||||||
|
*/
|
||||||
|
void SCT_LIST_free(STACK_OF(SCT) *a);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the version of the SCT.
|
||||||
|
*/
|
||||||
|
sct_version_t SCT_get_version(const SCT *sct);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the version of an SCT.
|
||||||
|
* Returns 1 on success, 0 if the version is unrecognized.
|
||||||
|
*/
|
||||||
|
__owur int SCT_set_version(SCT *sct, sct_version_t version);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the log entry type of the SCT.
|
||||||
|
*/
|
||||||
|
ct_log_entry_type_t SCT_get_log_entry_type(const SCT *sct);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the log entry type of an SCT.
|
||||||
|
* Returns 1 on success, 0 otherwise.
|
||||||
|
*/
|
||||||
|
__owur int SCT_set_log_entry_type(SCT *sct, ct_log_entry_type_t entry_type);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Gets the ID of the log that an SCT came from.
|
||||||
|
* Ownership of the log ID remains with the SCT.
|
||||||
|
* Returns the length of the log ID.
|
||||||
|
*/
|
||||||
|
size_t SCT_get0_log_id(const SCT *sct, unsigned char **log_id);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the log ID of an SCT to point directly to the *log_id specified.
|
||||||
|
* The SCT takes ownership of the specified pointer.
|
||||||
|
* Returns 1 on success, 0 otherwise.
|
||||||
|
*/
|
||||||
|
__owur int SCT_set0_log_id(SCT *sct, unsigned char *log_id, size_t log_id_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the log ID of an SCT.
|
||||||
|
* This makes a copy of the log_id.
|
||||||
|
* Returns 1 on success, 0 otherwise.
|
||||||
|
*/
|
||||||
|
__owur int SCT_set1_log_id(SCT *sct, const unsigned char *log_id,
|
||||||
|
size_t log_id_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the timestamp for the SCT (epoch time in milliseconds).
|
||||||
|
*/
|
||||||
|
uint64_t SCT_get_timestamp(const SCT *sct);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the timestamp of an SCT (epoch time in milliseconds).
|
||||||
|
*/
|
||||||
|
void SCT_set_timestamp(SCT *sct, uint64_t timestamp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return the NID for the signature used by the SCT.
|
||||||
|
* For CT v1, this will be either NID_sha256WithRSAEncryption or
|
||||||
|
* NID_ecdsa_with_SHA256 (or NID_undef if incorrect/unset).
|
||||||
|
*/
|
||||||
|
int SCT_get_signature_nid(const SCT *sct);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the signature type of an SCT
|
||||||
|
* For CT v1, this should be either NID_sha256WithRSAEncryption or
|
||||||
|
* NID_ecdsa_with_SHA256.
|
||||||
|
* Returns 1 on success, 0 otherwise.
|
||||||
|
*/
|
||||||
|
__owur int SCT_set_signature_nid(SCT *sct, int nid);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set *ext to point to the extension data for the SCT. ext must not be NULL.
|
||||||
|
* The SCT retains ownership of this pointer.
|
||||||
|
* Returns length of the data pointed to.
|
||||||
|
*/
|
||||||
|
size_t SCT_get0_extensions(const SCT *sct, unsigned char **ext);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the extensions of an SCT to point directly to the *ext specified.
|
||||||
|
* The SCT takes ownership of the specified pointer.
|
||||||
|
*/
|
||||||
|
void SCT_set0_extensions(SCT *sct, unsigned char *ext, size_t ext_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the extensions of an SCT.
|
||||||
|
* This takes a copy of the ext.
|
||||||
|
* Returns 1 on success, 0 otherwise.
|
||||||
|
*/
|
||||||
|
__owur int SCT_set1_extensions(SCT *sct, const unsigned char *ext,
|
||||||
|
size_t ext_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set *sig to point to the signature for the SCT. sig must not be NULL.
|
||||||
|
* The SCT retains ownership of this pointer.
|
||||||
|
* Returns length of the data pointed to.
|
||||||
|
*/
|
||||||
|
size_t SCT_get0_signature(const SCT *sct, unsigned char **sig);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the signature of an SCT to point directly to the *sig specified.
|
||||||
|
* The SCT takes ownership of the specified pointer.
|
||||||
|
*/
|
||||||
|
void SCT_set0_signature(SCT *sct, unsigned char *sig, size_t sig_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the signature of an SCT to be a copy of the *sig specified.
|
||||||
|
* Returns 1 on success, 0 otherwise.
|
||||||
|
*/
|
||||||
|
__owur int SCT_set1_signature(SCT *sct, const unsigned char *sig,
|
||||||
|
size_t sig_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The origin of this SCT, e.g. TLS extension, OCSP response, etc.
|
||||||
|
*/
|
||||||
|
sct_source_t SCT_get_source(const SCT *sct);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the origin of this SCT, e.g. TLS extension, OCSP response, etc.
|
||||||
|
* Returns 1 on success, 0 otherwise.
|
||||||
|
*/
|
||||||
|
__owur int SCT_set_source(SCT *sct, sct_source_t source);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns a text string describing the validation status of |sct|.
|
||||||
|
*/
|
||||||
|
const char *SCT_validation_status_string(const SCT *sct);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pretty-prints an |sct| to |out|.
|
||||||
|
* It will be indented by the number of spaces specified by |indent|.
|
||||||
|
* If |logs| is not NULL, it will be used to lookup the CT log that the SCT came
|
||||||
|
* from, so that the log name can be printed.
|
||||||
|
*/
|
||||||
|
void SCT_print(const SCT *sct, BIO *out, int indent, const CTLOG_STORE *logs);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pretty-prints an |sct_list| to |out|.
|
||||||
|
* It will be indented by the number of spaces specified by |indent|.
|
||||||
|
* SCTs will be delimited by |separator|.
|
||||||
|
* If |logs| is not NULL, it will be used to lookup the CT log that each SCT
|
||||||
|
* came from, so that the log names can be printed.
|
||||||
|
*/
|
||||||
|
void SCT_LIST_print(const STACK_OF(SCT) *sct_list, BIO *out, int indent,
|
||||||
|
const char *separator, const CTLOG_STORE *logs);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Gets the last result of validating this SCT.
|
||||||
|
* If it has not been validated yet, returns SCT_VALIDATION_STATUS_NOT_SET.
|
||||||
|
*/
|
||||||
|
sct_validation_status_t SCT_get_validation_status(const SCT *sct);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Validates the given SCT with the provided context.
|
||||||
|
* Sets the "validation_status" field of the SCT.
|
||||||
|
* Returns 1 if the SCT is valid and the signature verifies.
|
||||||
|
* Returns 0 if the SCT is invalid or could not be verified.
|
||||||
|
* Returns -1 if an error occurs.
|
||||||
|
*/
|
||||||
|
__owur int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Validates the given list of SCTs with the provided context.
|
||||||
|
* Sets the "validation_status" field of each SCT.
|
||||||
|
* Returns 1 if there are no invalid SCTs and all signatures verify.
|
||||||
|
* Returns 0 if at least one SCT is invalid or could not be verified.
|
||||||
|
* Returns a negative integer if an error occurs.
|
||||||
|
*/
|
||||||
|
__owur int SCT_LIST_validate(const STACK_OF(SCT) *scts,
|
||||||
|
CT_POLICY_EVAL_CTX *ctx);
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************
|
||||||
|
* SCT parsing and serialization *
|
||||||
|
*********************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Serialize (to TLS format) a stack of SCTs and return the length.
|
||||||
|
* "a" must not be NULL.
|
||||||
|
* If "pp" is NULL, just return the length of what would have been serialized.
|
||||||
|
* If "pp" is not NULL and "*pp" is null, function will allocate a new pointer
|
||||||
|
* for data that caller is responsible for freeing (only if function returns
|
||||||
|
* successfully).
|
||||||
|
* If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring
|
||||||
|
* that "*pp" is large enough to accept all of the serialized data.
|
||||||
|
* Returns < 0 on error, >= 0 indicating bytes written (or would have been)
|
||||||
|
* on success.
|
||||||
|
*/
|
||||||
|
__owur int i2o_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert TLS format SCT list to a stack of SCTs.
|
||||||
|
* If "a" or "*a" is NULL, a new stack will be created that the caller is
|
||||||
|
* responsible for freeing (by calling SCT_LIST_free).
|
||||||
|
* "**pp" and "*pp" must not be NULL.
|
||||||
|
* Upon success, "*pp" will point to after the last bytes read, and a stack
|
||||||
|
* will be returned.
|
||||||
|
* Upon failure, a NULL pointer will be returned, and the position of "*pp" is
|
||||||
|
* not defined.
|
||||||
|
*/
|
||||||
|
STACK_OF(SCT) *o2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp,
|
||||||
|
size_t len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Serialize (to DER format) a stack of SCTs and return the length.
|
||||||
|
* "a" must not be NULL.
|
||||||
|
* If "pp" is NULL, just returns the length of what would have been serialized.
|
||||||
|
* If "pp" is not NULL and "*pp" is null, function will allocate a new pointer
|
||||||
|
* for data that caller is responsible for freeing (only if function returns
|
||||||
|
* successfully).
|
||||||
|
* If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring
|
||||||
|
* that "*pp" is large enough to accept all of the serialized data.
|
||||||
|
* Returns < 0 on error, >= 0 indicating bytes written (or would have been)
|
||||||
|
* on success.
|
||||||
|
*/
|
||||||
|
__owur int i2d_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Parses an SCT list in DER format and returns it.
|
||||||
|
* If "a" or "*a" is NULL, a new stack will be created that the caller is
|
||||||
|
* responsible for freeing (by calling SCT_LIST_free).
|
||||||
|
* "**pp" and "*pp" must not be NULL.
|
||||||
|
* Upon success, "*pp" will point to after the last bytes read, and a stack
|
||||||
|
* will be returned.
|
||||||
|
* Upon failure, a NULL pointer will be returned, and the position of "*pp" is
|
||||||
|
* not defined.
|
||||||
|
*/
|
||||||
|
STACK_OF(SCT) *d2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp,
|
||||||
|
long len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Serialize (to TLS format) an |sct| and write it to |out|.
|
||||||
|
* If |out| is null, no SCT will be output but the length will still be returned.
|
||||||
|
* If |out| points to a null pointer, a string will be allocated to hold the
|
||||||
|
* TLS-format SCT. It is the responsibility of the caller to free it.
|
||||||
|
* If |out| points to an allocated string, the TLS-format SCT will be written
|
||||||
|
* to it.
|
||||||
|
* The length of the SCT in TLS format will be returned.
|
||||||
|
*/
|
||||||
|
__owur int i2o_SCT(const SCT *sct, unsigned char **out);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Parses an SCT in TLS format and returns it.
|
||||||
|
* If |psct| is not null, it will end up pointing to the parsed SCT. If it
|
||||||
|
* already points to a non-null pointer, the pointer will be free'd.
|
||||||
|
* |in| should be a pointer to a string containing the TLS-format SCT.
|
||||||
|
* |in| will be advanced to the end of the SCT if parsing succeeds.
|
||||||
|
* |len| should be the length of the SCT in |in|.
|
||||||
|
* Returns NULL if an error occurs.
|
||||||
|
* If the SCT is an unsupported version, only the SCT's 'sct' and 'sct_len'
|
||||||
|
* fields will be populated (with |in| and |len| respectively).
|
||||||
|
*/
|
||||||
|
SCT *o2i_SCT(SCT **psct, const unsigned char **in, size_t len);
|
||||||
|
|
||||||
|
/********************
|
||||||
|
* CT log functions *
|
||||||
|
********************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates a new CT log instance with the given |public_key| and |name| and
|
||||||
|
* associates it with the give library context |libctx| and property query
|
||||||
|
* string |propq|.
|
||||||
|
* Takes ownership of |public_key| but copies |name|.
|
||||||
|
* Returns NULL if malloc fails or if |public_key| cannot be converted to DER.
|
||||||
|
* Should be deleted by the caller using CTLOG_free when no longer needed.
|
||||||
|
*/
|
||||||
|
CTLOG *CTLOG_new_ex(EVP_PKEY *public_key, const char *name, OSSL_LIB_CTX *libctx,
|
||||||
|
const char *propq);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The same as CTLOG_new_ex except that the default library context and
|
||||||
|
* property query string are used.
|
||||||
|
*/
|
||||||
|
CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER
|
||||||
|
* in |pkey_base64| and associated with the given library context |libctx| and
|
||||||
|
* property query string |propq|. The |name| is a string to help users identify
|
||||||
|
* this log.
|
||||||
|
* Returns 1 on success, 0 on failure.
|
||||||
|
* Should be deleted by the caller using CTLOG_free when no longer needed.
|
||||||
|
*/
|
||||||
|
int CTLOG_new_from_base64_ex(CTLOG **ct_log, const char *pkey_base64,
|
||||||
|
const char *name, OSSL_LIB_CTX *libctx,
|
||||||
|
const char *propq);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The same as CTLOG_new_from_base64_ex() except that the default
|
||||||
|
* library context and property query string are used.
|
||||||
|
* Returns 1 on success, 0 on failure.
|
||||||
|
*/
|
||||||
|
int CTLOG_new_from_base64(CTLOG ** ct_log,
|
||||||
|
const char *pkey_base64, const char *name);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Deletes a CT log instance and its fields.
|
||||||
|
*/
|
||||||
|
void CTLOG_free(CTLOG *log);
|
||||||
|
|
||||||
|
/* Gets the name of the CT log */
|
||||||
|
const char *CTLOG_get0_name(const CTLOG *log);
|
||||||
|
/* Gets the ID of the CT log */
|
||||||
|
void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id,
|
||||||
|
size_t *log_id_len);
|
||||||
|
/* Gets the public key of the CT log */
|
||||||
|
EVP_PKEY *CTLOG_get0_public_key(const CTLOG *log);
|
||||||
|
|
||||||
|
/**************************
|
||||||
|
* CT log store functions *
|
||||||
|
**************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates a new CT log store and associates it with the given libctx and
|
||||||
|
* property query string.
|
||||||
|
* Should be deleted by the caller using CTLOG_STORE_free when no longer needed.
|
||||||
|
*/
|
||||||
|
CTLOG_STORE *CTLOG_STORE_new_ex(OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Same as CTLOG_STORE_new_ex except that the default libctx and
|
||||||
|
* property query string are used.
|
||||||
|
* Should be deleted by the caller using CTLOG_STORE_free when no longer needed.
|
||||||
|
*/
|
||||||
|
CTLOG_STORE *CTLOG_STORE_new(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Deletes a CT log store and all of the CT log instances held within.
|
||||||
|
*/
|
||||||
|
void CTLOG_STORE_free(CTLOG_STORE *store);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Finds a CT log in the store based on its log ID.
|
||||||
|
* Returns the CT log, or NULL if no match is found.
|
||||||
|
*/
|
||||||
|
const CTLOG *CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store,
|
||||||
|
const uint8_t *log_id,
|
||||||
|
size_t log_id_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Loads a CT log list into a |store| from a |file|.
|
||||||
|
* Returns 1 if loading is successful, or 0 otherwise.
|
||||||
|
*/
|
||||||
|
__owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Loads the default CT log list into a |store|.
|
||||||
|
* Returns 1 if loading is successful, or 0 otherwise.
|
||||||
|
*/
|
||||||
|
__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store);
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
45
src/openssl/cterr.h
Normal file
45
src/openssl/cterr.h
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_CTERR_H
|
||||||
|
# define OPENSSL_CTERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_CT
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CT reason codes.
|
||||||
|
*/
|
||||||
|
# define CT_R_BASE64_DECODE_ERROR 108
|
||||||
|
# define CT_R_INVALID_LOG_ID_LENGTH 100
|
||||||
|
# define CT_R_LOG_CONF_INVALID 109
|
||||||
|
# define CT_R_LOG_CONF_INVALID_KEY 110
|
||||||
|
# define CT_R_LOG_CONF_MISSING_DESCRIPTION 111
|
||||||
|
# define CT_R_LOG_CONF_MISSING_KEY 112
|
||||||
|
# define CT_R_LOG_KEY_INVALID 113
|
||||||
|
# define CT_R_SCT_FUTURE_TIMESTAMP 116
|
||||||
|
# define CT_R_SCT_INVALID 104
|
||||||
|
# define CT_R_SCT_INVALID_SIGNATURE 107
|
||||||
|
# define CT_R_SCT_LIST_INVALID 105
|
||||||
|
# define CT_R_SCT_LOG_ID_MISMATCH 114
|
||||||
|
# define CT_R_SCT_NOT_SET 106
|
||||||
|
# define CT_R_SCT_UNSUPPORTED_VERSION 115
|
||||||
|
# define CT_R_UNRECOGNIZED_SIGNATURE_NID 101
|
||||||
|
# define CT_R_UNSUPPORTED_ENTRY_TYPE 102
|
||||||
|
# define CT_R_UNSUPPORTED_VERSION 103
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
133
src/openssl/decoder.h
Normal file
133
src/openssl/decoder.h
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_DECODER_H
|
||||||
|
# define OPENSSL_DECODER_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
# include <stdio.h>
|
||||||
|
# endif
|
||||||
|
# include <stdarg.h>
|
||||||
|
# include <stddef.h>
|
||||||
|
# include <openssl/decodererr.h>
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# include <openssl/core.h>
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
OSSL_DECODER *OSSL_DECODER_fetch(OSSL_LIB_CTX *libctx, const char *name,
|
||||||
|
const char *properties);
|
||||||
|
int OSSL_DECODER_up_ref(OSSL_DECODER *encoder);
|
||||||
|
void OSSL_DECODER_free(OSSL_DECODER *encoder);
|
||||||
|
|
||||||
|
const OSSL_PROVIDER *OSSL_DECODER_get0_provider(const OSSL_DECODER *encoder);
|
||||||
|
const char *OSSL_DECODER_get0_properties(const OSSL_DECODER *encoder);
|
||||||
|
const char *OSSL_DECODER_get0_name(const OSSL_DECODER *decoder);
|
||||||
|
const char *OSSL_DECODER_get0_description(const OSSL_DECODER *decoder);
|
||||||
|
int OSSL_DECODER_is_a(const OSSL_DECODER *encoder, const char *name);
|
||||||
|
|
||||||
|
void OSSL_DECODER_do_all_provided(OSSL_LIB_CTX *libctx,
|
||||||
|
void (*fn)(OSSL_DECODER *encoder, void *arg),
|
||||||
|
void *arg);
|
||||||
|
int OSSL_DECODER_names_do_all(const OSSL_DECODER *encoder,
|
||||||
|
void (*fn)(const char *name, void *data),
|
||||||
|
void *data);
|
||||||
|
const OSSL_PARAM *OSSL_DECODER_gettable_params(OSSL_DECODER *decoder);
|
||||||
|
int OSSL_DECODER_get_params(OSSL_DECODER *decoder, OSSL_PARAM params[]);
|
||||||
|
|
||||||
|
const OSSL_PARAM *OSSL_DECODER_settable_ctx_params(OSSL_DECODER *encoder);
|
||||||
|
OSSL_DECODER_CTX *OSSL_DECODER_CTX_new(void);
|
||||||
|
int OSSL_DECODER_CTX_set_params(OSSL_DECODER_CTX *ctx,
|
||||||
|
const OSSL_PARAM params[]);
|
||||||
|
void OSSL_DECODER_CTX_free(OSSL_DECODER_CTX *ctx);
|
||||||
|
|
||||||
|
/* Utilities that help set specific parameters */
|
||||||
|
int OSSL_DECODER_CTX_set_passphrase(OSSL_DECODER_CTX *ctx,
|
||||||
|
const unsigned char *kstr, size_t klen);
|
||||||
|
int OSSL_DECODER_CTX_set_pem_password_cb(OSSL_DECODER_CTX *ctx,
|
||||||
|
pem_password_cb *cb, void *cbarg);
|
||||||
|
int OSSL_DECODER_CTX_set_passphrase_cb(OSSL_DECODER_CTX *ctx,
|
||||||
|
OSSL_PASSPHRASE_CALLBACK *cb,
|
||||||
|
void *cbarg);
|
||||||
|
int OSSL_DECODER_CTX_set_passphrase_ui(OSSL_DECODER_CTX *ctx,
|
||||||
|
const UI_METHOD *ui_method,
|
||||||
|
void *ui_data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Utilities to read the object to decode, with the result sent to cb.
|
||||||
|
* These will discover all provided methods
|
||||||
|
*/
|
||||||
|
|
||||||
|
int OSSL_DECODER_CTX_set_selection(OSSL_DECODER_CTX *ctx, int selection);
|
||||||
|
int OSSL_DECODER_CTX_set_input_type(OSSL_DECODER_CTX *ctx,
|
||||||
|
const char *input_type);
|
||||||
|
int OSSL_DECODER_CTX_set_input_structure(OSSL_DECODER_CTX *ctx,
|
||||||
|
const char *input_structure);
|
||||||
|
int OSSL_DECODER_CTX_add_decoder(OSSL_DECODER_CTX *ctx, OSSL_DECODER *decoder);
|
||||||
|
int OSSL_DECODER_CTX_add_extra(OSSL_DECODER_CTX *ctx,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
int OSSL_DECODER_CTX_get_num_decoders(OSSL_DECODER_CTX *ctx);
|
||||||
|
|
||||||
|
typedef struct ossl_decoder_instance_st OSSL_DECODER_INSTANCE;
|
||||||
|
OSSL_DECODER *
|
||||||
|
OSSL_DECODER_INSTANCE_get_decoder(OSSL_DECODER_INSTANCE *decoder_inst);
|
||||||
|
void *
|
||||||
|
OSSL_DECODER_INSTANCE_get_decoder_ctx(OSSL_DECODER_INSTANCE *decoder_inst);
|
||||||
|
const char *
|
||||||
|
OSSL_DECODER_INSTANCE_get_input_type(OSSL_DECODER_INSTANCE *decoder_inst);
|
||||||
|
const char *
|
||||||
|
OSSL_DECODER_INSTANCE_get_input_structure(OSSL_DECODER_INSTANCE *decoder_inst,
|
||||||
|
int *was_set);
|
||||||
|
|
||||||
|
typedef int OSSL_DECODER_CONSTRUCT(OSSL_DECODER_INSTANCE *decoder_inst,
|
||||||
|
const OSSL_PARAM *params,
|
||||||
|
void *construct_data);
|
||||||
|
typedef void OSSL_DECODER_CLEANUP(void *construct_data);
|
||||||
|
|
||||||
|
int OSSL_DECODER_CTX_set_construct(OSSL_DECODER_CTX *ctx,
|
||||||
|
OSSL_DECODER_CONSTRUCT *construct);
|
||||||
|
int OSSL_DECODER_CTX_set_construct_data(OSSL_DECODER_CTX *ctx,
|
||||||
|
void *construct_data);
|
||||||
|
int OSSL_DECODER_CTX_set_cleanup(OSSL_DECODER_CTX *ctx,
|
||||||
|
OSSL_DECODER_CLEANUP *cleanup);
|
||||||
|
OSSL_DECODER_CONSTRUCT *OSSL_DECODER_CTX_get_construct(OSSL_DECODER_CTX *ctx);
|
||||||
|
void *OSSL_DECODER_CTX_get_construct_data(OSSL_DECODER_CTX *ctx);
|
||||||
|
OSSL_DECODER_CLEANUP *OSSL_DECODER_CTX_get_cleanup(OSSL_DECODER_CTX *ctx);
|
||||||
|
|
||||||
|
int OSSL_DECODER_export(OSSL_DECODER_INSTANCE *decoder_inst,
|
||||||
|
void *reference, size_t reference_sz,
|
||||||
|
OSSL_CALLBACK *export_cb, void *export_cbarg);
|
||||||
|
|
||||||
|
int OSSL_DECODER_from_bio(OSSL_DECODER_CTX *ctx, BIO *in);
|
||||||
|
#ifndef OPENSSL_NO_STDIO
|
||||||
|
int OSSL_DECODER_from_fp(OSSL_DECODER_CTX *ctx, FILE *in);
|
||||||
|
#endif
|
||||||
|
int OSSL_DECODER_from_data(OSSL_DECODER_CTX *ctx, const unsigned char **pdata,
|
||||||
|
size_t *pdata_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create the OSSL_DECODER_CTX with an associated type. This will perform
|
||||||
|
* an implicit OSSL_DECODER_fetch(), suitable for the object of that type.
|
||||||
|
*/
|
||||||
|
OSSL_DECODER_CTX *
|
||||||
|
OSSL_DECODER_CTX_new_for_pkey(EVP_PKEY **pkey,
|
||||||
|
const char *input_type,
|
||||||
|
const char *input_struct,
|
||||||
|
const char *keytype, int selection,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propquery);
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
28
src/openssl/decodererr.h
Normal file
28
src/openssl/decodererr.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_DECODERERR_H
|
||||||
|
# define OPENSSL_DECODERERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* OSSL_DECODER reason codes.
|
||||||
|
*/
|
||||||
|
# define OSSL_DECODER_R_COULD_NOT_DECODE_OBJECT 101
|
||||||
|
# define OSSL_DECODER_R_DECODER_NOT_FOUND 102
|
||||||
|
# define OSSL_DECODER_R_MISSING_GET_PARAMS 100
|
||||||
|
|
||||||
|
#endif
|
||||||
211
src/openssl/des.h
Normal file
211
src/openssl/des.h
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_DES_H
|
||||||
|
# define OPENSSL_DES_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_DES_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DES
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
# include <openssl/e_os2.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
typedef unsigned int DES_LONG;
|
||||||
|
|
||||||
|
# ifdef OPENSSL_BUILD_SHLIBCRYPTO
|
||||||
|
# undef OPENSSL_EXTERN
|
||||||
|
# define OPENSSL_EXTERN OPENSSL_EXPORT
|
||||||
|
# endif
|
||||||
|
|
||||||
|
typedef unsigned char DES_cblock[8];
|
||||||
|
typedef /* const */ unsigned char const_DES_cblock[8];
|
||||||
|
/*
|
||||||
|
* With "const", gcc 2.8.1 on Solaris thinks that DES_cblock * and
|
||||||
|
* const_DES_cblock * are incompatible pointer types.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct DES_ks {
|
||||||
|
union {
|
||||||
|
DES_cblock cblock;
|
||||||
|
/*
|
||||||
|
* make sure things are correct size on machines with 8 byte longs
|
||||||
|
*/
|
||||||
|
DES_LONG deslong[2];
|
||||||
|
} ks[16];
|
||||||
|
} DES_key_schedule;
|
||||||
|
|
||||||
|
# define DES_KEY_SZ (sizeof(DES_cblock))
|
||||||
|
# define DES_SCHEDULE_SZ (sizeof(DES_key_schedule))
|
||||||
|
|
||||||
|
# define DES_ENCRYPT 1
|
||||||
|
# define DES_DECRYPT 0
|
||||||
|
|
||||||
|
# define DES_CBC_MODE 0
|
||||||
|
# define DES_PCBC_MODE 1
|
||||||
|
|
||||||
|
# define DES_ecb2_encrypt(i,o,k1,k2,e) \
|
||||||
|
DES_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e))
|
||||||
|
|
||||||
|
# define DES_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \
|
||||||
|
DES_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e))
|
||||||
|
|
||||||
|
# define DES_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \
|
||||||
|
DES_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e))
|
||||||
|
|
||||||
|
# define DES_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \
|
||||||
|
DES_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n))
|
||||||
|
|
||||||
|
# define DES_fixup_key_parity DES_set_odd_parity
|
||||||
|
# endif
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const char *DES_options(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,
|
||||||
|
DES_key_schedule *ks1, DES_key_schedule *ks2,
|
||||||
|
DES_key_schedule *ks3, int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
DES_LONG DES_cbc_cksum(const unsigned char *input, DES_cblock *output,
|
||||||
|
long length, DES_key_schedule *schedule,
|
||||||
|
const_DES_cblock *ivec);
|
||||||
|
# endif
|
||||||
|
/* DES_cbc_encrypt does not update the IV! Use DES_ncbc_encrypt instead. */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_cbc_encrypt(const unsigned char *input, unsigned char *output,
|
||||||
|
long length, DES_key_schedule *schedule, DES_cblock *ivec,
|
||||||
|
int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output,
|
||||||
|
long length, DES_key_schedule *schedule, DES_cblock *ivec,
|
||||||
|
int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_xcbc_encrypt(const unsigned char *input, unsigned char *output,
|
||||||
|
long length, DES_key_schedule *schedule, DES_cblock *ivec,
|
||||||
|
const_DES_cblock *inw, const_DES_cblock *outw, int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
|
||||||
|
long length, DES_key_schedule *schedule, DES_cblock *ivec,
|
||||||
|
int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output,
|
||||||
|
DES_key_schedule *ks, int enc);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is the DES encryption function that gets called by just about every
|
||||||
|
* other DES routine in the library. You should not use this function except
|
||||||
|
* to implement 'modes' of DES. I say this because the functions that call
|
||||||
|
* this routine do the conversion from 'char *' to long, and this needs to be
|
||||||
|
* done to make sure 'non-aligned' memory access do not occur. The
|
||||||
|
* characters are loaded 'little endian'. Data is a pointer to 2 unsigned
|
||||||
|
* long's and ks is the DES_key_schedule to use. enc, is non zero specifies
|
||||||
|
* encryption, zero if decryption.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This functions is the same as DES_encrypt1() except that the DES initial
|
||||||
|
* permutation (IP) and final permutation (FP) have been left out. As for
|
||||||
|
* DES_encrypt1(), you should not use this function. It is used by the
|
||||||
|
* routines in the library that implement triple DES. IP() DES_encrypt2()
|
||||||
|
* DES_encrypt2() DES_encrypt2() FP() is the same as DES_encrypt1()
|
||||||
|
* DES_encrypt1() DES_encrypt1() except faster :-).
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1, DES_key_schedule *ks2,
|
||||||
|
DES_key_schedule *ks3);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1, DES_key_schedule *ks2,
|
||||||
|
DES_key_schedule *ks3);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_ede3_cbc_encrypt(const unsigned char *input, unsigned char *output,
|
||||||
|
long length, DES_key_schedule *ks1,
|
||||||
|
DES_key_schedule *ks2, DES_key_schedule *ks3,
|
||||||
|
DES_cblock *ivec, int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
long length, DES_key_schedule *ks1,
|
||||||
|
DES_key_schedule *ks2, DES_key_schedule *ks3,
|
||||||
|
DES_cblock *ivec, int *num, int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_ede3_cfb_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
int numbits, long length, DES_key_schedule *ks1,
|
||||||
|
DES_key_schedule *ks2, DES_key_schedule *ks3,
|
||||||
|
DES_cblock *ivec, int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_ede3_ofb64_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
long length, DES_key_schedule *ks1,
|
||||||
|
DES_key_schedule *ks2, DES_key_schedule *ks3,
|
||||||
|
DES_cblock *ivec, int *num);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
char *DES_fcrypt(const char *buf, const char *salt, char *ret);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
char *DES_crypt(const char *buf, const char *salt);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
|
||||||
|
long length, DES_key_schedule *schedule, DES_cblock *ivec);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output,
|
||||||
|
long length, DES_key_schedule *schedule,
|
||||||
|
DES_cblock *ivec, int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[],
|
||||||
|
long length, int out_count, DES_cblock *seed);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DES_random_key(DES_cblock *ret);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DES_set_odd_parity(DES_cblock *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DES_check_key_parity(const_DES_cblock *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DES_is_weak_key(const_DES_cblock *key);
|
||||||
|
# endif
|
||||||
|
/*
|
||||||
|
* DES_set_key (= set_key = DES_key_sched = key_sched) calls
|
||||||
|
* DES_set_key_checked
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DES_string_to_key(const char *str, DES_cblock *key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
long length, DES_key_schedule *schedule,
|
||||||
|
DES_cblock *ivec, int *num, int enc);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out,
|
||||||
|
long length, DES_key_schedule *schedule,
|
||||||
|
DES_cblock *ivec, int *num);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
335
src/openssl/dh.h
Normal file
335
src/openssl/dh.h
Normal file
@@ -0,0 +1,335 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_DH_H
|
||||||
|
# define OPENSSL_DH_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_DH_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/types.h>
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
/* DH parameter generation types used by EVP_PKEY_CTX_set_dh_paramgen_type() */
|
||||||
|
# define DH_PARAMGEN_TYPE_GENERATOR 0 /* Use a safe prime generator */
|
||||||
|
# define DH_PARAMGEN_TYPE_FIPS_186_2 1 /* Use FIPS186-2 standard */
|
||||||
|
# define DH_PARAMGEN_TYPE_FIPS_186_4 2 /* Use FIPS186-4 standard */
|
||||||
|
# define DH_PARAMGEN_TYPE_GROUP 3 /* Use a named safe prime group */
|
||||||
|
|
||||||
|
int EVP_PKEY_CTX_set_dh_paramgen_type(EVP_PKEY_CTX *ctx, int typ);
|
||||||
|
int EVP_PKEY_CTX_set_dh_paramgen_gindex(EVP_PKEY_CTX *ctx, int gindex);
|
||||||
|
int EVP_PKEY_CTX_set_dh_paramgen_seed(EVP_PKEY_CTX *ctx,
|
||||||
|
const unsigned char *seed,
|
||||||
|
size_t seedlen);
|
||||||
|
int EVP_PKEY_CTX_set_dh_paramgen_prime_len(EVP_PKEY_CTX *ctx, int pbits);
|
||||||
|
int EVP_PKEY_CTX_set_dh_paramgen_subprime_len(EVP_PKEY_CTX *ctx, int qlen);
|
||||||
|
int EVP_PKEY_CTX_set_dh_paramgen_generator(EVP_PKEY_CTX *ctx, int gen);
|
||||||
|
int EVP_PKEY_CTX_set_dh_nid(EVP_PKEY_CTX *ctx, int nid);
|
||||||
|
int EVP_PKEY_CTX_set_dh_rfc5114(EVP_PKEY_CTX *ctx, int gen);
|
||||||
|
int EVP_PKEY_CTX_set_dhx_rfc5114(EVP_PKEY_CTX *ctx, int gen);
|
||||||
|
int EVP_PKEY_CTX_set_dh_pad(EVP_PKEY_CTX *ctx, int pad);
|
||||||
|
|
||||||
|
int EVP_PKEY_CTX_set_dh_kdf_type(EVP_PKEY_CTX *ctx, int kdf);
|
||||||
|
int EVP_PKEY_CTX_get_dh_kdf_type(EVP_PKEY_CTX *ctx);
|
||||||
|
int EVP_PKEY_CTX_set0_dh_kdf_oid(EVP_PKEY_CTX *ctx, ASN1_OBJECT *oid);
|
||||||
|
int EVP_PKEY_CTX_get0_dh_kdf_oid(EVP_PKEY_CTX *ctx, ASN1_OBJECT **oid);
|
||||||
|
int EVP_PKEY_CTX_set_dh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
|
||||||
|
int EVP_PKEY_CTX_get_dh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md);
|
||||||
|
int EVP_PKEY_CTX_set_dh_kdf_outlen(EVP_PKEY_CTX *ctx, int len);
|
||||||
|
int EVP_PKEY_CTX_get_dh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len);
|
||||||
|
int EVP_PKEY_CTX_set0_dh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char *ukm, int len);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int EVP_PKEY_CTX_get0_dh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1)
|
||||||
|
# define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2)
|
||||||
|
# define EVP_PKEY_CTRL_DH_RFC5114 (EVP_PKEY_ALG_CTRL + 3)
|
||||||
|
# define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN (EVP_PKEY_ALG_CTRL + 4)
|
||||||
|
# define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE (EVP_PKEY_ALG_CTRL + 5)
|
||||||
|
# define EVP_PKEY_CTRL_DH_KDF_TYPE (EVP_PKEY_ALG_CTRL + 6)
|
||||||
|
# define EVP_PKEY_CTRL_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 7)
|
||||||
|
# define EVP_PKEY_CTRL_GET_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 8)
|
||||||
|
# define EVP_PKEY_CTRL_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 9)
|
||||||
|
# define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 10)
|
||||||
|
# define EVP_PKEY_CTRL_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 11)
|
||||||
|
# define EVP_PKEY_CTRL_GET_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 12)
|
||||||
|
# define EVP_PKEY_CTRL_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 13)
|
||||||
|
# define EVP_PKEY_CTRL_GET_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 14)
|
||||||
|
# define EVP_PKEY_CTRL_DH_NID (EVP_PKEY_ALG_CTRL + 15)
|
||||||
|
# define EVP_PKEY_CTRL_DH_PAD (EVP_PKEY_ALG_CTRL + 16)
|
||||||
|
|
||||||
|
/* KDF types */
|
||||||
|
# define EVP_PKEY_DH_KDF_NONE 1
|
||||||
|
# define EVP_PKEY_DH_KDF_X9_42 2
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
# include <stdio.h>
|
||||||
|
# endif
|
||||||
|
# ifndef OPENSSL_NO_DH
|
||||||
|
# include <openssl/e_os2.h>
|
||||||
|
# include <openssl/bio.h>
|
||||||
|
# include <openssl/asn1.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# include <openssl/bn.h>
|
||||||
|
# endif
|
||||||
|
# include <openssl/dherr.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_DH_MAX_MODULUS_BITS
|
||||||
|
# define OPENSSL_DH_MAX_MODULUS_BITS 10000
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_DH_CHECK_MAX_MODULUS_BITS
|
||||||
|
# define OPENSSL_DH_CHECK_MAX_MODULUS_BITS 32768
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define OPENSSL_DH_FIPS_MIN_MODULUS_BITS 1024
|
||||||
|
|
||||||
|
# define DH_FLAG_CACHE_MONT_P 0x01
|
||||||
|
|
||||||
|
# define DH_FLAG_TYPE_MASK 0xF000
|
||||||
|
# define DH_FLAG_TYPE_DH 0x0000
|
||||||
|
# define DH_FLAG_TYPE_DHX 0x1000
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
/*
|
||||||
|
* Does nothing. Previously this switched off constant time behaviour.
|
||||||
|
*/
|
||||||
|
# define DH_FLAG_NO_EXP_CONSTTIME 0x00
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
/*
|
||||||
|
* If this flag is set the DH method is FIPS compliant and can be used in
|
||||||
|
* FIPS mode. This is set in the validated module method. If an application
|
||||||
|
* sets this flag in its own methods it is its responsibility to ensure the
|
||||||
|
* result is compliant.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define DH_FLAG_FIPS_METHOD 0x0400
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If this flag is set the operations normally disabled in FIPS mode are
|
||||||
|
* permitted it is then the applications responsibility to ensure that the
|
||||||
|
* usage is compliant.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define DH_FLAG_NON_FIPS_ALLOW 0x0400
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Already defined in ossl_typ.h */
|
||||||
|
/* typedef struct dh_st DH; */
|
||||||
|
/* typedef struct dh_method DH_METHOD; */
|
||||||
|
|
||||||
|
DECLARE_ASN1_ITEM(DHparams)
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define DH_GENERATOR_2 2
|
||||||
|
# define DH_GENERATOR_3 3
|
||||||
|
# define DH_GENERATOR_5 5
|
||||||
|
|
||||||
|
/* DH_check error codes */
|
||||||
|
/*
|
||||||
|
* NB: These values must align with the equivalently named macros in
|
||||||
|
* internal/ffc.h.
|
||||||
|
*/
|
||||||
|
# define DH_CHECK_P_NOT_PRIME 0x01
|
||||||
|
# define DH_CHECK_P_NOT_SAFE_PRIME 0x02
|
||||||
|
# define DH_UNABLE_TO_CHECK_GENERATOR 0x04
|
||||||
|
# define DH_NOT_SUITABLE_GENERATOR 0x08
|
||||||
|
# define DH_CHECK_Q_NOT_PRIME 0x10
|
||||||
|
# define DH_CHECK_INVALID_Q_VALUE 0x20
|
||||||
|
# define DH_CHECK_INVALID_J_VALUE 0x40
|
||||||
|
# define DH_MODULUS_TOO_SMALL 0x80
|
||||||
|
# define DH_MODULUS_TOO_LARGE 0x100
|
||||||
|
|
||||||
|
/* DH_check_pub_key error codes */
|
||||||
|
# define DH_CHECK_PUBKEY_TOO_SMALL 0x01
|
||||||
|
# define DH_CHECK_PUBKEY_TOO_LARGE 0x02
|
||||||
|
# define DH_CHECK_PUBKEY_INVALID 0x04
|
||||||
|
|
||||||
|
/*
|
||||||
|
* primes p where (p-1)/2 is prime too are called "safe"; we define this for
|
||||||
|
* backward compatibility:
|
||||||
|
*/
|
||||||
|
# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME
|
||||||
|
|
||||||
|
# define d2i_DHparams_fp(fp, x) \
|
||||||
|
(DH *)ASN1_d2i_fp((char *(*)())DH_new, \
|
||||||
|
(char *(*)())d2i_DHparams, \
|
||||||
|
(fp), \
|
||||||
|
(unsigned char **)(x))
|
||||||
|
# define i2d_DHparams_fp(fp, x) \
|
||||||
|
ASN1_i2d_fp(i2d_DHparams,(fp), (unsigned char *)(x))
|
||||||
|
# define d2i_DHparams_bio(bp, x) \
|
||||||
|
ASN1_d2i_bio_of(DH, DH_new, d2i_DHparams, bp, x)
|
||||||
|
# define i2d_DHparams_bio(bp, x) \
|
||||||
|
ASN1_i2d_bio_of(DH, i2d_DHparams, bp, x)
|
||||||
|
|
||||||
|
# define d2i_DHxparams_fp(fp,x) \
|
||||||
|
(DH *)ASN1_d2i_fp((char *(*)())DH_new, \
|
||||||
|
(char *(*)())d2i_DHxparams, \
|
||||||
|
(fp), \
|
||||||
|
(unsigned char **)(x))
|
||||||
|
# define i2d_DHxparams_fp(fp, x) \
|
||||||
|
ASN1_i2d_fp(i2d_DHxparams,(fp), (unsigned char *)(x))
|
||||||
|
# define d2i_DHxparams_bio(bp, x) \
|
||||||
|
ASN1_d2i_bio_of(DH, DH_new, d2i_DHxparams, bp, x)
|
||||||
|
# define i2d_DHxparams_bio(bp, x) \
|
||||||
|
ASN1_i2d_bio_of(DH, i2d_DHxparams, bp, x)
|
||||||
|
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, DH, DHparams)
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const DH_METHOD *DH_OpenSSL(void);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DH_set_default_method(const DH_METHOD *meth);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const DH_METHOD *DH_get_default_method(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_set_method(DH *dh, const DH_METHOD *meth);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DH *DH_new_method(ENGINE *engine);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DH *DH_new(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DH_free(DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_up_ref(DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_bits(const DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_size(const DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_security_bits(const DH *dh);
|
||||||
|
|
||||||
|
# define DH_get_ex_new_index(l, p, newf, dupf, freef) \
|
||||||
|
CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DH, l, p, newf, dupf, freef)
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_set_ex_data(DH *d, int idx, void *arg);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void *DH_get_ex_data(const DH *d, int idx);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_generate_parameters_ex(DH *dh, int prime_len,
|
||||||
|
int generator,
|
||||||
|
BN_GENCB *cb);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_check_params_ex(const DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_check_ex(const DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_check_params(const DH *dh, int *ret);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_check(const DH *dh, int *codes);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key,
|
||||||
|
int *codes);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_generate_key(DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_compute_key(unsigned char *key,
|
||||||
|
const BIGNUM *pub_key, DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_compute_key_padded(unsigned char *key,
|
||||||
|
const BIGNUM *pub_key, DH *dh);
|
||||||
|
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, DH, DHparams)
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, DH, DHxparams)
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DHparams_print_fp(FILE *fp, const DH *x);
|
||||||
|
# endif
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DHparams_print(BIO *bp, const DH *x);
|
||||||
|
|
||||||
|
/* RFC 5114 parameters */
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DH *DH_get_1024_160(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DH *DH_get_2048_224(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DH *DH_get_2048_256(void);
|
||||||
|
|
||||||
|
/* Named parameters, currently RFC7919 and RFC3526 */
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DH *DH_new_by_nid(int nid);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_get_nid(const DH *dh);
|
||||||
|
|
||||||
|
/* RFC2631 KDF */
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_KDF_X9_42(unsigned char *out, size_t outlen,
|
||||||
|
const unsigned char *Z, size_t Zlen,
|
||||||
|
ASN1_OBJECT *key_oid,
|
||||||
|
const unsigned char *ukm,
|
||||||
|
size_t ukmlen, const EVP_MD *md);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DH_get0_pqg(const DH *dh, const BIGNUM **p,
|
||||||
|
const BIGNUM **q, const BIGNUM **g);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DH_get0_key(const DH *dh, const BIGNUM **pub_key,
|
||||||
|
const BIGNUM **priv_key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const BIGNUM *DH_get0_p(const DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const BIGNUM *DH_get0_q(const DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const BIGNUM *DH_get0_g(const DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const BIGNUM *DH_get0_priv_key(const DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const BIGNUM *DH_get0_pub_key(const DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DH_clear_flags(DH *dh, int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_test_flags(const DH *dh, int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DH_set_flags(DH *dh, int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *DH_get0_engine(DH *d);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 long DH_get_length(const DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_set_length(DH *dh, long length);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DH_METHOD *DH_meth_new(const char *name, int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DH_meth_free(DH_METHOD *dhm);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DH_METHOD *DH_meth_dup(const DH_METHOD *dhm);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const char *DH_meth_get0_name(const DH_METHOD *dhm);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_meth_set1_name(DH_METHOD *dhm, const char *name);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_meth_get_flags(const DH_METHOD *dhm);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_meth_set_flags(DH_METHOD *dhm, int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void *DH_meth_get0_app_data(const DH_METHOD *dhm);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_meth_set0_app_data(DH_METHOD *dhm, void *app_data);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DH_meth_get_generate_key(const DH_METHOD *dhm)) (DH *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_meth_set_generate_key(DH_METHOD *dhm,
|
||||||
|
int (*generate_key) (DH *));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DH_meth_get_compute_key(const DH_METHOD *dhm))
|
||||||
|
(unsigned char *key,
|
||||||
|
const BIGNUM *pub_key,
|
||||||
|
DH *dh);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_meth_set_compute_key(DH_METHOD *dhm,
|
||||||
|
int (*compute_key)
|
||||||
|
(unsigned char *key,
|
||||||
|
const BIGNUM *pub_key,
|
||||||
|
DH *dh));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DH_meth_get_bn_mod_exp(const DH_METHOD *dhm))
|
||||||
|
(const DH *, BIGNUM *,
|
||||||
|
const BIGNUM *,
|
||||||
|
const BIGNUM *,
|
||||||
|
const BIGNUM *, BN_CTX *,
|
||||||
|
BN_MONT_CTX *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_meth_set_bn_mod_exp(DH_METHOD *dhm,
|
||||||
|
int (*bn_mod_exp)
|
||||||
|
(const DH *, BIGNUM *,
|
||||||
|
const BIGNUM *, const BIGNUM *,
|
||||||
|
const BIGNUM *, BN_CTX *,
|
||||||
|
BN_MONT_CTX *));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DH_meth_get_init(const DH_METHOD *dhm))(DH *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_meth_set_init(DH_METHOD *dhm, int (*init)(DH *));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DH_meth_get_finish(const DH_METHOD *dhm)) (DH *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_meth_set_finish(DH_METHOD *dhm, int (*finish) (DH *));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DH_meth_get_generate_params(const DH_METHOD *dhm))
|
||||||
|
(DH *, int, int,
|
||||||
|
BN_GENCB *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DH_meth_set_generate_params(DH_METHOD *dhm,
|
||||||
|
int (*generate_params)
|
||||||
|
(DH *, int, int,
|
||||||
|
BN_GENCB *));
|
||||||
|
# endif /* OPENSSL_NO_DEPRECATED_3_0 */
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
|
||||||
|
OSSL_DEPRECATEDIN_0_9_8 DH *DH_generate_parameters(int prime_len, int generator,
|
||||||
|
void (*callback) (int, int,
|
||||||
|
void *),
|
||||||
|
void *cb_arg);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# endif
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
57
src/openssl/dherr.h
Normal file
57
src/openssl/dherr.h
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_DHERR_H
|
||||||
|
# define OPENSSL_DHERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DH
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DH reason codes.
|
||||||
|
*/
|
||||||
|
# define DH_R_BAD_FFC_PARAMETERS 127
|
||||||
|
# define DH_R_BAD_GENERATOR 101
|
||||||
|
# define DH_R_BN_DECODE_ERROR 109
|
||||||
|
# define DH_R_BN_ERROR 106
|
||||||
|
# define DH_R_CHECK_INVALID_J_VALUE 115
|
||||||
|
# define DH_R_CHECK_INVALID_Q_VALUE 116
|
||||||
|
# define DH_R_CHECK_PUBKEY_INVALID 122
|
||||||
|
# define DH_R_CHECK_PUBKEY_TOO_LARGE 123
|
||||||
|
# define DH_R_CHECK_PUBKEY_TOO_SMALL 124
|
||||||
|
# define DH_R_CHECK_P_NOT_PRIME 117
|
||||||
|
# define DH_R_CHECK_P_NOT_SAFE_PRIME 118
|
||||||
|
# define DH_R_CHECK_Q_NOT_PRIME 119
|
||||||
|
# define DH_R_DECODE_ERROR 104
|
||||||
|
# define DH_R_INVALID_PARAMETER_NAME 110
|
||||||
|
# define DH_R_INVALID_PARAMETER_NID 114
|
||||||
|
# define DH_R_INVALID_PUBKEY 102
|
||||||
|
# define DH_R_INVALID_SECRET 128
|
||||||
|
# define DH_R_KDF_PARAMETER_ERROR 112
|
||||||
|
# define DH_R_KEYS_NOT_SET 108
|
||||||
|
# define DH_R_MISSING_PUBKEY 125
|
||||||
|
# define DH_R_MODULUS_TOO_LARGE 103
|
||||||
|
# define DH_R_MODULUS_TOO_SMALL 126
|
||||||
|
# define DH_R_NOT_SUITABLE_GENERATOR 120
|
||||||
|
# define DH_R_NO_PARAMETERS_SET 107
|
||||||
|
# define DH_R_NO_PRIVATE_VALUE 100
|
||||||
|
# define DH_R_PARAMETER_ENCODING_ERROR 105
|
||||||
|
# define DH_R_PEER_KEY_ERROR 111
|
||||||
|
# define DH_R_SHARED_INFO_ERROR 113
|
||||||
|
# define DH_R_UNABLE_TO_CHECK_GENERATOR 121
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
280
src/openssl/dsa.h
Normal file
280
src/openssl/dsa.h
Normal file
@@ -0,0 +1,280 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_DSA_H
|
||||||
|
# define OPENSSL_DSA_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_DSA_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/types.h>
|
||||||
|
|
||||||
|
# include <stdlib.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DSA
|
||||||
|
# include <openssl/e_os2.h>
|
||||||
|
# include <openssl/asn1.h>
|
||||||
|
# include <openssl/bio.h>
|
||||||
|
# include <openssl/crypto.h>
|
||||||
|
# include <openssl/bn.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# include <openssl/dh.h>
|
||||||
|
# endif
|
||||||
|
# include <openssl/dsaerr.h>
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
# include <stdio.h>
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
int EVP_PKEY_CTX_set_dsa_paramgen_bits(EVP_PKEY_CTX *ctx, int nbits);
|
||||||
|
int EVP_PKEY_CTX_set_dsa_paramgen_q_bits(EVP_PKEY_CTX *ctx, int qbits);
|
||||||
|
int EVP_PKEY_CTX_set_dsa_paramgen_md_props(EVP_PKEY_CTX *ctx,
|
||||||
|
const char *md_name,
|
||||||
|
const char *md_properties);
|
||||||
|
int EVP_PKEY_CTX_set_dsa_paramgen_gindex(EVP_PKEY_CTX *ctx, int gindex);
|
||||||
|
int EVP_PKEY_CTX_set_dsa_paramgen_type(EVP_PKEY_CTX *ctx, const char *name);
|
||||||
|
int EVP_PKEY_CTX_set_dsa_paramgen_seed(EVP_PKEY_CTX *ctx,
|
||||||
|
const unsigned char *seed,
|
||||||
|
size_t seedlen);
|
||||||
|
int EVP_PKEY_CTX_set_dsa_paramgen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
|
||||||
|
|
||||||
|
# define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1)
|
||||||
|
# define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2)
|
||||||
|
# define EVP_PKEY_CTRL_DSA_PARAMGEN_MD (EVP_PKEY_ALG_CTRL + 3)
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DSA
|
||||||
|
# ifndef OPENSSL_DSA_MAX_MODULUS_BITS
|
||||||
|
# define OPENSSL_DSA_MAX_MODULUS_BITS 10000
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024
|
||||||
|
|
||||||
|
typedef struct DSA_SIG_st DSA_SIG;
|
||||||
|
DSA_SIG *DSA_SIG_new(void);
|
||||||
|
void DSA_SIG_free(DSA_SIG *a);
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_only(DSA_SIG, DSA_SIG)
|
||||||
|
void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps);
|
||||||
|
int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s);
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
/*
|
||||||
|
* Does nothing. Previously this switched off constant time behaviour.
|
||||||
|
*/
|
||||||
|
# define DSA_FLAG_NO_EXP_CONSTTIME 0x00
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define DSA_FLAG_CACHE_MONT_P 0x01
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If this flag is set the DSA method is FIPS compliant and can be used in
|
||||||
|
* FIPS mode. This is set in the validated module method. If an application
|
||||||
|
* sets this flag in its own methods it is its responsibility to ensure the
|
||||||
|
* result is compliant.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define DSA_FLAG_FIPS_METHOD 0x0400
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If this flag is set the operations normally disabled in FIPS mode are
|
||||||
|
* permitted it is then the applications responsibility to ensure that the
|
||||||
|
* usage is compliant.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define DSA_FLAG_NON_FIPS_ALLOW 0x0400
|
||||||
|
# define DSA_FLAG_FIPS_CHECKED 0x0800
|
||||||
|
|
||||||
|
/* Already defined in ossl_typ.h */
|
||||||
|
/* typedef struct dsa_st DSA; */
|
||||||
|
/* typedef struct dsa_method DSA_METHOD; */
|
||||||
|
|
||||||
|
# define d2i_DSAparams_fp(fp, x) \
|
||||||
|
(DSA *)ASN1_d2i_fp((char *(*)())DSA_new, \
|
||||||
|
(char *(*)())d2i_DSAparams, (fp), \
|
||||||
|
(unsigned char **)(x))
|
||||||
|
# define i2d_DSAparams_fp(fp, x) \
|
||||||
|
ASN1_i2d_fp(i2d_DSAparams, (fp), (unsigned char *)(x))
|
||||||
|
# define d2i_DSAparams_bio(bp, x) \
|
||||||
|
ASN1_d2i_bio_of(DSA, DSA_new, d2i_DSAparams, bp, x)
|
||||||
|
# define i2d_DSAparams_bio(bp, x) \
|
||||||
|
ASN1_i2d_bio_of(DSA, i2d_DSAparams, bp, x)
|
||||||
|
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, DSA, DSAparams)
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen,
|
||||||
|
DSA *dsa);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_do_verify(const unsigned char *dgst, int dgst_len,
|
||||||
|
DSA_SIG *sig, DSA *dsa);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const DSA_METHOD *DSA_OpenSSL(void);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DSA_set_default_method(const DSA_METHOD *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const DSA_METHOD *DSA_get_default_method(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_set_method(DSA *dsa, const DSA_METHOD *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const DSA_METHOD *DSA_get_method(DSA *d);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DSA *DSA_new(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DSA *DSA_new_method(ENGINE *engine);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DSA_free(DSA *r);
|
||||||
|
/* "up" the DSA object's reference count */
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_up_ref(DSA *r);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_size(const DSA *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_bits(const DSA *d);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_security_bits(const DSA *d);
|
||||||
|
/* next 4 return -1 on error */
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in,
|
||||||
|
BIGNUM **kinvp, BIGNUM **rp);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_sign(int type, const unsigned char *dgst,
|
||||||
|
int dlen, unsigned char *sig,
|
||||||
|
unsigned int *siglen, DSA *dsa);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_verify(int type, const unsigned char *dgst,
|
||||||
|
int dgst_len, const unsigned char *sigbuf,
|
||||||
|
int siglen, DSA *dsa);
|
||||||
|
|
||||||
|
# define DSA_get_ex_new_index(l, p, newf, dupf, freef) \
|
||||||
|
CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DSA, l, p, newf, dupf, freef)
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_set_ex_data(DSA *d, int idx, void *arg);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void *DSA_get_ex_data(const DSA *d, int idx);
|
||||||
|
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,
|
||||||
|
DSA, DSAPublicKey)
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,
|
||||||
|
DSA, DSAPrivateKey)
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,
|
||||||
|
DSA, DSAparams)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
|
||||||
|
/* Deprecated version */
|
||||||
|
OSSL_DEPRECATEDIN_0_9_8
|
||||||
|
DSA *DSA_generate_parameters(int bits, unsigned char *seed, int seed_len,
|
||||||
|
int *counter_ret, unsigned long *h_ret,
|
||||||
|
void (*callback) (int, int, void *),
|
||||||
|
void *cb_arg);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
/* New version */
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_generate_parameters_ex(DSA *dsa, int bits,
|
||||||
|
const unsigned char *seed,
|
||||||
|
int seed_len,
|
||||||
|
int *counter_ret,
|
||||||
|
unsigned long *h_ret,
|
||||||
|
BN_GENCB *cb);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_generate_key(DSA *a);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSAparams_print(BIO *bp, const DSA *x);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_print(BIO *bp, const DSA *x, int off);
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSAparams_print_fp(FILE *fp, const DSA *x);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_print_fp(FILE *bp, const DSA *x, int off);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define DSS_prime_checks 64
|
||||||
|
/*
|
||||||
|
* Primality test according to FIPS PUB 186-4, Appendix C.3. Since we only
|
||||||
|
* have one value here we set the number of checks to 64 which is the 128 bit
|
||||||
|
* security level that is the highest level and valid for creating a 3072 bit
|
||||||
|
* DSA key.
|
||||||
|
*/
|
||||||
|
# define DSA_is_prime(n, callback, cb_arg) \
|
||||||
|
BN_is_prime(n, DSS_prime_checks, callback, NULL, cb_arg)
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DH
|
||||||
|
/*
|
||||||
|
* Convert DSA structure (key or just parameters) into DH structure (be
|
||||||
|
* careful to avoid small subgroup attacks when using this!)
|
||||||
|
*/
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DH *DSA_dup_DH(const DSA *r);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DSA_get0_pqg(const DSA *d, const BIGNUM **p,
|
||||||
|
const BIGNUM **q, const BIGNUM **g);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DSA_get0_key(const DSA *d, const BIGNUM **pub_key,
|
||||||
|
const BIGNUM **priv_key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_set0_key(DSA *d, BIGNUM *pub_key,
|
||||||
|
BIGNUM *priv_key);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const BIGNUM *DSA_get0_p(const DSA *d);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const BIGNUM *DSA_get0_q(const DSA *d);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const BIGNUM *DSA_get0_g(const DSA *d);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const BIGNUM *DSA_get0_pub_key(const DSA *d);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const BIGNUM *DSA_get0_priv_key(const DSA *d);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DSA_clear_flags(DSA *d, int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_test_flags(const DSA *d, int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DSA_set_flags(DSA *d, int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *DSA_get0_engine(DSA *d);
|
||||||
|
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DSA_METHOD *DSA_meth_new(const char *name, int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void DSA_meth_free(DSA_METHOD *dsam);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DSA_METHOD *DSA_meth_dup(const DSA_METHOD *dsam);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const char *DSA_meth_get0_name(const DSA_METHOD *dsam);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set1_name(DSA_METHOD *dsam,
|
||||||
|
const char *name);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_get_flags(const DSA_METHOD *dsam);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_flags(DSA_METHOD *dsam, int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void *DSA_meth_get0_app_data(const DSA_METHOD *dsam);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set0_app_data(DSA_METHOD *dsam,
|
||||||
|
void *app_data);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 DSA_SIG *(*DSA_meth_get_sign(const DSA_METHOD *dsam))
|
||||||
|
(const unsigned char *, int, DSA *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_sign(DSA_METHOD *dsam,
|
||||||
|
DSA_SIG *(*sign) (const unsigned char *, int, DSA *));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_sign_setup(const DSA_METHOD *dsam))
|
||||||
|
(DSA *, BN_CTX *, BIGNUM **, BIGNUM **);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_sign_setup(DSA_METHOD *dsam,
|
||||||
|
int (*sign_setup) (DSA *, BN_CTX *, BIGNUM **, BIGNUM **));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_verify(const DSA_METHOD *dsam))
|
||||||
|
(const unsigned char *, int, DSA_SIG *, DSA *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_verify(DSA_METHOD *dsam,
|
||||||
|
int (*verify) (const unsigned char *, int, DSA_SIG *, DSA *));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_mod_exp(const DSA_METHOD *dsam))
|
||||||
|
(DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *,
|
||||||
|
const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_mod_exp(DSA_METHOD *dsam,
|
||||||
|
int (*mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *,
|
||||||
|
const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *,
|
||||||
|
BN_MONT_CTX *));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam))
|
||||||
|
(DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *,
|
||||||
|
BN_CTX *, BN_MONT_CTX *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_bn_mod_exp(DSA_METHOD *dsam,
|
||||||
|
int (*bn_mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *,
|
||||||
|
const BIGNUM *, BN_CTX *, BN_MONT_CTX *));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_init(const DSA_METHOD *dsam))(DSA *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_init(DSA_METHOD *dsam,
|
||||||
|
int (*init)(DSA *));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_finish(const DSA_METHOD *dsam))(DSA *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_finish(DSA_METHOD *dsam,
|
||||||
|
int (*finish)(DSA *));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_paramgen(const DSA_METHOD *dsam))
|
||||||
|
(DSA *, int, const unsigned char *, int, int *, unsigned long *,
|
||||||
|
BN_GENCB *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_paramgen(DSA_METHOD *dsam,
|
||||||
|
int (*paramgen) (DSA *, int, const unsigned char *, int, int *,
|
||||||
|
unsigned long *, BN_GENCB *));
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_keygen(const DSA_METHOD *dsam))(DSA *);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_keygen(DSA_METHOD *dsam,
|
||||||
|
int (*keygen) (DSA *));
|
||||||
|
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
44
src/openssl/dsaerr.h
Normal file
44
src/openssl/dsaerr.h
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_DSAERR_H
|
||||||
|
# define OPENSSL_DSAERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DSA
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DSA reason codes.
|
||||||
|
*/
|
||||||
|
# define DSA_R_BAD_FFC_PARAMETERS 114
|
||||||
|
# define DSA_R_BAD_Q_VALUE 102
|
||||||
|
# define DSA_R_BN_DECODE_ERROR 108
|
||||||
|
# define DSA_R_BN_ERROR 109
|
||||||
|
# define DSA_R_DECODE_ERROR 104
|
||||||
|
# define DSA_R_INVALID_DIGEST_TYPE 106
|
||||||
|
# define DSA_R_INVALID_PARAMETERS 112
|
||||||
|
# define DSA_R_MISSING_PARAMETERS 101
|
||||||
|
# define DSA_R_MISSING_PRIVATE_KEY 111
|
||||||
|
# define DSA_R_MODULUS_TOO_LARGE 103
|
||||||
|
# define DSA_R_NO_PARAMETERS_SET 107
|
||||||
|
# define DSA_R_PARAMETER_ENCODING_ERROR 105
|
||||||
|
# define DSA_R_P_NOT_PRIME 115
|
||||||
|
# define DSA_R_Q_NOT_PRIME 113
|
||||||
|
# define DSA_R_SEED_LEN_SMALL 110
|
||||||
|
# define DSA_R_TOO_MANY_RETRIES 116
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
57
src/openssl/dtls1.h
Normal file
57
src/openssl/dtls1.h
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2005-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_DTLS1_H
|
||||||
|
# define OPENSSL_DTLS1_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_DTLS1_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/prov_ssl.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
/* DTLS*_VERSION constants are defined in prov_ssl.h */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define DTLS_MIN_VERSION DTLS1_VERSION
|
||||||
|
# define DTLS_MAX_VERSION DTLS1_2_VERSION
|
||||||
|
# endif
|
||||||
|
# define DTLS1_VERSION_MAJOR 0xFE
|
||||||
|
|
||||||
|
/* Special value for method supporting multiple versions */
|
||||||
|
# define DTLS_ANY_VERSION 0x1FFFF
|
||||||
|
|
||||||
|
/* lengths of messages */
|
||||||
|
|
||||||
|
# define DTLS1_COOKIE_LENGTH 255
|
||||||
|
|
||||||
|
# define DTLS1_RT_HEADER_LENGTH 13
|
||||||
|
|
||||||
|
# define DTLS1_HM_HEADER_LENGTH 12
|
||||||
|
|
||||||
|
# define DTLS1_HM_BAD_FRAGMENT -2
|
||||||
|
# define DTLS1_HM_FRAGMENT_RETRY -3
|
||||||
|
|
||||||
|
# define DTLS1_CCS_HEADER_LENGTH 1
|
||||||
|
|
||||||
|
# define DTLS1_AL_HEADER_LENGTH 2
|
||||||
|
|
||||||
|
# define DTLS1_TMO_ALERT_COUNT 12
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
308
src/openssl/e_os2.h
Normal file
308
src/openssl/e_os2.h
Normal file
@@ -0,0 +1,308 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_E_OS2_H
|
||||||
|
# define OPENSSL_E_OS2_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_E_OS2_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* Detect operating systems. This probably needs completing.
|
||||||
|
* The result is that at least one OPENSSL_SYS_os macro should be defined.
|
||||||
|
* However, if none is defined, Unix is assumed.
|
||||||
|
**/
|
||||||
|
|
||||||
|
# define OPENSSL_SYS_UNIX
|
||||||
|
|
||||||
|
/* --------------------- Microsoft operating systems ---------------------- */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note that MSDOS actually denotes 32-bit environments running on top of
|
||||||
|
* MS-DOS, such as DJGPP one.
|
||||||
|
*/
|
||||||
|
# if defined(OPENSSL_SYS_MSDOS)
|
||||||
|
# undef OPENSSL_SYS_UNIX
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For 32 bit environment, there seems to be the CygWin environment and then
|
||||||
|
* all the others that try to do the same thing Microsoft does...
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* UEFI lives here because it might be built with a Microsoft toolchain and
|
||||||
|
* we need to avoid the false positive match on Windows.
|
||||||
|
*/
|
||||||
|
# if defined(OPENSSL_SYS_UEFI)
|
||||||
|
# undef OPENSSL_SYS_UNIX
|
||||||
|
# elif defined(OPENSSL_SYS_UWIN)
|
||||||
|
# undef OPENSSL_SYS_UNIX
|
||||||
|
# define OPENSSL_SYS_WIN32_UWIN
|
||||||
|
# else
|
||||||
|
# if defined(__CYGWIN__) || defined(OPENSSL_SYS_CYGWIN)
|
||||||
|
# define OPENSSL_SYS_WIN32_CYGWIN
|
||||||
|
# else
|
||||||
|
# if defined(_WIN32) || defined(OPENSSL_SYS_WIN32)
|
||||||
|
# undef OPENSSL_SYS_UNIX
|
||||||
|
# if !defined(OPENSSL_SYS_WIN32)
|
||||||
|
# define OPENSSL_SYS_WIN32
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# if defined(_WIN64) || defined(OPENSSL_SYS_WIN64)
|
||||||
|
# undef OPENSSL_SYS_UNIX
|
||||||
|
# if !defined(OPENSSL_SYS_WIN64)
|
||||||
|
# define OPENSSL_SYS_WIN64
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# if defined(OPENSSL_SYS_WINNT)
|
||||||
|
# undef OPENSSL_SYS_UNIX
|
||||||
|
# endif
|
||||||
|
# if defined(OPENSSL_SYS_WINCE)
|
||||||
|
# undef OPENSSL_SYS_UNIX
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Anything that tries to look like Microsoft is "Windows" */
|
||||||
|
# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN64) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE)
|
||||||
|
# undef OPENSSL_SYS_UNIX
|
||||||
|
# define OPENSSL_SYS_WINDOWS
|
||||||
|
# ifndef OPENSSL_SYS_MSDOS
|
||||||
|
# define OPENSSL_SYS_MSDOS
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DLL settings. This part is a bit tough, because it's up to the
|
||||||
|
* application implementor how he or she will link the application, so it
|
||||||
|
* requires some macro to be used.
|
||||||
|
*/
|
||||||
|
# ifdef OPENSSL_SYS_WINDOWS
|
||||||
|
# ifndef OPENSSL_OPT_WINDLL
|
||||||
|
# if defined(_WINDLL) /* This is used when building OpenSSL to
|
||||||
|
* indicate that DLL linkage should be used */
|
||||||
|
# define OPENSSL_OPT_WINDLL
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* ------------------------------- OpenVMS -------------------------------- */
|
||||||
|
# if defined(__VMS) || defined(VMS)
|
||||||
|
# if !defined(OPENSSL_SYS_VMS)
|
||||||
|
# undef OPENSSL_SYS_UNIX
|
||||||
|
# define OPENSSL_SYS_VMS
|
||||||
|
# endif
|
||||||
|
# if defined(__DECC)
|
||||||
|
# define OPENSSL_SYS_VMS_DECC
|
||||||
|
# elif defined(__DECCXX)
|
||||||
|
# define OPENSSL_SYS_VMS_DECC
|
||||||
|
# define OPENSSL_SYS_VMS_DECCXX
|
||||||
|
# else
|
||||||
|
# define OPENSSL_SYS_VMS_NODECC
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* -------------------------------- Unix ---------------------------------- */
|
||||||
|
# ifdef OPENSSL_SYS_UNIX
|
||||||
|
# if defined(linux) || defined(__linux__) && !defined(OPENSSL_SYS_LINUX)
|
||||||
|
# define OPENSSL_SYS_LINUX
|
||||||
|
# endif
|
||||||
|
# if defined(_AIX) && !defined(OPENSSL_SYS_AIX)
|
||||||
|
# define OPENSSL_SYS_AIX
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* -------------------------------- VOS ----------------------------------- */
|
||||||
|
# if defined(__VOS__) && !defined(OPENSSL_SYS_VOS)
|
||||||
|
# define OPENSSL_SYS_VOS
|
||||||
|
# ifdef __HPPA__
|
||||||
|
# define OPENSSL_SYS_VOS_HPPA
|
||||||
|
# endif
|
||||||
|
# ifdef __IA32__
|
||||||
|
# define OPENSSL_SYS_VOS_IA32
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* ---------------------------- HP NonStop -------------------------------- */
|
||||||
|
# ifdef __TANDEM
|
||||||
|
# ifdef _STRING
|
||||||
|
# include <strings.h>
|
||||||
|
# endif
|
||||||
|
# define OPENSSL_USE_BUILD_DATE
|
||||||
|
# if defined(OPENSSL_THREADS) && defined(_SPT_MODEL_)
|
||||||
|
# define SPT_THREAD_SIGNAL 1
|
||||||
|
# define SPT_THREAD_AWARE 1
|
||||||
|
# include <spthread.h>
|
||||||
|
# elif defined(OPENSSL_THREADS) && defined(_PUT_MODEL_)
|
||||||
|
# include <pthread.h>
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* That's it for OS-specific stuff
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* OPENSSL_EXTERN is normally used to declare a symbol with possible extra
|
||||||
|
* attributes to handle its presence in a shared library.
|
||||||
|
* OPENSSL_EXPORT is used to define a symbol with extra possible attributes
|
||||||
|
* to make it visible in a shared library.
|
||||||
|
* Care needs to be taken when a header file is used both to declare and
|
||||||
|
* define symbols. Basically, for any library that exports some global
|
||||||
|
* variables, the following code must be present in the header file that
|
||||||
|
* declares them, before OPENSSL_EXTERN is used:
|
||||||
|
*
|
||||||
|
* #ifdef SOME_BUILD_FLAG_MACRO
|
||||||
|
* # undef OPENSSL_EXTERN
|
||||||
|
* # define OPENSSL_EXTERN OPENSSL_EXPORT
|
||||||
|
* #endif
|
||||||
|
*
|
||||||
|
* The default is to have OPENSSL_EXPORT and OPENSSL_EXTERN
|
||||||
|
* have some generally sensible values.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# if defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL)
|
||||||
|
# define OPENSSL_EXPORT extern __declspec(dllexport)
|
||||||
|
# define OPENSSL_EXTERN extern __declspec(dllimport)
|
||||||
|
# else
|
||||||
|
# define OPENSSL_EXPORT extern
|
||||||
|
# define OPENSSL_EXTERN extern
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef _WIN32
|
||||||
|
# ifdef _WIN64
|
||||||
|
# define ossl_ssize_t __int64
|
||||||
|
# define OSSL_SSIZE_MAX _I64_MAX
|
||||||
|
# else
|
||||||
|
# define ossl_ssize_t int
|
||||||
|
# define OSSL_SSIZE_MAX INT_MAX
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(OPENSSL_SYS_UEFI) && !defined(ossl_ssize_t)
|
||||||
|
# define ossl_ssize_t INTN
|
||||||
|
# define OSSL_SSIZE_MAX MAX_INTN
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef ossl_ssize_t
|
||||||
|
# define ossl_ssize_t ssize_t
|
||||||
|
# if defined(SSIZE_MAX)
|
||||||
|
# define OSSL_SSIZE_MAX SSIZE_MAX
|
||||||
|
# elif defined(_POSIX_SSIZE_MAX)
|
||||||
|
# define OSSL_SSIZE_MAX _POSIX_SSIZE_MAX
|
||||||
|
# else
|
||||||
|
# define OSSL_SSIZE_MAX ((ssize_t)(SIZE_MAX>>1))
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(UNUSEDRESULT_DEBUG)
|
||||||
|
# define __owur __attribute__((__warn_unused_result__))
|
||||||
|
# else
|
||||||
|
# define __owur
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Standard integer types */
|
||||||
|
# define OPENSSL_NO_INTTYPES_H
|
||||||
|
# define OPENSSL_NO_STDINT_H
|
||||||
|
# if defined(OPENSSL_SYS_UEFI)
|
||||||
|
typedef INT8 int8_t;
|
||||||
|
typedef UINT8 uint8_t;
|
||||||
|
typedef INT16 int16_t;
|
||||||
|
typedef UINT16 uint16_t;
|
||||||
|
typedef INT32 int32_t;
|
||||||
|
typedef UINT32 uint32_t;
|
||||||
|
typedef INT64 int64_t;
|
||||||
|
typedef UINT64 uint64_t;
|
||||||
|
# elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
||||||
|
defined(__osf__) || defined(__sgi) || defined(__hpux) || \
|
||||||
|
defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__)
|
||||||
|
# include <inttypes.h>
|
||||||
|
# undef OPENSSL_NO_INTTYPES_H
|
||||||
|
/* Because the specs say that inttypes.h includes stdint.h if present */
|
||||||
|
# undef OPENSSL_NO_STDINT_H
|
||||||
|
# elif defined(_MSC_VER) && _MSC_VER<1600
|
||||||
|
/*
|
||||||
|
* minimally required typdefs for systems not supporting inttypes.h or
|
||||||
|
* stdint.h: currently just older VC++
|
||||||
|
*/
|
||||||
|
typedef signed char int8_t;
|
||||||
|
typedef unsigned char uint8_t;
|
||||||
|
typedef short int16_t;
|
||||||
|
typedef unsigned short uint16_t;
|
||||||
|
typedef int int32_t;
|
||||||
|
typedef unsigned int uint32_t;
|
||||||
|
typedef __int64 int64_t;
|
||||||
|
typedef unsigned __int64 uint64_t;
|
||||||
|
# elif defined(OPENSSL_SYS_TANDEM)
|
||||||
|
# include <stdint.h>
|
||||||
|
# include <sys/types.h>
|
||||||
|
# else
|
||||||
|
# include <stdint.h>
|
||||||
|
# undef OPENSSL_NO_STDINT_H
|
||||||
|
# endif
|
||||||
|
# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && \
|
||||||
|
defined(INTMAX_MAX) && defined(UINTMAX_MAX)
|
||||||
|
typedef intmax_t ossl_intmax_t;
|
||||||
|
typedef uintmax_t ossl_uintmax_t;
|
||||||
|
# else
|
||||||
|
/* Fall back to the largest we know we require and can handle */
|
||||||
|
typedef int64_t ossl_intmax_t;
|
||||||
|
typedef uint64_t ossl_uintmax_t;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* ossl_inline: portable inline definition usable in public headers */
|
||||||
|
# if !defined(inline) && !defined(__cplusplus)
|
||||||
|
# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L
|
||||||
|
/* just use inline */
|
||||||
|
# define ossl_inline inline
|
||||||
|
# elif defined(__GNUC__) && __GNUC__>=2
|
||||||
|
# define ossl_inline __inline__
|
||||||
|
# elif defined(_MSC_VER)
|
||||||
|
/*
|
||||||
|
* Visual Studio: inline is available in C++ only, however
|
||||||
|
* __inline is available for C, see
|
||||||
|
* http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx
|
||||||
|
*/
|
||||||
|
# define ossl_inline __inline
|
||||||
|
# else
|
||||||
|
# define ossl_inline
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
# define ossl_inline inline
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && \
|
||||||
|
!defined(__cplusplus)
|
||||||
|
# define ossl_noreturn _Noreturn
|
||||||
|
# elif defined(__GNUC__) && __GNUC__ >= 2
|
||||||
|
# define ossl_noreturn __attribute__((noreturn))
|
||||||
|
# else
|
||||||
|
# define ossl_noreturn
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* ossl_unused: portable unused attribute for use in public headers */
|
||||||
|
# if defined(__GNUC__)
|
||||||
|
# define ossl_unused __attribute__((unused))
|
||||||
|
# else
|
||||||
|
# define ossl_unused
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
39
src/openssl/ebcdic.h
Normal file
39
src/openssl/ebcdic.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_EBCDIC_H
|
||||||
|
# define OPENSSL_EBCDIC_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_EBCDIC_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <stdlib.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Avoid name clashes with other applications */
|
||||||
|
# define os_toascii _openssl_os_toascii
|
||||||
|
# define os_toebcdic _openssl_os_toebcdic
|
||||||
|
# define ebcdic2ascii _openssl_ebcdic2ascii
|
||||||
|
# define ascii2ebcdic _openssl_ascii2ebcdic
|
||||||
|
|
||||||
|
extern const unsigned char os_toascii[256];
|
||||||
|
extern const unsigned char os_toebcdic[256];
|
||||||
|
void *ebcdic2ascii(void *dest, const void *srce, size_t count);
|
||||||
|
void *ascii2ebcdic(void *dest, const void *srce, size_t count);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
1572
src/openssl/ec.h
Normal file
1572
src/openssl/ec.h
Normal file
File diff suppressed because it is too large
Load Diff
10
src/openssl/ecdh.h
Normal file
10
src/openssl/ecdh.h
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <openssl/ec.h>
|
||||||
10
src/openssl/ecdsa.h
Normal file
10
src/openssl/ecdsa.h
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <openssl/ec.h>
|
||||||
104
src/openssl/ecerr.h
Normal file
104
src/openssl/ecerr.h
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ECERR_H
|
||||||
|
# define OPENSSL_ECERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_EC
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EC reason codes.
|
||||||
|
*/
|
||||||
|
# define EC_R_ASN1_ERROR 115
|
||||||
|
# define EC_R_BAD_SIGNATURE 156
|
||||||
|
# define EC_R_BIGNUM_OUT_OF_RANGE 144
|
||||||
|
# define EC_R_BUFFER_TOO_SMALL 100
|
||||||
|
# define EC_R_CANNOT_INVERT 165
|
||||||
|
# define EC_R_COORDINATES_OUT_OF_RANGE 146
|
||||||
|
# define EC_R_CURVE_DOES_NOT_SUPPORT_ECDH 160
|
||||||
|
# define EC_R_CURVE_DOES_NOT_SUPPORT_ECDSA 170
|
||||||
|
# define EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING 159
|
||||||
|
# define EC_R_DECODE_ERROR 142
|
||||||
|
# define EC_R_DISCRIMINANT_IS_ZERO 118
|
||||||
|
# define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119
|
||||||
|
# define EC_R_EXPLICIT_PARAMS_NOT_SUPPORTED 127
|
||||||
|
# define EC_R_FAILED_MAKING_PUBLIC_KEY 166
|
||||||
|
# define EC_R_FIELD_TOO_LARGE 143
|
||||||
|
# define EC_R_GF2M_NOT_SUPPORTED 147
|
||||||
|
# define EC_R_GROUP2PKPARAMETERS_FAILURE 120
|
||||||
|
# define EC_R_I2D_ECPKPARAMETERS_FAILURE 121
|
||||||
|
# define EC_R_INCOMPATIBLE_OBJECTS 101
|
||||||
|
# define EC_R_INVALID_A 168
|
||||||
|
# define EC_R_INVALID_ARGUMENT 112
|
||||||
|
# define EC_R_INVALID_B 169
|
||||||
|
# define EC_R_INVALID_COFACTOR 171
|
||||||
|
# define EC_R_INVALID_COMPRESSED_POINT 110
|
||||||
|
# define EC_R_INVALID_COMPRESSION_BIT 109
|
||||||
|
# define EC_R_INVALID_CURVE 141
|
||||||
|
# define EC_R_INVALID_DIGEST 151
|
||||||
|
# define EC_R_INVALID_DIGEST_TYPE 138
|
||||||
|
# define EC_R_INVALID_ENCODING 102
|
||||||
|
# define EC_R_INVALID_FIELD 103
|
||||||
|
# define EC_R_INVALID_FORM 104
|
||||||
|
# define EC_R_INVALID_GENERATOR 173
|
||||||
|
# define EC_R_INVALID_GROUP_ORDER 122
|
||||||
|
# define EC_R_INVALID_KEY 116
|
||||||
|
# define EC_R_INVALID_LENGTH 117
|
||||||
|
# define EC_R_INVALID_NAMED_GROUP_CONVERSION 174
|
||||||
|
# define EC_R_INVALID_OUTPUT_LENGTH 161
|
||||||
|
# define EC_R_INVALID_P 172
|
||||||
|
# define EC_R_INVALID_PEER_KEY 133
|
||||||
|
# define EC_R_INVALID_PENTANOMIAL_BASIS 132
|
||||||
|
# define EC_R_INVALID_PRIVATE_KEY 123
|
||||||
|
# define EC_R_INVALID_SEED 175
|
||||||
|
# define EC_R_INVALID_TRINOMIAL_BASIS 137
|
||||||
|
# define EC_R_KDF_PARAMETER_ERROR 148
|
||||||
|
# define EC_R_KEYS_NOT_SET 140
|
||||||
|
# define EC_R_LADDER_POST_FAILURE 136
|
||||||
|
# define EC_R_LADDER_PRE_FAILURE 153
|
||||||
|
# define EC_R_LADDER_STEP_FAILURE 162
|
||||||
|
# define EC_R_MISSING_OID 167
|
||||||
|
# define EC_R_MISSING_PARAMETERS 124
|
||||||
|
# define EC_R_MISSING_PRIVATE_KEY 125
|
||||||
|
# define EC_R_NEED_NEW_SETUP_VALUES 157
|
||||||
|
# define EC_R_NOT_A_NIST_PRIME 135
|
||||||
|
# define EC_R_NOT_IMPLEMENTED 126
|
||||||
|
# define EC_R_NOT_INITIALIZED 111
|
||||||
|
# define EC_R_NO_PARAMETERS_SET 139
|
||||||
|
# define EC_R_NO_PRIVATE_VALUE 154
|
||||||
|
# define EC_R_OPERATION_NOT_SUPPORTED 152
|
||||||
|
# define EC_R_PASSED_NULL_PARAMETER 134
|
||||||
|
# define EC_R_PEER_KEY_ERROR 149
|
||||||
|
# define EC_R_POINT_ARITHMETIC_FAILURE 155
|
||||||
|
# define EC_R_POINT_AT_INFINITY 106
|
||||||
|
# define EC_R_POINT_COORDINATES_BLIND_FAILURE 163
|
||||||
|
# define EC_R_POINT_IS_NOT_ON_CURVE 107
|
||||||
|
# define EC_R_RANDOM_NUMBER_GENERATION_FAILED 158
|
||||||
|
# define EC_R_SHARED_INFO_ERROR 150
|
||||||
|
# define EC_R_SLOT_FULL 108
|
||||||
|
# define EC_R_TOO_MANY_RETRIES 176
|
||||||
|
# define EC_R_UNDEFINED_GENERATOR 113
|
||||||
|
# define EC_R_UNDEFINED_ORDER 128
|
||||||
|
# define EC_R_UNKNOWN_COFACTOR 164
|
||||||
|
# define EC_R_UNKNOWN_GROUP 129
|
||||||
|
# define EC_R_UNKNOWN_ORDER 114
|
||||||
|
# define EC_R_UNSUPPORTED_FIELD 131
|
||||||
|
# define EC_R_WRONG_CURVE_PARAMETERS 145
|
||||||
|
# define EC_R_WRONG_ORDER 130
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
124
src/openssl/encoder.h
Normal file
124
src/openssl/encoder.h
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ENCODER_H
|
||||||
|
# define OPENSSL_ENCODER_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
# include <stdio.h>
|
||||||
|
# endif
|
||||||
|
# include <stdarg.h>
|
||||||
|
# include <stddef.h>
|
||||||
|
# include <openssl/encodererr.h>
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# include <openssl/core.h>
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
OSSL_ENCODER *OSSL_ENCODER_fetch(OSSL_LIB_CTX *libctx, const char *name,
|
||||||
|
const char *properties);
|
||||||
|
int OSSL_ENCODER_up_ref(OSSL_ENCODER *encoder);
|
||||||
|
void OSSL_ENCODER_free(OSSL_ENCODER *encoder);
|
||||||
|
|
||||||
|
const OSSL_PROVIDER *OSSL_ENCODER_get0_provider(const OSSL_ENCODER *encoder);
|
||||||
|
const char *OSSL_ENCODER_get0_properties(const OSSL_ENCODER *encoder);
|
||||||
|
const char *OSSL_ENCODER_get0_name(const OSSL_ENCODER *kdf);
|
||||||
|
const char *OSSL_ENCODER_get0_description(const OSSL_ENCODER *kdf);
|
||||||
|
int OSSL_ENCODER_is_a(const OSSL_ENCODER *encoder, const char *name);
|
||||||
|
|
||||||
|
void OSSL_ENCODER_do_all_provided(OSSL_LIB_CTX *libctx,
|
||||||
|
void (*fn)(OSSL_ENCODER *encoder, void *arg),
|
||||||
|
void *arg);
|
||||||
|
int OSSL_ENCODER_names_do_all(const OSSL_ENCODER *encoder,
|
||||||
|
void (*fn)(const char *name, void *data),
|
||||||
|
void *data);
|
||||||
|
const OSSL_PARAM *OSSL_ENCODER_gettable_params(OSSL_ENCODER *encoder);
|
||||||
|
int OSSL_ENCODER_get_params(OSSL_ENCODER *encoder, OSSL_PARAM params[]);
|
||||||
|
|
||||||
|
const OSSL_PARAM *OSSL_ENCODER_settable_ctx_params(OSSL_ENCODER *encoder);
|
||||||
|
OSSL_ENCODER_CTX *OSSL_ENCODER_CTX_new(void);
|
||||||
|
int OSSL_ENCODER_CTX_set_params(OSSL_ENCODER_CTX *ctx,
|
||||||
|
const OSSL_PARAM params[]);
|
||||||
|
void OSSL_ENCODER_CTX_free(OSSL_ENCODER_CTX *ctx);
|
||||||
|
|
||||||
|
/* Utilities that help set specific parameters */
|
||||||
|
int OSSL_ENCODER_CTX_set_passphrase(OSSL_ENCODER_CTX *ctx,
|
||||||
|
const unsigned char *kstr, size_t klen);
|
||||||
|
int OSSL_ENCODER_CTX_set_pem_password_cb(OSSL_ENCODER_CTX *ctx,
|
||||||
|
pem_password_cb *cb, void *cbarg);
|
||||||
|
int OSSL_ENCODER_CTX_set_passphrase_cb(OSSL_ENCODER_CTX *ctx,
|
||||||
|
OSSL_PASSPHRASE_CALLBACK *cb,
|
||||||
|
void *cbarg);
|
||||||
|
int OSSL_ENCODER_CTX_set_passphrase_ui(OSSL_ENCODER_CTX *ctx,
|
||||||
|
const UI_METHOD *ui_method,
|
||||||
|
void *ui_data);
|
||||||
|
int OSSL_ENCODER_CTX_set_cipher(OSSL_ENCODER_CTX *ctx,
|
||||||
|
const char *cipher_name,
|
||||||
|
const char *propquery);
|
||||||
|
int OSSL_ENCODER_CTX_set_selection(OSSL_ENCODER_CTX *ctx, int selection);
|
||||||
|
int OSSL_ENCODER_CTX_set_output_type(OSSL_ENCODER_CTX *ctx,
|
||||||
|
const char *output_type);
|
||||||
|
int OSSL_ENCODER_CTX_set_output_structure(OSSL_ENCODER_CTX *ctx,
|
||||||
|
const char *output_structure);
|
||||||
|
|
||||||
|
/* Utilities to add encoders */
|
||||||
|
int OSSL_ENCODER_CTX_add_encoder(OSSL_ENCODER_CTX *ctx, OSSL_ENCODER *encoder);
|
||||||
|
int OSSL_ENCODER_CTX_add_extra(OSSL_ENCODER_CTX *ctx,
|
||||||
|
OSSL_LIB_CTX *libctx, const char *propq);
|
||||||
|
int OSSL_ENCODER_CTX_get_num_encoders(OSSL_ENCODER_CTX *ctx);
|
||||||
|
|
||||||
|
typedef struct ossl_encoder_instance_st OSSL_ENCODER_INSTANCE;
|
||||||
|
OSSL_ENCODER *
|
||||||
|
OSSL_ENCODER_INSTANCE_get_encoder(OSSL_ENCODER_INSTANCE *encoder_inst);
|
||||||
|
void *
|
||||||
|
OSSL_ENCODER_INSTANCE_get_encoder_ctx(OSSL_ENCODER_INSTANCE *encoder_inst);
|
||||||
|
const char *
|
||||||
|
OSSL_ENCODER_INSTANCE_get_output_type(OSSL_ENCODER_INSTANCE *encoder_inst);
|
||||||
|
const char *
|
||||||
|
OSSL_ENCODER_INSTANCE_get_output_structure(OSSL_ENCODER_INSTANCE *encoder_inst);
|
||||||
|
|
||||||
|
typedef const void *OSSL_ENCODER_CONSTRUCT(OSSL_ENCODER_INSTANCE *encoder_inst,
|
||||||
|
void *construct_data);
|
||||||
|
typedef void OSSL_ENCODER_CLEANUP(void *construct_data);
|
||||||
|
|
||||||
|
int OSSL_ENCODER_CTX_set_construct(OSSL_ENCODER_CTX *ctx,
|
||||||
|
OSSL_ENCODER_CONSTRUCT *construct);
|
||||||
|
int OSSL_ENCODER_CTX_set_construct_data(OSSL_ENCODER_CTX *ctx,
|
||||||
|
void *construct_data);
|
||||||
|
int OSSL_ENCODER_CTX_set_cleanup(OSSL_ENCODER_CTX *ctx,
|
||||||
|
OSSL_ENCODER_CLEANUP *cleanup);
|
||||||
|
|
||||||
|
/* Utilities to output the object to encode */
|
||||||
|
int OSSL_ENCODER_to_bio(OSSL_ENCODER_CTX *ctx, BIO *out);
|
||||||
|
#ifndef OPENSSL_NO_STDIO
|
||||||
|
int OSSL_ENCODER_to_fp(OSSL_ENCODER_CTX *ctx, FILE *fp);
|
||||||
|
#endif
|
||||||
|
int OSSL_ENCODER_to_data(OSSL_ENCODER_CTX *ctx, unsigned char **pdata,
|
||||||
|
size_t *pdata_len);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create the OSSL_ENCODER_CTX with an associated type. This will perform
|
||||||
|
* an implicit OSSL_ENCODER_fetch(), suitable for the object of that type.
|
||||||
|
* This is more useful than calling OSSL_ENCODER_CTX_new().
|
||||||
|
*/
|
||||||
|
OSSL_ENCODER_CTX *OSSL_ENCODER_CTX_new_for_pkey(const EVP_PKEY *pkey,
|
||||||
|
int selection,
|
||||||
|
const char *output_type,
|
||||||
|
const char *output_struct,
|
||||||
|
const char *propquery);
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
28
src/openssl/encodererr.h
Normal file
28
src/openssl/encodererr.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ENCODERERR_H
|
||||||
|
# define OPENSSL_ENCODERERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* OSSL_ENCODER reason codes.
|
||||||
|
*/
|
||||||
|
# define OSSL_ENCODER_R_ENCODER_NOT_FOUND 101
|
||||||
|
# define OSSL_ENCODER_R_INCORRECT_PROPERTY_QUERY 100
|
||||||
|
# define OSSL_ENCODER_R_MISSING_GET_PARAMS 102
|
||||||
|
|
||||||
|
#endif
|
||||||
833
src/openssl/engine.h
Normal file
833
src/openssl/engine.h
Normal file
@@ -0,0 +1,833 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ENGINE_H
|
||||||
|
# define OPENSSL_ENGINE_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_ENGINE_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_ENGINE
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# include <openssl/bn.h>
|
||||||
|
# include <openssl/rsa.h>
|
||||||
|
# include <openssl/dsa.h>
|
||||||
|
# include <openssl/dh.h>
|
||||||
|
# include <openssl/ec.h>
|
||||||
|
# include <openssl/rand.h>
|
||||||
|
# include <openssl/ui.h>
|
||||||
|
# include <openssl/err.h>
|
||||||
|
# endif
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/x509.h>
|
||||||
|
# include <openssl/engineerr.h>
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These flags are used to control combinations of algorithm (methods) by
|
||||||
|
* bitwise "OR"ing.
|
||||||
|
*/
|
||||||
|
# define ENGINE_METHOD_RSA (unsigned int)0x0001
|
||||||
|
# define ENGINE_METHOD_DSA (unsigned int)0x0002
|
||||||
|
# define ENGINE_METHOD_DH (unsigned int)0x0004
|
||||||
|
# define ENGINE_METHOD_RAND (unsigned int)0x0008
|
||||||
|
# define ENGINE_METHOD_CIPHERS (unsigned int)0x0040
|
||||||
|
# define ENGINE_METHOD_DIGESTS (unsigned int)0x0080
|
||||||
|
# define ENGINE_METHOD_PKEY_METHS (unsigned int)0x0200
|
||||||
|
# define ENGINE_METHOD_PKEY_ASN1_METHS (unsigned int)0x0400
|
||||||
|
# define ENGINE_METHOD_EC (unsigned int)0x0800
|
||||||
|
/* Obvious all-or-nothing cases. */
|
||||||
|
# define ENGINE_METHOD_ALL (unsigned int)0xFFFF
|
||||||
|
# define ENGINE_METHOD_NONE (unsigned int)0x0000
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This(ese) flag(s) controls behaviour of the ENGINE_TABLE mechanism used
|
||||||
|
* internally to control registration of ENGINE implementations, and can be
|
||||||
|
* set by ENGINE_set_table_flags(). The "NOINIT" flag prevents attempts to
|
||||||
|
* initialise registered ENGINEs if they are not already initialised.
|
||||||
|
*/
|
||||||
|
# define ENGINE_TABLE_FLAG_NOINIT (unsigned int)0x0001
|
||||||
|
|
||||||
|
/* ENGINE flags that can be set by ENGINE_set_flags(). */
|
||||||
|
/* Not used */
|
||||||
|
/* #define ENGINE_FLAGS_MALLOCED 0x0001 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This flag is for ENGINEs that wish to handle the various 'CMD'-related
|
||||||
|
* control commands on their own. Without this flag, ENGINE_ctrl() handles
|
||||||
|
* these control commands on behalf of the ENGINE using their "cmd_defns"
|
||||||
|
* data.
|
||||||
|
*/
|
||||||
|
# define ENGINE_FLAGS_MANUAL_CMD_CTRL (int)0x0002
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This flag is for ENGINEs who return new duplicate structures when found
|
||||||
|
* via "ENGINE_by_id()". When an ENGINE must store state (eg. if
|
||||||
|
* ENGINE_ctrl() commands are called in sequence as part of some stateful
|
||||||
|
* process like key-generation setup and execution), it can set this flag -
|
||||||
|
* then each attempt to obtain the ENGINE will result in it being copied into
|
||||||
|
* a new structure. Normally, ENGINEs don't declare this flag so
|
||||||
|
* ENGINE_by_id() just increments the existing ENGINE's structural reference
|
||||||
|
* count.
|
||||||
|
*/
|
||||||
|
# define ENGINE_FLAGS_BY_ID_COPY (int)0x0004
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This flag if for an ENGINE that does not want its methods registered as
|
||||||
|
* part of ENGINE_register_all_complete() for example if the methods are not
|
||||||
|
* usable as default methods.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define ENGINE_FLAGS_NO_REGISTER_ALL (int)0x0008
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ENGINEs can support their own command types, and these flags are used in
|
||||||
|
* ENGINE_CTRL_GET_CMD_FLAGS to indicate to the caller what kind of input
|
||||||
|
* each command expects. Currently only numeric and string input is
|
||||||
|
* supported. If a control command supports none of the _NUMERIC, _STRING, or
|
||||||
|
* _NO_INPUT options, then it is regarded as an "internal" control command -
|
||||||
|
* and not for use in config setting situations. As such, they're not
|
||||||
|
* available to the ENGINE_ctrl_cmd_string() function, only raw ENGINE_ctrl()
|
||||||
|
* access. Changes to this list of 'command types' should be reflected
|
||||||
|
* carefully in ENGINE_cmd_is_executable() and ENGINE_ctrl_cmd_string().
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* accepts a 'long' input value (3rd parameter to ENGINE_ctrl) */
|
||||||
|
# define ENGINE_CMD_FLAG_NUMERIC (unsigned int)0x0001
|
||||||
|
/*
|
||||||
|
* accepts string input (cast from 'void*' to 'const char *', 4th parameter
|
||||||
|
* to ENGINE_ctrl)
|
||||||
|
*/
|
||||||
|
# define ENGINE_CMD_FLAG_STRING (unsigned int)0x0002
|
||||||
|
/*
|
||||||
|
* Indicates that the control command takes *no* input. Ie. the control
|
||||||
|
* command is unparameterised.
|
||||||
|
*/
|
||||||
|
# define ENGINE_CMD_FLAG_NO_INPUT (unsigned int)0x0004
|
||||||
|
/*
|
||||||
|
* Indicates that the control command is internal. This control command won't
|
||||||
|
* be shown in any output, and is only usable through the ENGINE_ctrl_cmd()
|
||||||
|
* function.
|
||||||
|
*/
|
||||||
|
# define ENGINE_CMD_FLAG_INTERNAL (unsigned int)0x0008
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NB: These 3 control commands are deprecated and should not be used.
|
||||||
|
* ENGINEs relying on these commands should compile conditional support for
|
||||||
|
* compatibility (eg. if these symbols are defined) but should also migrate
|
||||||
|
* the same functionality to their own ENGINE-specific control functions that
|
||||||
|
* can be "discovered" by calling applications. The fact these control
|
||||||
|
* commands wouldn't be "executable" (ie. usable by text-based config)
|
||||||
|
* doesn't change the fact that application code can find and use them
|
||||||
|
* without requiring per-ENGINE hacking.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These flags are used to tell the ctrl function what should be done. All
|
||||||
|
* command numbers are shared between all engines, even if some don't make
|
||||||
|
* sense to some engines. In such a case, they do nothing but return the
|
||||||
|
* error ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED.
|
||||||
|
*/
|
||||||
|
# define ENGINE_CTRL_SET_LOGSTREAM 1
|
||||||
|
# define ENGINE_CTRL_SET_PASSWORD_CALLBACK 2
|
||||||
|
# define ENGINE_CTRL_HUP 3/* Close and reinitialise
|
||||||
|
* any handles/connections
|
||||||
|
* etc. */
|
||||||
|
# define ENGINE_CTRL_SET_USER_INTERFACE 4/* Alternative to callback */
|
||||||
|
# define ENGINE_CTRL_SET_CALLBACK_DATA 5/* User-specific data, used
|
||||||
|
* when calling the password
|
||||||
|
* callback and the user
|
||||||
|
* interface */
|
||||||
|
# define ENGINE_CTRL_LOAD_CONFIGURATION 6/* Load a configuration,
|
||||||
|
* given a string that
|
||||||
|
* represents a file name
|
||||||
|
* or so */
|
||||||
|
# define ENGINE_CTRL_LOAD_SECTION 7/* Load data from a given
|
||||||
|
* section in the already
|
||||||
|
* loaded configuration */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These control commands allow an application to deal with an arbitrary
|
||||||
|
* engine in a dynamic way. Warn: Negative return values indicate errors FOR
|
||||||
|
* THESE COMMANDS because zero is used to indicate 'end-of-list'. Other
|
||||||
|
* commands, including ENGINE-specific command types, return zero for an
|
||||||
|
* error. An ENGINE can choose to implement these ctrl functions, and can
|
||||||
|
* internally manage things however it chooses - it does so by setting the
|
||||||
|
* ENGINE_FLAGS_MANUAL_CMD_CTRL flag (using ENGINE_set_flags()). Otherwise
|
||||||
|
* the ENGINE_ctrl() code handles this on the ENGINE's behalf using the
|
||||||
|
* cmd_defns data (set using ENGINE_set_cmd_defns()). This means an ENGINE's
|
||||||
|
* ctrl() handler need only implement its own commands - the above "meta"
|
||||||
|
* commands will be taken care of.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns non-zero if the supplied ENGINE has a ctrl() handler. If "not",
|
||||||
|
* then all the remaining control commands will return failure, so it is
|
||||||
|
* worth checking this first if the caller is trying to "discover" the
|
||||||
|
* engine's capabilities and doesn't want errors generated unnecessarily.
|
||||||
|
*/
|
||||||
|
# define ENGINE_CTRL_HAS_CTRL_FUNCTION 10
|
||||||
|
/*
|
||||||
|
* Returns a positive command number for the first command supported by the
|
||||||
|
* engine. Returns zero if no ctrl commands are supported.
|
||||||
|
*/
|
||||||
|
# define ENGINE_CTRL_GET_FIRST_CMD_TYPE 11
|
||||||
|
/*
|
||||||
|
* The 'long' argument specifies a command implemented by the engine, and the
|
||||||
|
* return value is the next command supported, or zero if there are no more.
|
||||||
|
*/
|
||||||
|
# define ENGINE_CTRL_GET_NEXT_CMD_TYPE 12
|
||||||
|
/*
|
||||||
|
* The 'void*' argument is a command name (cast from 'const char *'), and the
|
||||||
|
* return value is the command that corresponds to it.
|
||||||
|
*/
|
||||||
|
# define ENGINE_CTRL_GET_CMD_FROM_NAME 13
|
||||||
|
/*
|
||||||
|
* The next two allow a command to be converted into its corresponding string
|
||||||
|
* form. In each case, the 'long' argument supplies the command. In the
|
||||||
|
* NAME_LEN case, the return value is the length of the command name (not
|
||||||
|
* counting a trailing EOL). In the NAME case, the 'void*' argument must be a
|
||||||
|
* string buffer large enough, and it will be populated with the name of the
|
||||||
|
* command (WITH a trailing EOL).
|
||||||
|
*/
|
||||||
|
# define ENGINE_CTRL_GET_NAME_LEN_FROM_CMD 14
|
||||||
|
# define ENGINE_CTRL_GET_NAME_FROM_CMD 15
|
||||||
|
/* The next two are similar but give a "short description" of a command. */
|
||||||
|
# define ENGINE_CTRL_GET_DESC_LEN_FROM_CMD 16
|
||||||
|
# define ENGINE_CTRL_GET_DESC_FROM_CMD 17
|
||||||
|
/*
|
||||||
|
* With this command, the return value is the OR'd combination of
|
||||||
|
* ENGINE_CMD_FLAG_*** values that indicate what kind of input a given
|
||||||
|
* engine-specific ctrl command expects.
|
||||||
|
*/
|
||||||
|
# define ENGINE_CTRL_GET_CMD_FLAGS 18
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ENGINE implementations should start the numbering of their own control
|
||||||
|
* commands from this value. (ie. ENGINE_CMD_BASE, ENGINE_CMD_BASE + 1, etc).
|
||||||
|
*/
|
||||||
|
# define ENGINE_CMD_BASE 200
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NB: These 2 nCipher "chil" control commands are deprecated, and their
|
||||||
|
* functionality is now available through ENGINE-specific control commands
|
||||||
|
* (exposed through the above-mentioned 'CMD'-handling). Code using these 2
|
||||||
|
* commands should be migrated to the more general command handling before
|
||||||
|
* these are removed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Flags specific to the nCipher "chil" engine */
|
||||||
|
# define ENGINE_CTRL_CHIL_SET_FORKCHECK 100
|
||||||
|
/*
|
||||||
|
* Depending on the value of the (long)i argument, this sets or
|
||||||
|
* unsets the SimpleForkCheck flag in the CHIL API to enable or
|
||||||
|
* disable checking and workarounds for applications that fork().
|
||||||
|
*/
|
||||||
|
# define ENGINE_CTRL_CHIL_NO_LOCKING 101
|
||||||
|
/*
|
||||||
|
* This prevents the initialisation function from providing mutex
|
||||||
|
* callbacks to the nCipher library.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If an ENGINE supports its own specific control commands and wishes the
|
||||||
|
* framework to handle the above 'ENGINE_CMD_***'-manipulation commands on
|
||||||
|
* its behalf, it should supply a null-terminated array of ENGINE_CMD_DEFN
|
||||||
|
* entries to ENGINE_set_cmd_defns(). It should also implement a ctrl()
|
||||||
|
* handler that supports the stated commands (ie. the "cmd_num" entries as
|
||||||
|
* described by the array). NB: The array must be ordered in increasing order
|
||||||
|
* of cmd_num. "null-terminated" means that the last ENGINE_CMD_DEFN element
|
||||||
|
* has cmd_num set to zero and/or cmd_name set to NULL.
|
||||||
|
*/
|
||||||
|
typedef struct ENGINE_CMD_DEFN_st {
|
||||||
|
unsigned int cmd_num; /* The command number */
|
||||||
|
const char *cmd_name; /* The command name itself */
|
||||||
|
const char *cmd_desc; /* A short description of the command */
|
||||||
|
unsigned int cmd_flags; /* The input the command expects */
|
||||||
|
} ENGINE_CMD_DEFN;
|
||||||
|
|
||||||
|
/* Generic function pointer */
|
||||||
|
typedef int (*ENGINE_GEN_FUNC_PTR) (void);
|
||||||
|
/* Generic function pointer taking no arguments */
|
||||||
|
typedef int (*ENGINE_GEN_INT_FUNC_PTR) (ENGINE *);
|
||||||
|
/* Specific control function pointer */
|
||||||
|
typedef int (*ENGINE_CTRL_FUNC_PTR) (ENGINE *, int, long, void *,
|
||||||
|
void (*f) (void));
|
||||||
|
/* Generic load_key function pointer */
|
||||||
|
typedef EVP_PKEY *(*ENGINE_LOAD_KEY_PTR)(ENGINE *, const char *,
|
||||||
|
UI_METHOD *ui_method,
|
||||||
|
void *callback_data);
|
||||||
|
typedef int (*ENGINE_SSL_CLIENT_CERT_PTR) (ENGINE *, SSL *ssl,
|
||||||
|
STACK_OF(X509_NAME) *ca_dn,
|
||||||
|
X509 **pcert, EVP_PKEY **pkey,
|
||||||
|
STACK_OF(X509) **pother,
|
||||||
|
UI_METHOD *ui_method,
|
||||||
|
void *callback_data);
|
||||||
|
/*-
|
||||||
|
* These callback types are for an ENGINE's handler for cipher and digest logic.
|
||||||
|
* These handlers have these prototypes;
|
||||||
|
* int foo(ENGINE *e, const EVP_CIPHER **cipher, const int **nids, int nid);
|
||||||
|
* int foo(ENGINE *e, const EVP_MD **digest, const int **nids, int nid);
|
||||||
|
* Looking at how to implement these handlers in the case of cipher support, if
|
||||||
|
* the framework wants the EVP_CIPHER for 'nid', it will call;
|
||||||
|
* foo(e, &p_evp_cipher, NULL, nid); (return zero for failure)
|
||||||
|
* If the framework wants a list of supported 'nid's, it will call;
|
||||||
|
* foo(e, NULL, &p_nids, 0); (returns number of 'nids' or -1 for error)
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Returns to a pointer to the array of supported cipher 'nid's. If the
|
||||||
|
* second parameter is non-NULL it is set to the size of the returned array.
|
||||||
|
*/
|
||||||
|
typedef int (*ENGINE_CIPHERS_PTR) (ENGINE *, const EVP_CIPHER **,
|
||||||
|
const int **, int);
|
||||||
|
typedef int (*ENGINE_DIGESTS_PTR) (ENGINE *, const EVP_MD **, const int **,
|
||||||
|
int);
|
||||||
|
typedef int (*ENGINE_PKEY_METHS_PTR) (ENGINE *, EVP_PKEY_METHOD **,
|
||||||
|
const int **, int);
|
||||||
|
typedef int (*ENGINE_PKEY_ASN1_METHS_PTR) (ENGINE *, EVP_PKEY_ASN1_METHOD **,
|
||||||
|
const int **, int);
|
||||||
|
/*
|
||||||
|
* STRUCTURE functions ... all of these functions deal with pointers to
|
||||||
|
* ENGINE structures where the pointers have a "structural reference". This
|
||||||
|
* means that their reference is to allowed access to the structure but it
|
||||||
|
* does not imply that the structure is functional. To simply increment or
|
||||||
|
* decrement the structural reference count, use ENGINE_by_id and
|
||||||
|
* ENGINE_free. NB: This is not required when iterating using ENGINE_get_next
|
||||||
|
* as it will automatically decrement the structural reference count of the
|
||||||
|
* "current" ENGINE and increment the structural reference count of the
|
||||||
|
* ENGINE it returns (unless it is NULL).
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Get the first/last "ENGINE" type available. */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_first(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_last(void);
|
||||||
|
# endif
|
||||||
|
/* Iterate to the next/previous "ENGINE" type (NULL = end of the list). */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_next(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_prev(ENGINE *e);
|
||||||
|
# endif
|
||||||
|
/* Add another "ENGINE" type into the array. */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_add(ENGINE *e);
|
||||||
|
# endif
|
||||||
|
/* Remove an existing "ENGINE" type from the array. */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_remove(ENGINE *e);
|
||||||
|
# endif
|
||||||
|
/* Retrieve an engine from the list by its unique "id" value. */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_by_id(const char *id);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# define ENGINE_load_openssl() \
|
||||||
|
OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_OPENSSL, NULL)
|
||||||
|
# define ENGINE_load_dynamic() \
|
||||||
|
OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_DYNAMIC, NULL)
|
||||||
|
# ifndef OPENSSL_NO_STATIC_ENGINE
|
||||||
|
# define ENGINE_load_padlock() \
|
||||||
|
OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_PADLOCK, NULL)
|
||||||
|
# define ENGINE_load_capi() \
|
||||||
|
OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_CAPI, NULL)
|
||||||
|
# define ENGINE_load_afalg() \
|
||||||
|
OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_AFALG, NULL)
|
||||||
|
# endif
|
||||||
|
# define ENGINE_load_cryptodev() \
|
||||||
|
OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_CRYPTODEV, NULL)
|
||||||
|
# define ENGINE_load_rdrand() \
|
||||||
|
OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_RDRAND, NULL)
|
||||||
|
# endif
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_load_builtin_engines(void);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation
|
||||||
|
* "registry" handling.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 unsigned int ENGINE_get_table_flags(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_set_table_flags(unsigned int flags);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*- Manage registration of ENGINEs per "table". For each type, there are 3
|
||||||
|
* functions;
|
||||||
|
* ENGINE_register_***(e) - registers the implementation from 'e' (if it has one)
|
||||||
|
* ENGINE_unregister_***(e) - unregister the implementation from 'e'
|
||||||
|
* ENGINE_register_all_***() - call ENGINE_register_***() for each 'e' in the list
|
||||||
|
* Cleanup is automatically registered from each table when required.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_register_RSA(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_RSA(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_RSA(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_register_DSA(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_DSA(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_DSA(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_register_EC(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_EC(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_EC(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_register_DH(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_DH(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_DH(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_register_RAND(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_RAND(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_RAND(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_register_ciphers(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_ciphers(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_ciphers(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_register_digests(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_digests(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_digests(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_register_pkey_meths(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_pkey_meths(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_pkey_meths(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_register_pkey_asn1_meths(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_pkey_asn1_meths(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_pkey_asn1_meths(void);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These functions register all support from the above categories. Note, use
|
||||||
|
* of these functions can result in static linkage of code your application
|
||||||
|
* may not need. If you only need a subset of functionality, consider using
|
||||||
|
* more selective initialisation.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_register_complete(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_register_all_complete(void);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Send parameterised control commands to the engine. The possibilities to
|
||||||
|
* send down an integer, a pointer to data or a function pointer are
|
||||||
|
* provided. Any of the parameters may or may not be NULL, depending on the
|
||||||
|
* command number. In actuality, this function only requires a structural
|
||||||
|
* (rather than functional) reference to an engine, but many control commands
|
||||||
|
* may require the engine be functional. The caller should be aware of trying
|
||||||
|
* commands that require an operational ENGINE, and only use functional
|
||||||
|
* references in such situations.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p,
|
||||||
|
void (*f) (void));
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function tests if an ENGINE-specific command is usable as a
|
||||||
|
* "setting". Eg. in an application's config file that gets processed through
|
||||||
|
* ENGINE_ctrl_cmd_string(). If this returns zero, it is not available to
|
||||||
|
* ENGINE_ctrl_cmd_string(), only ENGINE_ctrl().
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_cmd_is_executable(ENGINE *e, int cmd);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function works like ENGINE_ctrl() with the exception of taking a
|
||||||
|
* command name instead of a command number, and can handle optional
|
||||||
|
* commands. See the comment on ENGINE_ctrl_cmd_string() for an explanation
|
||||||
|
* on how to use the cmd_name and cmd_optional.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_ctrl_cmd(ENGINE *e, const char *cmd_name,
|
||||||
|
long i, void *p, void (*f) (void),
|
||||||
|
int cmd_optional);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function passes a command-name and argument to an ENGINE. The
|
||||||
|
* cmd_name is converted to a command number and the control command is
|
||||||
|
* called using 'arg' as an argument (unless the ENGINE doesn't support such
|
||||||
|
* a command, in which case no control command is called). The command is
|
||||||
|
* checked for input flags, and if necessary the argument will be converted
|
||||||
|
* to a numeric value. If cmd_optional is non-zero, then if the ENGINE
|
||||||
|
* doesn't support the given cmd_name the return value will be success
|
||||||
|
* anyway. This function is intended for applications to use so that users
|
||||||
|
* (or config files) can supply engine-specific config data to the ENGINE at
|
||||||
|
* run-time to control behaviour of specific engines. As such, it shouldn't
|
||||||
|
* be used for calling ENGINE_ctrl() functions that return data, deal with
|
||||||
|
* binary data, or that are otherwise supposed to be used directly through
|
||||||
|
* ENGINE_ctrl() in application code. Any "return" data from an ENGINE_ctrl()
|
||||||
|
* operation in this function will be lost - the return value is interpreted
|
||||||
|
* as failure if the return value is zero, success otherwise, and this
|
||||||
|
* function returns a boolean value as a result. In other words, vendors of
|
||||||
|
* 'ENGINE'-enabled devices should write ENGINE implementations with
|
||||||
|
* parameterisations that work in this scheme, so that compliant ENGINE-based
|
||||||
|
* applications can work consistently with the same configuration for the
|
||||||
|
* same ENGINE-enabled devices, across applications.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg,
|
||||||
|
int cmd_optional);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These functions are useful for manufacturing new ENGINE structures. They
|
||||||
|
* don't address reference counting at all - one uses them to populate an
|
||||||
|
* ENGINE structure with personalised implementations of things prior to
|
||||||
|
* using it directly or adding it to the builtin ENGINE list in OpenSSL.
|
||||||
|
* These are also here so that the ENGINE structure doesn't have to be
|
||||||
|
* exposed and break binary compatibility!
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_new(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_free(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_up_ref(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_id(ENGINE *e, const char *id);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_name(ENGINE *e, const char *name);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_RSA(ENGINE *e, const RSA_METHOD *rsa_meth);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_EC(ENGINE *e, const EC_KEY_METHOD *ecdsa_meth);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_DH(ENGINE *e, const DH_METHOD *dh_meth);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_RAND(ENGINE *e, const RAND_METHOD *rand_meth);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_set_destroy_function(ENGINE *e,ENGINE_GEN_INT_FUNC_PTR destroy_f);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_set_init_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR init_f);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_set_finish_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR finish_f);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_set_ctrl_function(ENGINE *e, ENGINE_CTRL_FUNC_PTR ctrl_f);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_set_load_privkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpriv_f);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_set_load_pubkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpub_f);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_set_load_ssl_client_cert_function(ENGINE *e,
|
||||||
|
ENGINE_SSL_CLIENT_CERT_PTR loadssl_f);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_set_ciphers(ENGINE *e, ENGINE_CIPHERS_PTR f);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_set_digests(ENGINE *e, ENGINE_DIGESTS_PTR f);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_set_pkey_meths(ENGINE *e, ENGINE_PKEY_METHS_PTR f);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_set_pkey_asn1_meths(ENGINE *e, ENGINE_PKEY_ASN1_METHS_PTR f);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_flags(ENGINE *e, int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_cmd_defns(ENGINE *e,
|
||||||
|
const ENGINE_CMD_DEFN *defns);
|
||||||
|
# endif
|
||||||
|
/* These functions allow control over any per-structure ENGINE data. */
|
||||||
|
# define ENGINE_get_ex_new_index(l, p, newf, dupf, freef) \
|
||||||
|
CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_ENGINE, l, p, newf, dupf, freef)
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_ex_data(ENGINE *e, int idx, void *arg);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void *ENGINE_get_ex_data(const ENGINE *e, int idx);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
/*
|
||||||
|
* This function previously cleaned up anything that needs it. Auto-deinit will
|
||||||
|
* now take care of it so it is no longer required to call this function.
|
||||||
|
*/
|
||||||
|
# define ENGINE_cleanup() while(0) continue
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These return values from within the ENGINE structure. These can be useful
|
||||||
|
* with functional references as well as structural references - it depends
|
||||||
|
* which you obtained. Using the result for functional purposes if you only
|
||||||
|
* obtained a structural reference may be problematic!
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const char *ENGINE_get_id(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const char *ENGINE_get_name(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *ENGINE_get_RSA(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *ENGINE_get_EC(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const DH_METHOD *ENGINE_get_DH(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
ENGINE_GEN_INT_FUNC_PTR ENGINE_get_destroy_function(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
ENGINE_GEN_INT_FUNC_PTR ENGINE_get_init_function(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
ENGINE_GEN_INT_FUNC_PTR ENGINE_get_finish_function(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
ENGINE_CTRL_FUNC_PTR ENGINE_get_ctrl_function(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
ENGINE_LOAD_KEY_PTR ENGINE_get_load_privkey_function(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
ENGINE_LOAD_KEY_PTR ENGINE_get_load_pubkey_function(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
ENGINE_SSL_CLIENT_CERT_PTR ENGINE_get_ssl_client_cert_function(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
ENGINE_CIPHERS_PTR ENGINE_get_ciphers(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
ENGINE_DIGESTS_PTR ENGINE_get_digests(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
ENGINE_PKEY_METHS_PTR ENGINE_get_pkey_meths(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
ENGINE_PKEY_ASN1_METHS_PTR ENGINE_get_pkey_asn1_meths(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
const EVP_CIPHER *ENGINE_get_cipher(ENGINE *e, int nid);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
const EVP_MD *ENGINE_get_digest(ENGINE *e, int nid);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
const EVP_PKEY_METHOD *ENGINE_get_pkey_meth(ENGINE *e, int nid);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth(ENGINE *e, int nid);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth_str(ENGINE *e,
|
||||||
|
const char *str,
|
||||||
|
int len);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
const EVP_PKEY_ASN1_METHOD *ENGINE_pkey_asn1_find_str(ENGINE **pe,
|
||||||
|
const char *str, int len);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
const ENGINE_CMD_DEFN *ENGINE_get_cmd_defns(const ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_get_flags(const ENGINE *e);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FUNCTIONAL functions. These functions deal with ENGINE structures that
|
||||||
|
* have (or will) be initialised for use. Broadly speaking, the structural
|
||||||
|
* functions are useful for iterating the list of available engine types,
|
||||||
|
* creating new engine types, and other "list" operations. These functions
|
||||||
|
* actually deal with ENGINEs that are to be used. As such these functions
|
||||||
|
* can fail (if applicable) when particular engines are unavailable - eg. if
|
||||||
|
* a hardware accelerator is not attached or not functioning correctly. Each
|
||||||
|
* ENGINE has 2 reference counts; structural and functional. Every time a
|
||||||
|
* functional reference is obtained or released, a corresponding structural
|
||||||
|
* reference is automatically obtained or released too.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialise an engine type for use (or up its reference count if it's
|
||||||
|
* already in use). This will fail if the engine is not currently operational
|
||||||
|
* and cannot initialise.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_init(ENGINE *e);
|
||||||
|
# endif
|
||||||
|
/*
|
||||||
|
* Free a functional reference to an engine type. This does not require a
|
||||||
|
* corresponding call to ENGINE_free as it also releases a structural
|
||||||
|
* reference.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_finish(ENGINE *e);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following functions handle keys that are stored in some secondary
|
||||||
|
* location, handled by the engine. The storage may be on a card or
|
||||||
|
* whatever.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id,
|
||||||
|
UI_METHOD *ui_method, void *callback_data);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id,
|
||||||
|
UI_METHOD *ui_method, void *callback_data);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
int ENGINE_load_ssl_client_cert(ENGINE *e, SSL *s, STACK_OF(X509_NAME) *ca_dn,
|
||||||
|
X509 **pcert, EVP_PKEY **ppkey,
|
||||||
|
STACK_OF(X509) **pother,
|
||||||
|
UI_METHOD *ui_method, void *callback_data);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This returns a pointer for the current ENGINE structure that is (by
|
||||||
|
* default) performing any RSA operations. The value returned is an
|
||||||
|
* incremented reference, so it should be free'd (ENGINE_finish) before it is
|
||||||
|
* discarded.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_default_RSA(void);
|
||||||
|
# endif
|
||||||
|
/* Same for the other "methods" */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_default_DSA(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_default_EC(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_default_DH(void);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_default_RAND(void);
|
||||||
|
# endif
|
||||||
|
/*
|
||||||
|
* These functions can be used to get a functional reference to perform
|
||||||
|
* ciphering or digesting corresponding to "nid".
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_cipher_engine(int nid);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_digest_engine(int nid);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_pkey_meth_engine(int nid);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_pkey_asn1_meth_engine(int nid);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This sets a new default ENGINE structure for performing RSA operations. If
|
||||||
|
* the result is non-zero (success) then the ENGINE structure will have had
|
||||||
|
* its reference count up'd so the caller should still free their own
|
||||||
|
* reference 'e'.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_RSA(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_string(ENGINE *e,
|
||||||
|
const char *def_list);
|
||||||
|
# endif
|
||||||
|
/* Same for the other "methods" */
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_DSA(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_EC(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_DH(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_RAND(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_ciphers(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_digests(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_pkey_meths(ENGINE *e);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_pkey_asn1_meths(ENGINE *e);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The combination "set" - the flags are bitwise "OR"d from the
|
||||||
|
* ENGINE_METHOD_*** defines above. As with the "ENGINE_register_complete()"
|
||||||
|
* function, this function can result in unnecessary static linkage. If your
|
||||||
|
* application requires only specific functionality, consider using more
|
||||||
|
* selective functions.
|
||||||
|
*/
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default(ENGINE *e, unsigned int flags);
|
||||||
|
OSSL_DEPRECATEDIN_3_0 void ENGINE_add_conf_module(void);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Deprecated functions ... */
|
||||||
|
/* int ENGINE_clear_defaults(void); */
|
||||||
|
|
||||||
|
/**************************/
|
||||||
|
/* DYNAMIC ENGINE SUPPORT */
|
||||||
|
/**************************/
|
||||||
|
|
||||||
|
/* Binary/behaviour compatibility levels */
|
||||||
|
# define OSSL_DYNAMIC_VERSION (unsigned long)0x00030000
|
||||||
|
/*
|
||||||
|
* Binary versions older than this are too old for us (whether we're a loader
|
||||||
|
* or a loadee)
|
||||||
|
*/
|
||||||
|
# define OSSL_DYNAMIC_OLDEST (unsigned long)0x00030000
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When compiling an ENGINE entirely as an external shared library, loadable
|
||||||
|
* by the "dynamic" ENGINE, these types are needed. The 'dynamic_fns'
|
||||||
|
* structure type provides the calling application's (or library's) error
|
||||||
|
* functionality and memory management function pointers to the loaded
|
||||||
|
* library. These should be used/set in the loaded library code so that the
|
||||||
|
* loading application's 'state' will be used/changed in all operations. The
|
||||||
|
* 'static_state' pointer allows the loaded library to know if it shares the
|
||||||
|
* same static data as the calling application (or library), and thus whether
|
||||||
|
* these callbacks need to be set or not.
|
||||||
|
*/
|
||||||
|
typedef void *(*dyn_MEM_malloc_fn) (size_t, const char *, int);
|
||||||
|
typedef void *(*dyn_MEM_realloc_fn) (void *, size_t, const char *, int);
|
||||||
|
typedef void (*dyn_MEM_free_fn) (void *, const char *, int);
|
||||||
|
typedef struct st_dynamic_MEM_fns {
|
||||||
|
dyn_MEM_malloc_fn malloc_fn;
|
||||||
|
dyn_MEM_realloc_fn realloc_fn;
|
||||||
|
dyn_MEM_free_fn free_fn;
|
||||||
|
} dynamic_MEM_fns;
|
||||||
|
/*
|
||||||
|
* FIXME: Perhaps the memory and locking code (crypto.h) should declare and
|
||||||
|
* use these types so we (and any other dependent code) can simplify a bit??
|
||||||
|
*/
|
||||||
|
/* The top-level structure */
|
||||||
|
typedef struct st_dynamic_fns {
|
||||||
|
void *static_state;
|
||||||
|
dynamic_MEM_fns mem_fns;
|
||||||
|
} dynamic_fns;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The version checking function should be of this prototype. NB: The
|
||||||
|
* ossl_version value passed in is the OSSL_DYNAMIC_VERSION of the loading
|
||||||
|
* code. If this function returns zero, it indicates a (potential) version
|
||||||
|
* incompatibility and the loaded library doesn't believe it can proceed.
|
||||||
|
* Otherwise, the returned value is the (latest) version supported by the
|
||||||
|
* loading library. The loader may still decide that the loaded code's
|
||||||
|
* version is unsatisfactory and could veto the load. The function is
|
||||||
|
* expected to be implemented with the symbol name "v_check", and a default
|
||||||
|
* implementation can be fully instantiated with
|
||||||
|
* IMPLEMENT_DYNAMIC_CHECK_FN().
|
||||||
|
*/
|
||||||
|
typedef unsigned long (*dynamic_v_check_fn) (unsigned long ossl_version);
|
||||||
|
# define IMPLEMENT_DYNAMIC_CHECK_FN() \
|
||||||
|
OPENSSL_EXPORT unsigned long v_check(unsigned long v); \
|
||||||
|
OPENSSL_EXPORT unsigned long v_check(unsigned long v) { \
|
||||||
|
if (v >= OSSL_DYNAMIC_OLDEST) return OSSL_DYNAMIC_VERSION; \
|
||||||
|
return 0; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function is passed the ENGINE structure to initialise with its own
|
||||||
|
* function and command settings. It should not adjust the structural or
|
||||||
|
* functional reference counts. If this function returns zero, (a) the load
|
||||||
|
* will be aborted, (b) the previous ENGINE state will be memcpy'd back onto
|
||||||
|
* the structure, and (c) the shared library will be unloaded. So
|
||||||
|
* implementations should do their own internal cleanup in failure
|
||||||
|
* circumstances otherwise they could leak. The 'id' parameter, if non-NULL,
|
||||||
|
* represents the ENGINE id that the loader is looking for. If this is NULL,
|
||||||
|
* the shared library can choose to return failure or to initialise a
|
||||||
|
* 'default' ENGINE. If non-NULL, the shared library must initialise only an
|
||||||
|
* ENGINE matching the passed 'id'. The function is expected to be
|
||||||
|
* implemented with the symbol name "bind_engine". A standard implementation
|
||||||
|
* can be instantiated with IMPLEMENT_DYNAMIC_BIND_FN(fn) where the parameter
|
||||||
|
* 'fn' is a callback function that populates the ENGINE structure and
|
||||||
|
* returns an int value (zero for failure). 'fn' should have prototype;
|
||||||
|
* [static] int fn(ENGINE *e, const char *id);
|
||||||
|
*/
|
||||||
|
typedef int (*dynamic_bind_engine) (ENGINE *e, const char *id,
|
||||||
|
const dynamic_fns *fns);
|
||||||
|
# define IMPLEMENT_DYNAMIC_BIND_FN(fn) \
|
||||||
|
OPENSSL_EXPORT \
|
||||||
|
int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns); \
|
||||||
|
OPENSSL_EXPORT \
|
||||||
|
int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns) { \
|
||||||
|
if (ENGINE_get_static_state() == fns->static_state) goto skip_cbs; \
|
||||||
|
CRYPTO_set_mem_functions(fns->mem_fns.malloc_fn, \
|
||||||
|
fns->mem_fns.realloc_fn, \
|
||||||
|
fns->mem_fns.free_fn); \
|
||||||
|
OPENSSL_init_crypto(OPENSSL_INIT_NO_ATEXIT, NULL); \
|
||||||
|
skip_cbs: \
|
||||||
|
if (!fn(e, id)) return 0; \
|
||||||
|
return 1; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the loading application (or library) and the loaded ENGINE library
|
||||||
|
* share the same static data (eg. they're both dynamically linked to the
|
||||||
|
* same libcrypto.so) we need a way to avoid trying to set system callbacks -
|
||||||
|
* this would fail, and for the same reason that it's unnecessary to try. If
|
||||||
|
* the loaded ENGINE has (or gets from through the loader) its own copy of
|
||||||
|
* the libcrypto static data, we will need to set the callbacks. The easiest
|
||||||
|
* way to detect this is to have a function that returns a pointer to some
|
||||||
|
* static data and let the loading application and loaded ENGINE compare
|
||||||
|
* their respective values.
|
||||||
|
*/
|
||||||
|
void *ENGINE_get_static_state(void);
|
||||||
|
|
||||||
|
# if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
OSSL_DEPRECATEDIN_1_1_0 void ENGINE_setup_bsd_cryptodev(void);
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif /* OPENSSL_NO_ENGINE */
|
||||||
|
#endif /* OPENSSL_ENGINE_H */
|
||||||
63
src/openssl/engineerr.h
Normal file
63
src/openssl/engineerr.h
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ENGINEERR_H
|
||||||
|
# define OPENSSL_ENGINEERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_ENGINE
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ENGINE reason codes.
|
||||||
|
*/
|
||||||
|
# define ENGINE_R_ALREADY_LOADED 100
|
||||||
|
# define ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER 133
|
||||||
|
# define ENGINE_R_CMD_NOT_EXECUTABLE 134
|
||||||
|
# define ENGINE_R_COMMAND_TAKES_INPUT 135
|
||||||
|
# define ENGINE_R_COMMAND_TAKES_NO_INPUT 136
|
||||||
|
# define ENGINE_R_CONFLICTING_ENGINE_ID 103
|
||||||
|
# define ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED 119
|
||||||
|
# define ENGINE_R_DSO_FAILURE 104
|
||||||
|
# define ENGINE_R_DSO_NOT_FOUND 132
|
||||||
|
# define ENGINE_R_ENGINES_SECTION_ERROR 148
|
||||||
|
# define ENGINE_R_ENGINE_CONFIGURATION_ERROR 102
|
||||||
|
# define ENGINE_R_ENGINE_IS_NOT_IN_LIST 105
|
||||||
|
# define ENGINE_R_ENGINE_SECTION_ERROR 149
|
||||||
|
# define ENGINE_R_FAILED_LOADING_PRIVATE_KEY 128
|
||||||
|
# define ENGINE_R_FAILED_LOADING_PUBLIC_KEY 129
|
||||||
|
# define ENGINE_R_FINISH_FAILED 106
|
||||||
|
# define ENGINE_R_ID_OR_NAME_MISSING 108
|
||||||
|
# define ENGINE_R_INIT_FAILED 109
|
||||||
|
# define ENGINE_R_INTERNAL_LIST_ERROR 110
|
||||||
|
# define ENGINE_R_INVALID_ARGUMENT 143
|
||||||
|
# define ENGINE_R_INVALID_CMD_NAME 137
|
||||||
|
# define ENGINE_R_INVALID_CMD_NUMBER 138
|
||||||
|
# define ENGINE_R_INVALID_INIT_VALUE 151
|
||||||
|
# define ENGINE_R_INVALID_STRING 150
|
||||||
|
# define ENGINE_R_NOT_INITIALISED 117
|
||||||
|
# define ENGINE_R_NOT_LOADED 112
|
||||||
|
# define ENGINE_R_NO_CONTROL_FUNCTION 120
|
||||||
|
# define ENGINE_R_NO_INDEX 144
|
||||||
|
# define ENGINE_R_NO_LOAD_FUNCTION 125
|
||||||
|
# define ENGINE_R_NO_REFERENCE 130
|
||||||
|
# define ENGINE_R_NO_SUCH_ENGINE 116
|
||||||
|
# define ENGINE_R_UNIMPLEMENTED_CIPHER 146
|
||||||
|
# define ENGINE_R_UNIMPLEMENTED_DIGEST 147
|
||||||
|
# define ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD 101
|
||||||
|
# define ENGINE_R_VERSION_INCOMPATIBILITY 145
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
493
src/openssl/err.h.in
Normal file
493
src/openssl/err.h.in
Normal file
@@ -0,0 +1,493 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
{-
|
||||||
|
use OpenSSL::stackhash qw(generate_lhash_macros);
|
||||||
|
-}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ERR_H
|
||||||
|
# define OPENSSL_ERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/macros.h>
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define HEADER_ERR_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/e_os2.h>
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <stdlib.h>
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <openssl/types.h>
|
||||||
|
# include <openssl/bio.h>
|
||||||
|
# include <openssl/lhash.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# ifndef OPENSSL_NO_FILENAMES
|
||||||
|
# define ERR_PUT_error(l,f,r,fn,ln) ERR_put_error(l,f,r,fn,ln)
|
||||||
|
# else
|
||||||
|
# define ERR_PUT_error(l,f,r,fn,ln) ERR_put_error(l,f,r,NULL,0)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <limits.h>
|
||||||
|
# include <errno.h>
|
||||||
|
|
||||||
|
# define ERR_TXT_MALLOCED 0x01
|
||||||
|
# define ERR_TXT_STRING 0x02
|
||||||
|
|
||||||
|
# if !defined(OPENSSL_NO_DEPRECATED_3_0) || defined(OSSL_FORCE_ERR_STATE)
|
||||||
|
# define ERR_FLAG_MARK 0x01
|
||||||
|
# define ERR_FLAG_CLEAR 0x02
|
||||||
|
|
||||||
|
# define ERR_NUM_ERRORS 16
|
||||||
|
struct err_state_st {
|
||||||
|
int err_flags[ERR_NUM_ERRORS];
|
||||||
|
int err_marks[ERR_NUM_ERRORS];
|
||||||
|
unsigned long err_buffer[ERR_NUM_ERRORS];
|
||||||
|
char *err_data[ERR_NUM_ERRORS];
|
||||||
|
size_t err_data_size[ERR_NUM_ERRORS];
|
||||||
|
int err_data_flags[ERR_NUM_ERRORS];
|
||||||
|
char *err_file[ERR_NUM_ERRORS];
|
||||||
|
int err_line[ERR_NUM_ERRORS];
|
||||||
|
char *err_func[ERR_NUM_ERRORS];
|
||||||
|
int top, bottom;
|
||||||
|
};
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* library */
|
||||||
|
# define ERR_LIB_NONE 1
|
||||||
|
# define ERR_LIB_SYS 2
|
||||||
|
# define ERR_LIB_BN 3
|
||||||
|
# define ERR_LIB_RSA 4
|
||||||
|
# define ERR_LIB_DH 5
|
||||||
|
# define ERR_LIB_EVP 6
|
||||||
|
# define ERR_LIB_BUF 7
|
||||||
|
# define ERR_LIB_OBJ 8
|
||||||
|
# define ERR_LIB_PEM 9
|
||||||
|
# define ERR_LIB_DSA 10
|
||||||
|
# define ERR_LIB_X509 11
|
||||||
|
/* #define ERR_LIB_METH 12 */
|
||||||
|
# define ERR_LIB_ASN1 13
|
||||||
|
# define ERR_LIB_CONF 14
|
||||||
|
# define ERR_LIB_CRYPTO 15
|
||||||
|
# define ERR_LIB_EC 16
|
||||||
|
# define ERR_LIB_SSL 20
|
||||||
|
/* #define ERR_LIB_SSL23 21 */
|
||||||
|
/* #define ERR_LIB_SSL2 22 */
|
||||||
|
/* #define ERR_LIB_SSL3 23 */
|
||||||
|
/* #define ERR_LIB_RSAREF 30 */
|
||||||
|
/* #define ERR_LIB_PROXY 31 */
|
||||||
|
# define ERR_LIB_BIO 32
|
||||||
|
# define ERR_LIB_PKCS7 33
|
||||||
|
# define ERR_LIB_X509V3 34
|
||||||
|
# define ERR_LIB_PKCS12 35
|
||||||
|
# define ERR_LIB_RAND 36
|
||||||
|
# define ERR_LIB_DSO 37
|
||||||
|
# define ERR_LIB_ENGINE 38
|
||||||
|
# define ERR_LIB_OCSP 39
|
||||||
|
# define ERR_LIB_UI 40
|
||||||
|
# define ERR_LIB_COMP 41
|
||||||
|
# define ERR_LIB_ECDSA 42
|
||||||
|
# define ERR_LIB_ECDH 43
|
||||||
|
# define ERR_LIB_OSSL_STORE 44
|
||||||
|
# define ERR_LIB_FIPS 45
|
||||||
|
# define ERR_LIB_CMS 46
|
||||||
|
# define ERR_LIB_TS 47
|
||||||
|
# define ERR_LIB_HMAC 48
|
||||||
|
/* # define ERR_LIB_JPAKE 49 */
|
||||||
|
# define ERR_LIB_CT 50
|
||||||
|
# define ERR_LIB_ASYNC 51
|
||||||
|
# define ERR_LIB_KDF 52
|
||||||
|
# define ERR_LIB_SM2 53
|
||||||
|
# define ERR_LIB_ESS 54
|
||||||
|
# define ERR_LIB_PROP 55
|
||||||
|
# define ERR_LIB_CRMF 56
|
||||||
|
# define ERR_LIB_PROV 57
|
||||||
|
# define ERR_LIB_CMP 58
|
||||||
|
# define ERR_LIB_OSSL_ENCODER 59
|
||||||
|
# define ERR_LIB_OSSL_DECODER 60
|
||||||
|
# define ERR_LIB_HTTP 61
|
||||||
|
|
||||||
|
# define ERR_LIB_USER 128
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define ASN1err(f, r) ERR_raise_data(ERR_LIB_ASN1, (r), NULL)
|
||||||
|
# define ASYNCerr(f, r) ERR_raise_data(ERR_LIB_ASYNC, (r), NULL)
|
||||||
|
# define BIOerr(f, r) ERR_raise_data(ERR_LIB_BIO, (r), NULL)
|
||||||
|
# define BNerr(f, r) ERR_raise_data(ERR_LIB_BN, (r), NULL)
|
||||||
|
# define BUFerr(f, r) ERR_raise_data(ERR_LIB_BUF, (r), NULL)
|
||||||
|
# define CMPerr(f, r) ERR_raise_data(ERR_LIB_CMP, (r), NULL)
|
||||||
|
# define CMSerr(f, r) ERR_raise_data(ERR_LIB_CMS, (r), NULL)
|
||||||
|
# define COMPerr(f, r) ERR_raise_data(ERR_LIB_COMP, (r), NULL)
|
||||||
|
# define CONFerr(f, r) ERR_raise_data(ERR_LIB_CONF, (r), NULL)
|
||||||
|
# define CRMFerr(f, r) ERR_raise_data(ERR_LIB_CRMF, (r), NULL)
|
||||||
|
# define CRYPTOerr(f, r) ERR_raise_data(ERR_LIB_CRYPTO, (r), NULL)
|
||||||
|
# define CTerr(f, r) ERR_raise_data(ERR_LIB_CT, (r), NULL)
|
||||||
|
# define DHerr(f, r) ERR_raise_data(ERR_LIB_DH, (r), NULL)
|
||||||
|
# define DSAerr(f, r) ERR_raise_data(ERR_LIB_DSA, (r), NULL)
|
||||||
|
# define DSOerr(f, r) ERR_raise_data(ERR_LIB_DSO, (r), NULL)
|
||||||
|
# define ECDHerr(f, r) ERR_raise_data(ERR_LIB_ECDH, (r), NULL)
|
||||||
|
# define ECDSAerr(f, r) ERR_raise_data(ERR_LIB_ECDSA, (r), NULL)
|
||||||
|
# define ECerr(f, r) ERR_raise_data(ERR_LIB_EC, (r), NULL)
|
||||||
|
# define ENGINEerr(f, r) ERR_raise_data(ERR_LIB_ENGINE, (r), NULL)
|
||||||
|
# define ESSerr(f, r) ERR_raise_data(ERR_LIB_ESS, (r), NULL)
|
||||||
|
# define EVPerr(f, r) ERR_raise_data(ERR_LIB_EVP, (r), NULL)
|
||||||
|
# define FIPSerr(f, r) ERR_raise_data(ERR_LIB_FIPS, (r), NULL)
|
||||||
|
# define HMACerr(f, r) ERR_raise_data(ERR_LIB_HMAC, (r), NULL)
|
||||||
|
# define HTTPerr(f, r) ERR_raise_data(ERR_LIB_HTTP, (r), NULL)
|
||||||
|
# define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL)
|
||||||
|
# define OBJerr(f, r) ERR_raise_data(ERR_LIB_OBJ, (r), NULL)
|
||||||
|
# define OCSPerr(f, r) ERR_raise_data(ERR_LIB_OCSP, (r), NULL)
|
||||||
|
# define OSSL_STOREerr(f, r) ERR_raise_data(ERR_LIB_OSSL_STORE, (r), NULL)
|
||||||
|
# define PEMerr(f, r) ERR_raise_data(ERR_LIB_PEM, (r), NULL)
|
||||||
|
# define PKCS12err(f, r) ERR_raise_data(ERR_LIB_PKCS12, (r), NULL)
|
||||||
|
# define PKCS7err(f, r) ERR_raise_data(ERR_LIB_PKCS7, (r), NULL)
|
||||||
|
# define PROPerr(f, r) ERR_raise_data(ERR_LIB_PROP, (r), NULL)
|
||||||
|
# define PROVerr(f, r) ERR_raise_data(ERR_LIB_PROV, (r), NULL)
|
||||||
|
# define RANDerr(f, r) ERR_raise_data(ERR_LIB_RAND, (r), NULL)
|
||||||
|
# define RSAerr(f, r) ERR_raise_data(ERR_LIB_RSA, (r), NULL)
|
||||||
|
# define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL)
|
||||||
|
# define SM2err(f, r) ERR_raise_data(ERR_LIB_SM2, (r), NULL)
|
||||||
|
# define SSLerr(f, r) ERR_raise_data(ERR_LIB_SSL, (r), NULL)
|
||||||
|
# define SYSerr(f, r) ERR_raise_data(ERR_LIB_SYS, (r), NULL)
|
||||||
|
# define TSerr(f, r) ERR_raise_data(ERR_LIB_TS, (r), NULL)
|
||||||
|
# define UIerr(f, r) ERR_raise_data(ERR_LIB_UI, (r), NULL)
|
||||||
|
# define X509V3err(f, r) ERR_raise_data(ERR_LIB_X509V3, (r), NULL)
|
||||||
|
# define X509err(f, r) ERR_raise_data(ERR_LIB_X509, (r), NULL)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* The error code packs differently depending on if it records a system
|
||||||
|
* error or an OpenSSL error.
|
||||||
|
*
|
||||||
|
* A system error packs like this (we follow POSIX and only allow positive
|
||||||
|
* numbers that fit in an |int|):
|
||||||
|
*
|
||||||
|
* +-+-------------------------------------------------------------+
|
||||||
|
* |1| system error number |
|
||||||
|
* +-+-------------------------------------------------------------+
|
||||||
|
*
|
||||||
|
* An OpenSSL error packs like this:
|
||||||
|
*
|
||||||
|
* <---------------------------- 32 bits -------------------------->
|
||||||
|
* <--- 8 bits ---><------------------ 23 bits ----------------->
|
||||||
|
* +-+---------------+---------------------------------------------+
|
||||||
|
* |0| library | reason |
|
||||||
|
* +-+---------------+---------------------------------------------+
|
||||||
|
*
|
||||||
|
* A few of the reason bits are reserved as flags with special meaning:
|
||||||
|
*
|
||||||
|
* <5 bits-<>--------- 19 bits ----------------->
|
||||||
|
* +-------+-+-----------------------------------+
|
||||||
|
* | rflags| | reason |
|
||||||
|
* +-------+-+-----------------------------------+
|
||||||
|
* ^
|
||||||
|
* |
|
||||||
|
* ERR_RFLAG_FATAL = ERR_R_FATAL
|
||||||
|
*
|
||||||
|
* The reason flags are part of the overall reason code for practical
|
||||||
|
* reasons, as they provide an easy way to place different types of
|
||||||
|
* reason codes in different numeric ranges.
|
||||||
|
*
|
||||||
|
* The currently known reason flags are:
|
||||||
|
*
|
||||||
|
* ERR_RFLAG_FATAL Flags that the reason code is considered fatal.
|
||||||
|
* For backward compatibility reasons, this flag
|
||||||
|
* is also the code for ERR_R_FATAL (that reason
|
||||||
|
* code served the dual purpose of flag and reason
|
||||||
|
* code in one in pre-3.0 OpenSSL).
|
||||||
|
* ERR_RFLAG_COMMON Flags that the reason code is common to all
|
||||||
|
* libraries. All ERR_R_ macros must use this flag,
|
||||||
|
* and no other _R_ macro is allowed to use it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Macros to help decode recorded system errors */
|
||||||
|
# define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1)
|
||||||
|
# define ERR_SYSTEM_MASK ((unsigned int)INT_MAX)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Macros to help decode recorded OpenSSL errors
|
||||||
|
* As expressed above, RFLAGS and REASON overlap by one bit to allow
|
||||||
|
* ERR_R_FATAL to use ERR_RFLAG_FATAL as its reason code.
|
||||||
|
*/
|
||||||
|
# define ERR_LIB_OFFSET 23L
|
||||||
|
# define ERR_LIB_MASK 0xFF
|
||||||
|
# define ERR_RFLAGS_OFFSET 18L
|
||||||
|
# define ERR_RFLAGS_MASK 0x1F
|
||||||
|
# define ERR_REASON_MASK 0X7FFFFF
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reason flags are defined pre-shifted to easily combine with the reason
|
||||||
|
* number.
|
||||||
|
*/
|
||||||
|
# define ERR_RFLAG_FATAL (0x1 << ERR_RFLAGS_OFFSET)
|
||||||
|
# define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET)
|
||||||
|
|
||||||
|
# define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0)
|
||||||
|
|
||||||
|
static ossl_unused ossl_inline int ERR_GET_LIB(unsigned long errcode)
|
||||||
|
{
|
||||||
|
if (ERR_SYSTEM_ERROR(errcode))
|
||||||
|
return ERR_LIB_SYS;
|
||||||
|
return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ossl_unused ossl_inline int ERR_GET_RFLAGS(unsigned long errcode)
|
||||||
|
{
|
||||||
|
if (ERR_SYSTEM_ERROR(errcode))
|
||||||
|
return 0;
|
||||||
|
return errcode & (ERR_RFLAGS_MASK << ERR_RFLAGS_OFFSET);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ossl_unused ossl_inline int ERR_GET_REASON(unsigned long errcode)
|
||||||
|
{
|
||||||
|
if (ERR_SYSTEM_ERROR(errcode))
|
||||||
|
return errcode & ERR_SYSTEM_MASK;
|
||||||
|
return errcode & ERR_REASON_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ossl_unused ossl_inline int ERR_FATAL_ERROR(unsigned long errcode)
|
||||||
|
{
|
||||||
|
return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_FATAL) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ossl_unused ossl_inline int ERR_COMMON_ERROR(unsigned long errcode)
|
||||||
|
{
|
||||||
|
return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_COMMON) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ERR_PACK is a helper macro to properly pack OpenSSL error codes and may
|
||||||
|
* only be used for that purpose. System errors are packed internally.
|
||||||
|
* ERR_PACK takes reason flags and reason code combined in |reason|.
|
||||||
|
* ERR_PACK ignores |func|, that parameter is just legacy from pre-3.0 OpenSSL.
|
||||||
|
*/
|
||||||
|
# define ERR_PACK(lib,func,reason) \
|
||||||
|
( (((unsigned long)(lib) & ERR_LIB_MASK ) << ERR_LIB_OFFSET) | \
|
||||||
|
(((unsigned long)(reason) & ERR_REASON_MASK)) )
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
# define SYS_F_FOPEN 0
|
||||||
|
# define SYS_F_CONNECT 0
|
||||||
|
# define SYS_F_GETSERVBYNAME 0
|
||||||
|
# define SYS_F_SOCKET 0
|
||||||
|
# define SYS_F_IOCTLSOCKET 0
|
||||||
|
# define SYS_F_BIND 0
|
||||||
|
# define SYS_F_LISTEN 0
|
||||||
|
# define SYS_F_ACCEPT 0
|
||||||
|
# define SYS_F_WSASTARTUP 0
|
||||||
|
# define SYS_F_OPENDIR 0
|
||||||
|
# define SYS_F_FREAD 0
|
||||||
|
# define SYS_F_GETADDRINFO 0
|
||||||
|
# define SYS_F_GETNAMEINFO 0
|
||||||
|
# define SYS_F_SETSOCKOPT 0
|
||||||
|
# define SYS_F_GETSOCKOPT 0
|
||||||
|
# define SYS_F_GETSOCKNAME 0
|
||||||
|
# define SYS_F_GETHOSTBYNAME 0
|
||||||
|
# define SYS_F_FFLUSH 0
|
||||||
|
# define SYS_F_OPEN 0
|
||||||
|
# define SYS_F_CLOSE 0
|
||||||
|
# define SYS_F_IOCTL 0
|
||||||
|
# define SYS_F_STAT 0
|
||||||
|
# define SYS_F_FCNTL 0
|
||||||
|
# define SYS_F_FSTAT 0
|
||||||
|
# define SYS_F_SENDFILE 0
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* All ERR_R_ codes must be combined with ERR_RFLAG_COMMON.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* "we came from here" global reason codes, range 1..255 */
|
||||||
|
# define ERR_R_SYS_LIB (ERR_LIB_SYS/* 2 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_BN_LIB (ERR_LIB_BN/* 3 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_RSA_LIB (ERR_LIB_RSA/* 4 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_DH_LIB (ERR_LIB_DH/* 5 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_EVP_LIB (ERR_LIB_EVP/* 6 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_BUF_LIB (ERR_LIB_BUF/* 7 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_OBJ_LIB (ERR_LIB_OBJ/* 8 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_PEM_LIB (ERR_LIB_PEM/* 9 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_DSA_LIB (ERR_LIB_DSA/* 10 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_X509_LIB (ERR_LIB_X509/* 11 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_ASN1_LIB (ERR_LIB_ASN1/* 13 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_CONF_LIB (ERR_LIB_CONF/* 14 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_CRYPTO_LIB (ERR_LIB_CRYPTO/* 15 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_EC_LIB (ERR_LIB_EC/* 16 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_SSL_LIB (ERR_LIB_SSL/* 20 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_BIO_LIB (ERR_LIB_BIO/* 32 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_PKCS7_LIB (ERR_LIB_PKCS7/* 33 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_X509V3_LIB (ERR_LIB_X509V3/* 34 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_PKCS12_LIB (ERR_LIB_PKCS12/* 35 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_RAND_LIB (ERR_LIB_RAND/* 36 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_DSO_LIB (ERR_LIB_DSO/* 37 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_ENGINE_LIB (ERR_LIB_ENGINE/* 38 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_UI_LIB (ERR_LIB_UI/* 40 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_ECDSA_LIB (ERR_LIB_ECDSA/* 42 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_OSSL_STORE_LIB (ERR_LIB_OSSL_STORE/* 44 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_CMS_LIB (ERR_LIB_CMS/* 46 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_TS_LIB (ERR_LIB_TS/* 47 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_CT_LIB (ERR_LIB_CT/* 50 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_PROV_LIB (ERR_LIB_PROV/* 57 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_ESS_LIB (ERR_LIB_ESS/* 54 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_CMP_LIB (ERR_LIB_CMP/* 58 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_OSSL_ENCODER_LIB (ERR_LIB_OSSL_ENCODER/* 59 */ | ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_OSSL_DECODER_LIB (ERR_LIB_OSSL_DECODER/* 60 */ | ERR_RFLAG_COMMON)
|
||||||
|
|
||||||
|
/* Other common error codes, range 256..2^ERR_RFLAGS_OFFSET-1 */
|
||||||
|
# define ERR_R_FATAL (ERR_RFLAG_FATAL|ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_MALLOC_FAILURE (256|ERR_R_FATAL)
|
||||||
|
# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (257|ERR_R_FATAL)
|
||||||
|
# define ERR_R_PASSED_NULL_PARAMETER (258|ERR_R_FATAL)
|
||||||
|
# define ERR_R_INTERNAL_ERROR (259|ERR_R_FATAL)
|
||||||
|
# define ERR_R_DISABLED (260|ERR_R_FATAL)
|
||||||
|
# define ERR_R_INIT_FAIL (261|ERR_R_FATAL)
|
||||||
|
# define ERR_R_PASSED_INVALID_ARGUMENT (262|ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_OPERATION_FAIL (263|ERR_R_FATAL)
|
||||||
|
# define ERR_R_INVALID_PROVIDER_FUNCTIONS (264|ERR_R_FATAL)
|
||||||
|
# define ERR_R_INTERRUPTED_OR_CANCELLED (265|ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_NESTED_ASN1_ERROR (266|ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_MISSING_ASN1_EOS (267|ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_UNSUPPORTED (268|ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_FETCH_FAILED (269|ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_INVALID_PROPERTY_DEFINITION (270|ERR_RFLAG_COMMON)
|
||||||
|
# define ERR_R_UNABLE_TO_GET_READ_LOCK (271|ERR_R_FATAL)
|
||||||
|
# define ERR_R_UNABLE_TO_GET_WRITE_LOCK (272|ERR_R_FATAL)
|
||||||
|
|
||||||
|
typedef struct ERR_string_data_st {
|
||||||
|
unsigned long error;
|
||||||
|
const char *string;
|
||||||
|
} ERR_STRING_DATA;
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_lhash_macros("ERR_STRING_DATA");
|
||||||
|
-}
|
||||||
|
|
||||||
|
/* 12 lines and some on an 80 column terminal */
|
||||||
|
#define ERR_MAX_DATA_SIZE 1024
|
||||||
|
|
||||||
|
/* Building blocks */
|
||||||
|
void ERR_new(void);
|
||||||
|
void ERR_set_debug(const char *file, int line, const char *func);
|
||||||
|
void ERR_set_error(int lib, int reason, const char *fmt, ...);
|
||||||
|
void ERR_vset_error(int lib, int reason, const char *fmt, va_list args);
|
||||||
|
|
||||||
|
/* Main error raising functions */
|
||||||
|
# define ERR_raise(lib, reason) ERR_raise_data((lib),(reason),NULL)
|
||||||
|
# define ERR_raise_data \
|
||||||
|
(ERR_new(), \
|
||||||
|
ERR_set_debug(OPENSSL_FILE,OPENSSL_LINE,OPENSSL_FUNC), \
|
||||||
|
ERR_set_error)
|
||||||
|
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
/* Backward compatibility */
|
||||||
|
# define ERR_put_error(lib, func, reason, file, line) \
|
||||||
|
(ERR_new(), \
|
||||||
|
ERR_set_debug((file), (line), OPENSSL_FUNC), \
|
||||||
|
ERR_set_error((lib), (reason), NULL))
|
||||||
|
# endif
|
||||||
|
|
||||||
|
void ERR_set_error_data(char *data, int flags);
|
||||||
|
|
||||||
|
unsigned long ERR_get_error(void);
|
||||||
|
unsigned long ERR_get_error_all(const char **file, int *line,
|
||||||
|
const char **func,
|
||||||
|
const char **data, int *flags);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
unsigned long ERR_get_error_line(const char **file, int *line);
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
unsigned long ERR_get_error_line_data(const char **file, int *line,
|
||||||
|
const char **data, int *flags);
|
||||||
|
#endif
|
||||||
|
unsigned long ERR_peek_error(void);
|
||||||
|
unsigned long ERR_peek_error_line(const char **file, int *line);
|
||||||
|
unsigned long ERR_peek_error_func(const char **func);
|
||||||
|
unsigned long ERR_peek_error_data(const char **data, int *flags);
|
||||||
|
unsigned long ERR_peek_error_all(const char **file, int *line,
|
||||||
|
const char **func,
|
||||||
|
const char **data, int *flags);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
unsigned long ERR_peek_error_line_data(const char **file, int *line,
|
||||||
|
const char **data, int *flags);
|
||||||
|
# endif
|
||||||
|
unsigned long ERR_peek_last_error(void);
|
||||||
|
unsigned long ERR_peek_last_error_line(const char **file, int *line);
|
||||||
|
unsigned long ERR_peek_last_error_func(const char **func);
|
||||||
|
unsigned long ERR_peek_last_error_data(const char **data, int *flags);
|
||||||
|
unsigned long ERR_peek_last_error_all(const char **file, int *line,
|
||||||
|
const char **func,
|
||||||
|
const char **data, int *flags);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0
|
||||||
|
unsigned long ERR_peek_last_error_line_data(const char **file, int *line,
|
||||||
|
const char **data, int *flags);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
void ERR_clear_error(void);
|
||||||
|
|
||||||
|
char *ERR_error_string(unsigned long e, char *buf);
|
||||||
|
void ERR_error_string_n(unsigned long e, char *buf, size_t len);
|
||||||
|
const char *ERR_lib_error_string(unsigned long e);
|
||||||
|
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 const char *ERR_func_error_string(unsigned long e);
|
||||||
|
# endif
|
||||||
|
const char *ERR_reason_error_string(unsigned long e);
|
||||||
|
|
||||||
|
void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u),
|
||||||
|
void *u);
|
||||||
|
# ifndef OPENSSL_NO_STDIO
|
||||||
|
void ERR_print_errors_fp(FILE *fp);
|
||||||
|
# endif
|
||||||
|
void ERR_print_errors(BIO *bp);
|
||||||
|
|
||||||
|
void ERR_add_error_data(int num, ...);
|
||||||
|
void ERR_add_error_vdata(int num, va_list args);
|
||||||
|
void ERR_add_error_txt(const char *sepr, const char *txt);
|
||||||
|
void ERR_add_error_mem_bio(const char *sep, BIO *bio);
|
||||||
|
|
||||||
|
int ERR_load_strings(int lib, ERR_STRING_DATA *str);
|
||||||
|
int ERR_load_strings_const(const ERR_STRING_DATA *str);
|
||||||
|
int ERR_unload_strings(int lib, ERR_STRING_DATA *str);
|
||||||
|
|
||||||
|
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
# define ERR_load_crypto_strings() \
|
||||||
|
OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
|
||||||
|
# define ERR_free_strings() while(0) continue
|
||||||
|
#endif
|
||||||
|
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||||
|
OSSL_DEPRECATEDIN_1_1_0 void ERR_remove_thread_state(void *);
|
||||||
|
#endif
|
||||||
|
#ifndef OPENSSL_NO_DEPRECATED_1_0_0
|
||||||
|
OSSL_DEPRECATEDIN_1_0_0 void ERR_remove_state(unsigned long pid);
|
||||||
|
#endif
|
||||||
|
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||||
|
OSSL_DEPRECATEDIN_3_0 ERR_STATE *ERR_get_state(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int ERR_get_next_error_library(void);
|
||||||
|
|
||||||
|
int ERR_set_mark(void);
|
||||||
|
int ERR_pop_to_mark(void);
|
||||||
|
int ERR_clear_last_mark(void);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
81
src/openssl/ess.h.in
Normal file
81
src/openssl/ess.h.in
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* {- join("\n * ", @autowarntext) -}
|
||||||
|
*
|
||||||
|
* Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
{-
|
||||||
|
use OpenSSL::stackhash qw(generate_stack_macros);
|
||||||
|
-}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ESS_H
|
||||||
|
# define OPENSSL_ESS_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
|
||||||
|
# include <openssl/safestack.h>
|
||||||
|
# include <openssl/x509.h>
|
||||||
|
# include <openssl/esserr.h>
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL;
|
||||||
|
typedef struct ESS_cert_id ESS_CERT_ID;
|
||||||
|
typedef struct ESS_signing_cert ESS_SIGNING_CERT;
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("ESS_CERT_ID");
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2;
|
||||||
|
typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2;
|
||||||
|
|
||||||
|
{-
|
||||||
|
generate_stack_macros("ESS_CERT_ID_V2");
|
||||||
|
-}
|
||||||
|
|
||||||
|
DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_ISSUER_SERIAL)
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_ISSUER_SERIAL, ESS_ISSUER_SERIAL)
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL)
|
||||||
|
|
||||||
|
DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID)
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID, ESS_CERT_ID)
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID)
|
||||||
|
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT)
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT)
|
||||||
|
|
||||||
|
DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID_V2)
|
||||||
|
DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID_V2, ESS_CERT_ID_V2)
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID_V2)
|
||||||
|
|
||||||
|
DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT_V2)
|
||||||
|
DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT_V2)
|
||||||
|
|
||||||
|
ESS_SIGNING_CERT *OSSL_ESS_signing_cert_new_init(const X509 *signcert,
|
||||||
|
const STACK_OF(X509) *certs,
|
||||||
|
int set_issuer_serial);
|
||||||
|
ESS_SIGNING_CERT_V2 *OSSL_ESS_signing_cert_v2_new_init(const EVP_MD *hash_alg,
|
||||||
|
const X509 *signcert,
|
||||||
|
const
|
||||||
|
STACK_OF(X509) *certs,
|
||||||
|
int set_issuer_serial);
|
||||||
|
int OSSL_ESS_check_signing_certs(const ESS_SIGNING_CERT *ss,
|
||||||
|
const ESS_SIGNING_CERT_V2 *ssv2,
|
||||||
|
const STACK_OF(X509) *chain,
|
||||||
|
int require_signing_cert);
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
32
src/openssl/esserr.h
Normal file
32
src/openssl/esserr.h
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Generated by util/mkerr.pl DO NOT EDIT
|
||||||
|
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OPENSSL_ESSERR_H
|
||||||
|
# define OPENSSL_ESSERR_H
|
||||||
|
# pragma once
|
||||||
|
|
||||||
|
# include <openssl/opensslconf.h>
|
||||||
|
# include <openssl/symhacks.h>
|
||||||
|
# include <openssl/cryptoerr_legacy.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ESS reason codes.
|
||||||
|
*/
|
||||||
|
# define ESS_R_EMPTY_ESS_CERT_ID_LIST 107
|
||||||
|
# define ESS_R_ESS_CERT_DIGEST_ERROR 103
|
||||||
|
# define ESS_R_ESS_CERT_ID_NOT_FOUND 104
|
||||||
|
# define ESS_R_ESS_CERT_ID_WRONG_ORDER 105
|
||||||
|
# define ESS_R_ESS_DIGEST_ALG_UNKNOWN 106
|
||||||
|
# define ESS_R_ESS_SIGNING_CERTIFICATE_ERROR 102
|
||||||
|
# define ESS_R_ESS_SIGNING_CERT_ADD_ERROR 100
|
||||||
|
# define ESS_R_ESS_SIGNING_CERT_V2_ADD_ERROR 101
|
||||||
|
# define ESS_R_MISSING_SIGNING_CERTIFICATE_ATTRIBUTE 108
|
||||||
|
|
||||||
|
#endif
|
||||||
2173
src/openssl/evp.h
Normal file
2173
src/openssl/evp.h
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user